Class: Paymos::Invoices

Inherits:
Resource show all
Defined in:
lib/paymos/client.rb,
sig/paymos.rbs

Instance Method Summary collapse

Methods inherited from Resource

#initialize

Constructor Details

This class inherits a constructor from Paymos::Resource

Instance Method Details

#cancel(invoice_id, reason:) ⇒ Invoice

Parameters:

  • invoice_id (String)
  • reason: (String)

Returns:



219
220
221
222
# File 'lib/paymos/client.rb', line 219

def cancel(invoice_id, reason:)
  Invoice.from(@client.request('POST', "/v1/invoices/#{segment(invoice_id)}/cancel",
                               payload: { reason: validate_reason(reason) }))
end

#confirm_payment(invoice_id, currency:, network:) ⇒ Invoice

Parameters:

  • invoice_id (String)
  • currency: (String)
  • network: (String)

Returns:



224
225
226
227
228
# File 'lib/paymos/client.rb', line 224

def confirm_payment(invoice_id, currency:, network:)
  required_keywords(currency:, network:)
  Invoice.from(@client.request('POST', "/v1/invoices/#{segment(invoice_id)}/confirm-payment",
                               payload: { currency:, network: }))
end

#create(project_id:, amount:, currency:, external_order_id:, network: nil, allow_multiple_payments: nil, customer_fee_percent: nil, client_id: nil) ⇒ Invoice

Parameters:

  • project_id: (String)
  • amount: (String)
  • currency: (String)
  • external_order_id: (String)
  • network: (String, nil) (defaults to: nil)
  • allow_multiple_payments: (Boolean, nil) (defaults to: nil)
  • customer_fee_percent: (Integer, nil) (defaults to: nil)
  • client_id: (String, nil) (defaults to: nil)

Returns:



198
199
200
201
202
203
204
205
206
207
208
# File 'lib/paymos/client.rb', line 198

def create(project_id:, amount:, currency:, external_order_id:, network: nil,
           allow_multiple_payments: nil, customer_fee_percent: nil, client_id: nil)
  required_keywords(project_id:, amount:, currency:, external_order_id:)
  if !customer_fee_percent.nil? && !(customer_fee_percent.is_a?(Integer) && customer_fee_percent.between?(0, 100))
    raise ArgumentError, 'customer_fee_percent must be between 0 and 100'
  end

  payload = { project_id:, amount:, currency:, external_order_id:, network:,
              allow_multiple_payments:, customer_fee_percent:, client_id: }.compact
  Invoice.from(@client.request('POST', '/v1/invoices', payload:))
end

#each(max_pages:, filters) ⇒ void #each(max_pages:, filters) ⇒ Enumerator[InvoiceListItem, void]

Overloads:

  • #each(max_pages:, filters) ⇒ void

    This method returns an undefined value.

    Parameters:

    • max_pages: (Integer)
    • filters (Object)
  • #each(max_pages:, filters) ⇒ Enumerator[InvoiceListItem, void]

    Parameters:

    • max_pages: (Integer)
    • filters (Object)

    Returns:

Yields:

Yield Parameters:

Yield Returns:

  • (void)


237
238
239
240
241
# File 'lib/paymos/client.rb', line 237

def each(max_pages: 100, **filters, &block)
  return enum_for(__method__, max_pages: max_pages, **filters) unless block_given?

  Pagination.each(method(:list), filters, max_pages:, &block)
end

#get(invoice_id) ⇒ Invoice

Parameters:

  • invoice_id (String)

Returns:



210
# File 'lib/paymos/client.rb', line 210

def get(invoice_id) = Invoice.from(@client.request('GET', "/v1/invoices/#{segment(invoice_id)}"))

#list(limit: nil, cursor: nil, status: nil, external_order_id: nil, project_id: nil, created_from: nil, created_to: nil) ⇒ Page[InvoiceListItem]

Parameters:

  • limit: (Integer, nil) (defaults to: nil)
  • cursor: (String, nil) (defaults to: nil)
  • status: (String, Array[String], nil) (defaults to: nil)
  • external_order_id: (String, nil) (defaults to: nil)
  • project_id: (String, nil) (defaults to: nil)
  • created_from: (Integer, nil) (defaults to: nil)
  • created_to: (Integer, nil) (defaults to: nil)

Returns:



212
213
214
215
216
217
# File 'lib/paymos/client.rb', line 212

def list(limit: nil, cursor: nil, status: nil, external_order_id: nil,
         project_id: nil, created_from: nil, created_to: nil)
  filters = validate_list_filters({ limit:, cursor:, status:, external_order_id:, project_id:, created_from:,
                                    created_to: }.compact)
  Page.from(@client.request('GET', '/v1/invoices', query: Signing.query(filters)), item_type: InvoiceListItem)
end

#simulate_payment(invoice_id, stage:) ⇒ Invoice

Parameters:

  • invoice_id (String)
  • stage: (String)

Returns:

Raises:

  • (ArgumentError)


230
231
232
233
234
235
# File 'lib/paymos/client.rb', line 230

def simulate_payment(invoice_id, stage:)
  raise ArgumentError, 'Invalid simulation stage' unless %w[paid overpaid underpay cancel].include?(stage)

  Invoice.from(@client.request('POST', "/v1/sandbox/invoices/#{segment(invoice_id)}/simulate-payment",
                               payload: { stage: }))
end