class Bitodeme::Resource::Invoice

Invoice resource

Attributes

account_id[R]

Account identifier

address[R]

Fund address

amount[R]

Amount

cancel_return_url[R]

Cancellation return url

created_at[R]

Created at in milliseconds

currency_code[R]

Currency code

current_status[R]

Current status

deleted_at[R]

Deleted at in milliseconds

description[R]

Description

external_id[R]

External unique identifier

id[R]

Unique identifier

name[R]

Name/title

notify_url[R]

Notify url

original_amount[R]

Original amount

original_currency_code[R]

Original currency code

purchasable[R]

Is it purchasable

return_url[R]

Successful payment return url

updated_at[R]

Updated at in milliseconds

Public Class Methods

build(params) click to toggle source

Build an invoice

Example:

>> invoice =
>>   Bitodeme::Resource::Invoice.build(
>>     name:                   'Virtual game gold',
>>     description:            'Buy a game gold',
>>     original_amount:        16.7,
>>     original_currency_code: 'USD',
>>     external_id:            'SomeUniqId',
>>     purchasable:            {}
>>   )

Arguments:

params: (Hash)
# File lib/bitodeme/resources/invoice.rb, line 77
def build(params)
  new(params).send(:validate)
end
create(invoice) click to toggle source

Craete a new invoice

Example:

>> invoice =
>>   Bitodeme.build_invoice(
>>     name:                   'Virtual game gold',
>>     description:            'Buy a game gold',
>>     original_amount:        16.7,
>>     original_currency_code: 'USD',
>>     external_id:            'SomeUniqId',
>>     purchasable:            {}
>>   )

>> invoice = Bitodeme.create_invoice(invoice)

Arguments:

invoice: (Bitodeme::Resource::Invoice)
# File lib/bitodeme/resources/invoice.rb, line 106
def create(invoice)
  raise_for('invoice', invoice) unless invoice.is_a?(Invoice)
  _create('invoices', 'invoice', invoice: invoice.to_h)
end
find(id) click to toggle source

Find an invoice

Arguments:

id: (UUID)
# File lib/bitodeme/resources/invoice.rb, line 85
def find(id)
  _find('invoices', 'invoice', id)
end
new(params) click to toggle source
Calls superclass method Bitodeme::Resource::Base::new
# File lib/bitodeme/resources/invoice.rb, line 126
def initialize(params)
  super(attrs: attrs, params: params)
end

Private Class Methods

new(attrs:, params:) click to toggle source
# File lib/bitodeme/resources/base.rb, line 54
def initialize(attrs:, params:)
  attrs.each do |attr|
    val = params.fetch(attr.to_s, params.fetch(attr, nil))
    instance_variable_set("@#{attr}", val)
  end
end
raise_for(attr, val) click to toggle source
# File lib/bitodeme/resources/invoice.rb, line 117
def raise_for(attr, val)
  raise Bitodeme::ValidationError.new(attr, val)
end
unauthorized_conn() click to toggle source
# File lib/bitodeme/resources/invoice.rb, line 113
def unauthorized_conn
  Bitodeme::UnauthorizedConn.build
end

Private Instance Methods

validate() click to toggle source
# File lib/bitodeme/resources/invoice.rb, line 130
def validate
  validate_original_amount
  validate_original_currency_code
  validate_external_id
  validate_purchasable
  self
end
validate_external_id() click to toggle source
# File lib/bitodeme/resources/invoice.rb, line 148
def validate_external_id
  raise_for('external_id') unless external_id.is_a?(String)
end
validate_original_amount() click to toggle source
# File lib/bitodeme/resources/invoice.rb, line 138
def validate_original_amount
  return if /^\d{0,8}(\.\d{1,8})?$/.match?(original_amount.to_s)
  raise_for('original_amount')
end
validate_original_currency_code() click to toggle source
# File lib/bitodeme/resources/invoice.rb, line 143
def validate_original_currency_code
  return if /^[a-zA-Z]{3}$/.match?(original_currency_code.to_s)
  raise_for('original_currency_code')
end
validate_purchasable() click to toggle source
# File lib/bitodeme/resources/invoice.rb, line 152
def validate_purchasable
  raise_for('purchasable') unless purchasable.is_a?(Hash)
end