Module: Affirm::Charge

Extended by:
Charge
Included in:
Charge
Defined in:
lib/affirm/charge.rb

Instance Method Summary collapse

Instance Method Details

#authorize(checkout_token, order_id, reference_id: nil) ⇒ Object

Authorize a checkout token against the Affirm v1 Transactions API.

Affirm::Charge.authorize(checkout_token, order.id)
Affirm::Charge.authorize(checkout_token, order.id, reference_id: "REF-1")


10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/affirm/charge.rb', line 10

def authorize(checkout_token, order_id, reference_id: nil)
  if order_id.nil? || order_id.to_s.empty?
    raise ArgumentError, "order_id is required for Affirm v1 authorize"
  end

  payload = {
    transaction_id: checkout_token,
    order_id: order_id.to_s
  }
  payload[:reference_id] = reference_id if reference_id

  respond Client.request(:post, "transactions", **payload)
end

#capture(transaction_id, **options) ⇒ Object



28
29
30
# File 'lib/affirm/charge.rb', line 28

def capture(transaction_id, **options)
  respond Client.request(:post, "transactions/#{transaction_id}/capture", **options)
end

#find(transaction_id) ⇒ Object



24
25
26
# File 'lib/affirm/charge.rb', line 24

def find(transaction_id)
  respond Client.request(:get, "transactions/#{transaction_id}")
end

#refund(transaction_id, amount:) ⇒ Object



36
37
38
# File 'lib/affirm/charge.rb', line 36

def refund(transaction_id, amount:)
  respond Client.request(:post, "transactions/#{transaction_id}/refund", amount: amount)
end

#update(transaction_id, **updates) ⇒ Object



40
41
42
# File 'lib/affirm/charge.rb', line 40

def update(transaction_id, **updates)
  respond Client.request(:post, "transactions/#{transaction_id}/update", **updates)
end

#void(transaction_id) ⇒ Object



32
33
34
# File 'lib/affirm/charge.rb', line 32

def void(transaction_id)
  respond Client.request(:post, "transactions/#{transaction_id}/void")
end