Module: ArrowPayments::Transactions

Included in:
Client
Defined in:
lib/arrow_payments/client/transactions.rb

Instance Method Summary collapse

Instance Method Details

#capture_transaction(id, amount) ⇒ Boolean

Capture an unsettled transaction

Parameters:

  • transaction (String)

    ID

  • amount, (Integer)

    less than or equal to original amount

Returns:

  • (Boolean)


51
52
53
54
# File 'lib/arrow_payments/client/transactions.rb', line 51

def capture_transaction(id, amount)
  resp = post('/transaction/capture', 'TransactionId' => id, 'Amount' => amount)
  resp['Success'] == true
end

#create_transaction(transaction) ⇒ Transaction

Create a new transaction

Returns:



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/arrow_payments/client/transactions.rb', line 27

def create_transaction(transaction)
  if transaction.kind_of?(Hash)
    transaction = ArrowPayments::Transaction.new(transaction)
  end

  # Set default transaction attributes
  transaction.transaction_source = 'API'

  params = transaction.to_source_hash
  params['Amount'] = params['TotalAmount']

  resp = post('/transaction/add', params)

  if resp['Success'] == true
    ArrowPayments::Transaction.new(resp)
  else
    raise ArrowPayments::Error, resp['Message']
  end
end

#transaction(id) ⇒ Transaction

Get transaction details

Parameters:

  • transaction (String)

    ID

Returns:



6
7
8
9
10
# File 'lib/arrow_payments/client/transactions.rb', line 6

def transaction(id)
  Transaction.new(get("/transaction/#{id}"))
rescue NotFound
  nil
end

#transactions(customer_id, status = 'NotSettled') ⇒ Array<Transaction>

Get customer transactions by status

Parameters:

  • customer (String)

    ID

  • transaction (String)

    status

Returns:



16
17
18
19
20
21
22
23
# File 'lib/arrow_payments/client/transactions.rb', line 16

def transactions(customer_id, status='NotSettled')
  unless Transaction::STATUSES.include?(status)
    raise ArgumentError, "Invalid status: #{status}"
  end

  resp = get("/customer/#{customer_id}/Transactions/#{status}")
  resp['Transactions'].map { |t| Transaction.new(t) }
end

#void_transaction(id) ⇒ Boolean

Void a previously submitted transaction that have not yet settled

Parameters:

  • transaction (String)

    ID

Returns:

  • (Boolean)


59
60
61
62
# File 'lib/arrow_payments/client/transactions.rb', line 59

def void_transaction(id)
  resp = post('/transaction/void', 'TransactionId' => id)
  resp['Success'] == true
end