Class: StraddlePay::Resources::Charges

Inherits:
Base
  • Object
show all
Defined in:
lib/straddle_pay/resources/charges.rb

Overview

Manage ACH charge (debit) transactions.

Constant Summary

Constants inherited from Base

Base::HEADER_KEYS

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from StraddlePay::Resources::Base

Instance Method Details

#cancel(id, **options) ⇒ Hash

Cancel a charge.

Parameters:

  • id (String)

    charge ID

Returns:

  • (Hash)

    cancelled charge



57
58
59
60
# File 'lib/straddle_pay/resources/charges.rb', line 57

def cancel(id, **options)
  headers = extract_headers(options)
  @client.put("v1/charges/#{id}/cancel", options, headers: headers)
end

#create(paykey:, amount:, currency:, description:, payment_date:, consent_type:, device:, external_id:, config:, **options) ⇒ Hash

Create a new charge.

Parameters:

  • paykey (String)

    paykey identifier

  • amount (Integer)

    amount in cents

  • currency (String)

    three-letter currency code (e.g. "usd")

  • description (String)

    charge description

  • payment_date (String)

    date in YYYY-MM-DD format

  • consent_type (String)

    consent type (e.g. "internet")

  • device (Hash)

    device info (must include :ip_address)

  • external_id (String)

    your external reference ID

  • config (Hash)

    charge processing configuration

  • options (Hash)

    additional fields or header params

Returns:

  • (Hash)

    created charge



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/straddle_pay/resources/charges.rb', line 22

def create(
  paykey:, amount:, currency:, description:, payment_date:, consent_type:,
  device:, external_id:, config:, **options
)
  payload = {
    paykey: paykey, amount: amount, currency: currency, description: description,
    payment_date: payment_date, consent_type: consent_type, device: device, config: config,
    external_id: external_id, **options
  }.compact
  headers = extract_headers(payload)
  @client.post("v1/charges", payload, headers: headers)
end

#get(id, **options) ⇒ Hash

Retrieve a charge by ID.

Parameters:

  • id (String)

    charge ID

Returns:

  • (Hash)

    charge details



39
40
41
42
# File 'lib/straddle_pay/resources/charges.rb', line 39

def get(id, **options)
  headers = extract_headers(options)
  @client.get("v1/charges/#{id}", headers: headers)
end

#hold(id, **options) ⇒ Hash

Place a charge on hold.

Parameters:

  • id (String)

    charge ID

Returns:

  • (Hash)

    held charge



66
67
68
69
# File 'lib/straddle_pay/resources/charges.rb', line 66

def hold(id, **options)
  headers = extract_headers(options)
  @client.put("v1/charges/#{id}/hold", options, headers: headers)
end

#release(id, **options) ⇒ Hash

Release a held charge.

Parameters:

  • id (String)

    charge ID

Returns:

  • (Hash)

    released charge



75
76
77
78
# File 'lib/straddle_pay/resources/charges.rb', line 75

def release(id, **options)
  headers = extract_headers(options)
  @client.put("v1/charges/#{id}/release", options, headers: headers)
end

#resubmit(id, **options) ⇒ Hash

Resubmit a failed or reversed charge.

Parameters:

  • id (String)

    charge ID

  • options (Hash)

    optional request body or header params

Returns:

  • (Hash)

    resubmitted charge



94
95
96
97
98
# File 'lib/straddle_pay/resources/charges.rb', line 94

def resubmit(id, **options)
  payload = options.compact
  headers = extract_headers(payload)
  @client.post("v1/charges/#{id}/resubmit", payload.empty? ? nil : payload, headers: headers)
end

#unmask(id, **options) ⇒ Hash

Retrieve unmasked charge details.

Parameters:

  • id (String)

    charge ID

Returns:

  • (Hash)

    unmasked charge details



84
85
86
87
# File 'lib/straddle_pay/resources/charges.rb', line 84

def unmask(id, **options)
  headers = extract_headers(options)
  @client.get("v1/charges/#{id}/unmask", headers: headers)
end

#update(id, **options) ⇒ Hash

Update a charge.

Parameters:

  • id (String)

    charge ID

Returns:

  • (Hash)

    updated charge



48
49
50
51
# File 'lib/straddle_pay/resources/charges.rb', line 48

def update(id, **options)
  headers = extract_headers(options)
  @client.put("v1/charges/#{id}", options, headers: headers)
end