Class: K2ConnectRuby::K2Entity::K2Pay

Inherits:
K2Entity
  • Object
show all
Defined in:
lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_pay.rb

Constant Summary

Constants included from K2ConnectRuby::K2Utilities::K2Validation

K2ConnectRuby::K2Utilities::K2Validation::ALL_EVENT_TYPES, K2ConnectRuby::K2Utilities::K2Validation::TILL_SCOPE_EVENT_TYPES

Instance Attribute Summary collapse

Attributes inherited from K2Entity

#access_token, #k2_response_body, #location_url, #query_hash, #the_array

Instance Method Summary collapse

Methods inherited from K2Entity

#initialize, #query

Methods included from K2ConnectRuby::K2Utilities::K2Validation

#determine_scope_details, #incorrect_keys, #nil_values, #to_indifferent_access, #validate_email, #validate_hash, #validate_input, #validate_network, #validate_phone, #validate_settlement_method, #validate_till_number_prefix, #validate_url, #validate_webhook, #validate_webhook_input

Methods included from K2ConnectRuby::K2Utilities

#make_hash

Constructor Details

This class inherits a constructor from K2ConnectRuby::K2Entity::K2Entity

Instance Attribute Details

#payments_location_urlObject (readonly)

Returns the value of attribute payments_location_url.



4
5
6
# File 'lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_pay.rb', line 4

def payments_location_url
  @payments_location_url
end

#recipients_location_urlObject (readonly)

Returns the value of attribute recipients_location_url.



4
5
6
# File 'lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_pay.rb', line 4

def recipients_location_url
  @recipients_location_url
end

Instance Method Details

#add_recipient(params) ⇒ Object

Adding PAY Recipients with either mobile_wallets or bank_accounts as destination of your payments.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_pay.rb', line 7

def add_recipient(params)
  params = params.with_indifferent_access
  @exception_array += %w[type]
  # In the case of mobile pay recipient
  k2_request_pay_recipient = if params[:type].eql?('mobile_wallet')
                               params = validate_input(params, @exception_array += %w[first_name last_name phone_number email network])
                               {
                                 first_name: params[:first_name],
                                 last_name: params[:last_name],
                                 phone_number: validate_phone(params[:phone_number]),
                                 email: validate_email(params[:email]),
                                 network: params[:network]
                               }
                               # In the case of bank pay recipient
                             elsif params[:type].eql?('bank_account')
                               params = validate_input(params, @exception_array += %w[account_name account_number bank_branch_ref settlement_method])
                               {
                                 account_name: params[:account_name],
                                 account_number: params[:account_number],
                                 bank_branch_ref: params[:bank_branch_ref],
                                 settlement_method: params[:settlement_method]
                               }
                               # In the case of till pay recipient
                             elsif params[:type].eql?('till')
                               params = validate_input(params, @exception_array += %w[till_name till_number])
                               {
                                 till_name: params[:till_name],
                                 till_number: params[:till_number]
                               }
                               # In the case of bank pay recipient
                             elsif params[:type].eql?('paybill')
                               params = validate_input(params, @exception_array += %w[paybill_name paybill_number paybill_account_number])
                               {
                                 paybill_name: params[:paybill_name],
                                 paybill_number: params[:paybill_number],
                                 paybill_account_number: params[:paybill_account_number]
                               }
                             else
                               raise ArgumentError, 'Undefined Payment Method.'
                             end
  recipients_body = {
    type: params[:type],
    #type: params['pay_type'],
    pay_recipient: k2_request_pay_recipient
  }
  pay_recipient_hash = make_hash(K2ConnectRuby::K2Utilities::Config::K2Config.path_url('pay_recipient'), 'post', @access_token, 'PAY', recipients_body)
  @recipients_location_url = K2ConnectRuby::K2Utilities::K2Connection.make_request(pay_recipient_hash)
end

#create_payment(params) ⇒ Object

Create an outgoing Payment to a third party.



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_pay.rb', line 57

def create_payment(params)
  # Validation
  params = validate_input(params, @exception_array += %w[destination_reference destination_type description category tags currency value callback_url metadata])
  # The Request Body Parameters
  k2_request_pay_amount = {
    currency: params[:currency],
    value: params[:value]
  }
   = params[:metadata]
  k2_request_links = {
    callback_url: params[:callback_url]
  }
  create_payment_body = {
    destination_reference: params[:destination_reference],
    destination_type: params[:destination_type],
    description: params[:description],
    category: params[:category],
    tags: params[:tags],
    amount: k2_request_pay_amount,
    meta_data: ,
    _links: k2_request_links
  }
  create_payment_hash = make_hash(K2ConnectRuby::K2Utilities::Config::K2Config.path_url('payments'), 'post', @access_token, 'PAY', create_payment_body)
  @payments_location_url = K2ConnectRuby::K2Utilities::K2Connection.make_request(create_payment_hash)
end

#query_resource(url) ⇒ Object

Query Location URL



93
94
95
# File 'lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_pay.rb', line 93

def query_resource(url)
  super('PAY', url)
end

#query_status(method_type) ⇒ Object

Query/Check the status of a previously initiated PAY Payment request



84
85
86
87
88
89
90
# File 'lib/k2-connect-ruby/k2_entity/k2_financial_entities/k2_pay.rb', line 84

def query_status(method_type)
  if method_type.eql?('recipients')
    super('PAY', @recipients_location_url)
  elsif method_type.eql?('payments')
    super('PAY', @payments_location_url)
  end
end