module Affirm::Charge

Public Instance Methods

authorize(token) click to toggle source
# File lib/affirm/charge.rb, line 5
def authorize(token)
  respond Client.request(:post, "charges", checkout_token: token)
end
capture(charge_id) click to toggle source
# File lib/affirm/charge.rb, line 13
def capture(charge_id)
  respond Client.request(:post, "charges/#{charge_id}/capture")
end
find(charge_id) click to toggle source
# File lib/affirm/charge.rb, line 9
def find(charge_id)
  respond Client.request(:get, "charges/#{charge_id}")
end
refund(charge_id, amount:) click to toggle source
# File lib/affirm/charge.rb, line 21
def refund(charge_id, amount:)
  respond Client.request(:post, "charges/#{charge_id}/refund", amount: amount)
end
update(charge_id, **updates) click to toggle source
# File lib/affirm/charge.rb, line 25
def update(charge_id, **updates)
  respond Client.request(:post, "charges/#{charge_id}/update", updates)
end
void(charge_id) click to toggle source
# File lib/affirm/charge.rb, line 17
def void(charge_id)
  respond Client.request(:post, "charges/#{charge_id}/void")
end

Private Instance Methods

respond(response) click to toggle source
# File lib/affirm/charge.rb, line 31
def respond(response)
  return FailureResult.new(response) unless response.success?

  type  = response.body["type"]
  klass = case type
  when *%w(capture void refund update)
    Object.const_get("Affirm::Responses::#{type.capitalize}")
  else
    Affirm::Responses::Auth
  end

  SuccessResult.new(klass.new(response.body))
end