Skip to content

Commit

Permalink
Add API endpoints and payloads
Browse files Browse the repository at this point in the history
  • Loading branch information
whyayen committed Jan 15, 2022
1 parent 38c1a8a commit 2f1d02d
Show file tree
Hide file tree
Showing 21 changed files with 335 additions and 1 deletion.
14 changes: 14 additions & 0 deletions lib/ezpay-invoice/api/endpoints/allowance_invalid.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module EzpayInvoice
module Api
module Endpoints
module AllowanceInvalid
def allowance_invalid(payload = {})
post(
'allowanceInvalid',
EzpayInvoice::Api::Payloads::AllowanceInvalid.new(payload)
)
end
end
end
end
end
14 changes: 14 additions & 0 deletions lib/ezpay-invoice/api/endpoints/allowance_issue.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module EzpayInvoice
module Api
module Endpoints
module AllowanceIssue
def allowance_issue(payload = {})
post(
'allowance_issue',
EzpayInvoice::Api::Payloads::AllowanceIssue.new(payload)
)
end
end
end
end
end
14 changes: 14 additions & 0 deletions lib/ezpay-invoice/api/endpoints/allowance_touch_issue.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module EzpayInvoice
module Api
module Endpoints
module AllowanceTouchIssue
def allowance_touch_issue(payload = {})
post(
'allowance_touch_issue',
EzpayInvoice::Api::Payloads::AllowanceTouchIssue.new(payload)
)
end
end
end
end
end
14 changes: 14 additions & 0 deletions lib/ezpay-invoice/api/endpoints/invoice_invalid.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module EzpayInvoice
module Api
module Endpoints
module InvoiceInvalid
def invoice_invalid(payload = {})
post(
'invoice_invalid',
EzpayInvoice::Api::Payloads::InvoiceInvalid.new(payload)
)
end
end
end
end
end
14 changes: 14 additions & 0 deletions lib/ezpay-invoice/api/endpoints/invoice_issue.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module EzpayInvoice
module Api
module Endpoints
module InvoiceIssue
def invoice_issue(payload = {})
post(
'invoice_issue',
EzpayInvoice::Api::Payloads::InvoiceIssue.new(payload)
)
end
end
end
end
end
14 changes: 14 additions & 0 deletions lib/ezpay-invoice/api/endpoints/invoice_search.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module EzpayInvoice
module Api
module Endpoints
module InvoiceSearch
def invoice_search(payload = {})
post(
'invoice_search',
EzpayInvoice::Api::Payloads::InvoiceSearch.new(payload)
)
end
end
end
end
end
14 changes: 14 additions & 0 deletions lib/ezpay-invoice/api/endpoints/invoice_touch_issue.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module EzpayInvoice
module Api
module Endpoints
module InvoiceTouchIssue
def invoice_touch_issue(payload = {})
post(
'invoice_touch_issue',
EzpayInvoice::Api::Payloads::InvoiceTouchIssue.new(payload)
)
end
end
end
end
end
8 changes: 8 additions & 0 deletions lib/ezpay-invoice/api/payloads.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
require_relative 'payloads/base'
require_relative 'payloads/invoice_issue'
require_relative 'payloads/invoice_touch_issue'
require_relative 'payloads/invoice_invalid'
require_relative 'payloads/invoice_search'
require_relative 'payloads/allowance_issue'
require_relative 'payloads/allowance_touch_issue'
require_relative 'payloads/allowance_invalid'
11 changes: 11 additions & 0 deletions lib/ezpay-invoice/api/payloads/allowance_invalid.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module EzpayInvoice
module Api
module Payloads
class AllowanceInvalid < Base
property(:Version, from: :version, default: '1.0')
property(:AllowanceNo, from: :allowance_no, required: true)
property(:InvalidReason, from: :invalid_reason, required: true)
end
end
end
end
23 changes: 23 additions & 0 deletions lib/ezpay-invoice/api/payloads/allowance_issue.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module EzpayInvoice
module Api
module Payloads
class AllowanceIssue < Base
include EzpayInvoice::Api::Properties::Item

property(:Version, from: :version, default: '1.3')
property(:InvoiceNo, from: :invoice_no, required: true)
property(:MerchantOrderNo, from: :merchant_order_no, required: true)
property(:TaxTypeForMixed, from: :tax_type_for_mixed)
property(
:ItemTaxAmt,
from: :item_tax_amt,
with: ->(value) { value.join('|') },
required: true
)
property(:TotalAmt, from: :total_amt, required: true)
property(:BuyerEmail, from: :buyer_email)
property(:Status, from: :status, required: true)
end
end
end
end
13 changes: 13 additions & 0 deletions lib/ezpay-invoice/api/payloads/allowance_touch_issue.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module EzpayInvoice
module Api
module Payloads
class AllowanceTouchIssue < Base
property(:Version, from: :version, default: '1.0')
property(:AllowanceStatus, from: :allowance_status, required: true)
property(:AllowanceNo, from: :allowance_no, required: true)
property(:MerchantOrderNo, from: :merchant_order_no, required: true)
property(:TotalAmt, from: :total_amt, required: true)
end
end
end
end
13 changes: 13 additions & 0 deletions lib/ezpay-invoice/api/payloads/base.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
require 'hashie'

module EzpayInvoice
module Api
module Payloads
class Base < Hashie::Dash
include Hashie::Extensions::IgnoreUndeclared
include Hashie::Extensions::Dash::PropertyTranslation
include EzpayInvoice::Api::Properties::General
end
end
end
end
11 changes: 11 additions & 0 deletions lib/ezpay-invoice/api/payloads/invoice_invalid.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module EzpayInvoice
module Api
module Payloads
class InvoiceInvalid < Base
property(:Version, from: :version, default: '1.0')
property(:InvoiceNumber, from: :invoice_number, required: true)
property(:InvalidReason, from: :invalid_reason, required: true)
end
end
end
end
40 changes: 40 additions & 0 deletions lib/ezpay-invoice/api/payloads/invoice_issue.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
module EzpayInvoice
module Api
module Payloads
class InvoiceIssue < Base
include EzpayInvoice::Api::Properties::Item

property(:Version, from: :version, default: '1.4')
property(:TransNum, from: :trans_num)
property(:MerchantOrderNo, from: :merchant_order_no, required: true)
property(:Status, from: :status, required: true)
property(:CreateStatusTime, from: :create_status_time)
property(:Category, from: :category, required: true)
property(:BuyerName, from: :buyer_name, required: true)
property(:BuyerUBN, from: :buyer_ubn)
property(:BuyerAddress, from: :buyer_address)
property(:BuyerEmail, from: :buyer_email)
property(:CarrierType, from: :carrier_type)
property(:CarrierNum, from: :carrier_num)
property(:LoveCode, from: :love_code)
property(:PrintFlag, from: :print_flag, required: true)
property(:KioskPrintFlag, from: :kiosk_print_flag)
property(:TaxType, from: :tax_type, required: true)
property(:TaxRate, from: :tax_rate, required: true)
property(:CustomsClearance, from: :customs_clearance)
property(:Amt, from: :amt, required: true)
property(:AmtSales, from: :amt_sales)
property(:AmtZero, from: :amt_zero)
property(:AmtFree, from: :amt_free)
property(:TaxAmt, from: :tax_amt, required: true)
property(:TotalAmt, from: :total_amt, required: true)
property(
:ItemTaxType,
from: :item_tax_type,
with: ->(value) { value.join('|') },
)
property(:Comment, from: :comment)
end
end
end
end
15 changes: 15 additions & 0 deletions lib/ezpay-invoice/api/payloads/invoice_search.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
module EzpayInvoice
module Api
module Payloads
class InvoiceSearch < Base
property(:Version, from: :version, default: '1.3')
property(:SearchType, from: :search_type)
property(:MerchantOrderNo, from: :merchant_order_no, required: true)
property(:TotalAmt, from: :total_amt, required: true)
property(:InvoiceNumber, from: :invoice_number, required: true)
property(:RandomNum, from: :random_num, required: true)
property(:DisplayFlag, from: :display_flag)
end
end
end
end
13 changes: 13 additions & 0 deletions lib/ezpay-invoice/api/payloads/invoice_touch_issue.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module EzpayInvoice
module Api
module Payloads
class InvoiceTouchIssue < Base
property(:Version, from: :version, default: '1.0')
property(:TransNum, from: :trans_num)
property(:MerchantOrderNo, from: :merchant_order_no, required: true)
property(:InvoiceTransNo, from: :invoice_trans_no, required: true)
property(:TotalAmt, from: :total_amt, required: true)
end
end
end
end
2 changes: 2 additions & 0 deletions lib/ezpay-invoice/api/properties.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
require_relative 'properties/general'
require_relative 'properties/item'
14 changes: 14 additions & 0 deletions lib/ezpay-invoice/api/properties/general.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module EzpayInvoice
module Api
module Properties
module General
def self.included(base)
base.class_eval do
property :RespondType, from: :respond_type, default: 'JSON'
property :TimeStamp, from: :timestamp, default: Time.now.to_i
end
end
end
end
end
end
42 changes: 42 additions & 0 deletions lib/ezpay-invoice/api/properties/item.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
module EzpayInvoice
module Api
module Properties
module Item
def self.included(base)
base.class_eval do
property(
:ItemName,
from: :item_name,
with: ->(value) { value.join('|') },
required: true
)
property(
:ItemCount,
from: :item_count,
with: ->(value) { value.join('|') },
required: true
)
property(
:ItemUnit,
from: :item_unit,
with: ->(value) { value.join('|') },
required: true
)
property(
:ItemPrice,
from: :item_price,
with: ->(value) { value.join('|') },
required: true
)
property(
:ItemAmt,
from: :item_amt,
with: ->(value) { value.join('|') },
required: true
)
end
end
end
end
end
end
16 changes: 16 additions & 0 deletions lib/ezpay-invoice/client.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,25 @@
require_relative 'request'
require_relative 'api/properties'
require_relative 'api/payloads'
require_relative 'api/endpoints/invoice_issue'
require_relative 'api/endpoints/invoice_touch_issue'
require_relative 'api/endpoints/invoice_invalid'
require_relative 'api/endpoints/invoice_search'
require_relative 'api/endpoints/allowance_issue'
require_relative 'api/endpoints/allowance_touch_issue'
require_relative 'api/endpoints/allowance_invalid'

module EzpayInvoice
class Client
include EzpayInvoice::Configurable
include EzpayInvoice::Request
include EzpayInvoice::Api::Endpoints::InvoiceIssue
include EzpayInvoice::Api::Endpoints::InvoiceTouchIssue
include EzpayInvoice::Api::Endpoints::InvoiceInvalid
include EzpayInvoice::Api::Endpoints::InvoiceSearch
include EzpayInvoice::Api::Endpoints::AllowanceIssue
include EzpayInvoice::Api::Endpoints::AllowanceTouchIssue
include EzpayInvoice::Api::Endpoints::AllowanceInvalid

def initialize(options = {})
EzpayInvoice::Configurable.attributes.each do |key|
Expand Down
17 changes: 16 additions & 1 deletion lib/ezpay-invoice/response.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,22 @@ def initialize(rest_response)
@body = response_hash
@status = response_hash['Status']
@message = response_hash['Message']
@result = JSON.parse(response_hash['Result']).deep_transform_keys { |k| k.to_s.underscore }
@result = transform_keys(JSON.parse(response_hash['Result']))
parse_item_detail
end

private
def parse_item_detail
if @result.has_key?('item_detail')
item_detail = JSON.parse(@result['item_detail']).map { |item| transform_keys(item) }
@result['item_detail'] = item_detail
end
end

def transform_keys(hash)
hash.deep_transform_keys do |k|
k.to_s.underscore
end
end
end
end

0 comments on commit 2f1d02d

Please sign in to comment.