class StarkBank::PaymentRequest

# PaymentRequest object A PaymentRequest is an indirect request to access a specific cash-out service (such as Transfer, BrcodePayments, etc.) which goes through the cost center

approval flow on our website. To emit a PaymentRequest, you must direct it to
a specific cost center by its ID, which can be retrieved on our website at the
cost center page.

## Parameters (required):

## Parameters (optional):

## Attributes (return-only):

Attributes

actions[R]
amount[R]
center_id[R]
created[R]
due[R]
payment[R]
status[R]
tags[R]
type[R]
updated[R]

Public Class Methods

create(payment_requests, user: nil) click to toggle source
Create PaymentRequests

Sends a list of PaymentRequests objects for creating in the Stark Bank API

## Parameters

## Return

# File lib/payment_request/payment_request.rb, line 61
def self.create(payment_requests, user: nil)
  StarkBank::Utils::Rest.post(entities: payment_requests, user: user, **resource)
end
new( payment:, center_id:, id: nil, type: nil, due: nil, tags: nil, amount: nil, status: nil, actions: nil, updated: nil, created: nil ) click to toggle source
Calls superclass method StarkBank::Utils::Resource::new
# File lib/payment_request/payment_request.rb, line 34
def initialize(
  payment:, center_id:, id: nil, type: nil, due: nil, tags: nil, amount: nil, status: nil,
  actions: nil, updated: nil, created: nil
)
  super(id)
  @center_id = center_id
  @due = due
  @tags = tags
  @amount = amount
  @status = status
  @actions = actions
  @updated = updated
  @created = created

  @payment, @type = parse_payment(payment: payment, type: type)
end
page(cursor: nil, center_id:, limit: nil, after: nil, before: nil, status: nil, type: nil, sort: nil, tags: nil, ids: nil, user: nil) click to toggle source

# Retrieve paged PaymentRequests

Receive a list of up to 100 PaymentRequest objects previously created in the Stark Bank API and the cursor to the next page. Use this function instead of query if you want to manually page your requests.

## Parameters (optional):

  • cursor [string, default nil]: cursor returned on the previous page function call

  • limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35

  • after [Date, DateTime, Time or string, default nil]: date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)

  • before [Date, DateTime, Time or string, default nil]: date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)

  • status [string, default nil]: filter for status of retrieved objects. ex: 'paid' or 'registered'

  • tags [list of strings, default nil]: tags to filter retrieved objects. ex: ['tony', 'stark']

  • ids [list of strings, default nil]: list of ids to filter retrieved objects. ex: ['5656565656565656', '4545454545454545']

  • user [Organization/Project object]: Organization or Project object. Not necessary if StarkBank.user was set before function call

## Return:

# File lib/payment_request/payment_request.rb, line 119
def self.page(cursor: nil, center_id:, limit: nil, after: nil, before: nil, status: nil, type: nil, sort: nil, tags: nil, ids: nil, user: nil)
  after = StarkBank::Utils::Checks.check_date(after)
  before = StarkBank::Utils::Checks.check_date(before)
  return StarkBank::Utils::Rest.get_page(
    cursor: cursor,
    center_id: center_id,
    limit: limit,
    after: after,
    before: before,
    status: status,
    type: type,
    sort: sort,
    tags: tags,
    ids: ids,
    user: user,
    **resource
  )
end
query(center_id:, limit: nil, after: nil, before: nil, status: nil, type: nil, sort: nil, tags: nil, ids: nil, user: nil) click to toggle source

# Retrieve PaymentRequests

Receive a generator of PaymentRequest objects previously created in the Stark Bank API

## Parameters (required):

  • center_id [string]: target cost center ID. ex: '5656565656565656'

## Parameters (optional):

  • limit [integer, default nil]: maximum number of objects to be retrieved. Unlimited if nil. ex: 35

  • after [Date, DateTime, Time or string, default nil]: date filter for objects created only after specified date. ex: Date.new(2020, 3, 10)

  • before [Date, DateTime, Time or string, default nil]: date filter for objects created only before specified date. ex: Date.new(2020, 3, 10)

  • status [string, default '-created']: sort order considered in response. Valid options are '-created' or '-due'.

  • type [string, default nil]: payment type, inferred from the payment parameter if it is not a dictionary. ex: 'transfer', 'brcode-payment'

  • sort [list of strings, default nil]: tags to filter retrieved objects. ex: ['tony', 'stark']

  • tags [list of strings, default nil]: tags to filter retrieved objects. ex: ['tony', 'stark']

  • ids [list of strings, default nil]: list of ids to filter retrieved objects. ex: ['5656565656565656', '4545454545454545']

  • user [Organization/Project object]: Organization or Project object. Not necessary if StarkBank.user was set before function call

## Return:

# File lib/payment_request/payment_request.rb, line 84
def self.query(center_id:, limit: nil, after: nil, before: nil, status: nil, type: nil, sort: nil, tags: nil, ids: nil, user: nil)
  after = StarkBank::Utils::Checks.check_date(after)
  before = StarkBank::Utils::Checks.check_date(before)
  StarkBank::Utils::Rest.get_stream(
    center_id: center_id,
    limit: limit,
    after: after,
    before: before,
    status: status,
    type: type,
    sort: sort,
    tags: tags,
    ids: ids,
    user: user,
    **resource
  )
end
resource() click to toggle source
# File lib/payment_request/payment_request.rb, line 164
def self.resource
  {
    resource_name: 'PaymentRequest',
    resource_maker: proc { |json|
      PaymentRequest.new(
        id: json['id'],
        payment: json['payment'],
        center_id: json['centerId'],
        type: json['type'],
        tags: json['tags'],
        amount: json['amount'],
        status: json['status'],
        actions: json['actions'],
        updated: json['updated'],
        created: json['created']
      )
    }
  }
end

Public Instance Methods

parse_payment(payment:, type:) click to toggle source
# File lib/payment_request/payment_request.rb, line 138
def parse_payment(payment:, type:)
  return [payment, 'transfer'] if payment.is_a?(StarkBank::Transfer)
  return [payment, 'transaction'] if payment.is_a?(StarkBank::Transaction)
  return [payment, 'brcode-payment'] if payment.is_a?(StarkBank::BrcodePayment)
  return [payment, 'boleto-payment'] if payment.is_a?(StarkBank::BoletoPayment)
  return [payment, 'utility-payment'] if payment.is_a?(StarkBank::UtilityPayment)
  return [payment, 'tax-payment'] if payment.is_a?(StarkBank::TaxPayment)
  return [payment, 'darf-payment'] if payment.is_a?(StarkBank::DarfPayment)

  raise(Exception('Payment must either be a Transfer, a Transaction, a BrcodePayment, BoletoPayment, a UtilityPayment, a TaxPayment, a DarfPayment or a hash.')) unless payment.is_a?(Hash)

  resource = {
    'transfer': StarkBank::Transfer.resource,
    'transaction': StarkBank::Transaction.resource,
    'brcode-payment': StarkBank::BrcodePayment.resource,
    'boleto-payment': StarkBank::BoletoPayment.resource,
    'utility-payment': StarkBank::UtilityPayment.resource,
    'tax-payment': StarkBank::TaxPayment.resource,
    'darf-payment': StarkBank::DarfPayment.resource
  }[type.to_sym]

  payment = StarkBank::Utils::API.from_api_json(resource[:resource_maker], payment) unless resource.nil?

  [payment, type]
end