class MpesaStk::PushPayment
Attributes
amount[R]
phone_number[R]
token[R]
Public Class Methods
call(amount, phone_number)
click to toggle source
# File lib/mpesa_stk/push_payment.rb, line 6 def call(amount, phone_number) new(amount, phone_number).push_payment end
new(amount, phone_number)
click to toggle source
# File lib/mpesa_stk/push_payment.rb, line 13 def initialize(amount, phone_number) @token = MpesaStk::AccessToken.call @amount = amount @phone_number = phone_number end
Public Instance Methods
push_payment()
click to toggle source
# File lib/mpesa_stk/push_payment.rb, line 19 def push_payment response = HTTParty.post(url, headers: headers, body: body) JSON.parse(response.body) end
Private Instance Methods
body()
click to toggle source
# File lib/mpesa_stk/push_payment.rb, line 37 def body { BusinessShortCode: "#{ENV['business_short_code']}", Password: generate_password, Timestamp: "#{timestamp}", TransactionType: "CustomerPayBillOnline", Amount: "#{amount}", PartyA: "#{phone_number}", PartyB: "#{ENV['business_short_code']}", PhoneNumber: "#{phone_number}", CallBackURL: "#{ENV['callback_url']}", AccountReference: generate_bill_reference_number(5), TransactionDesc: generate_bill_reference_number(5) }.to_json end
generate_bill_reference_number(number)
click to toggle source
# File lib/mpesa_stk/push_payment.rb, line 53 def generate_bill_reference_number(number) charset = Array('A'..'Z') + Array('a'..'z') Array.new(number) { charset.sample }.join end
generate_password()
click to toggle source
shortcode passkey timestamp
# File lib/mpesa_stk/push_payment.rb, line 65 def generate_password key = "#{ENV['business_short_code']}#{ENV['business_passkey']}#{timestamp}" Base64.encode64(key).split("\n").join end
headers()
click to toggle source
# File lib/mpesa_stk/push_payment.rb, line 30 def headers { "Authorization" => "Bearer #{token}", "Content-Type" => "application/json" } end
timestamp()
click to toggle source
# File lib/mpesa_stk/push_payment.rb, line 58 def timestamp DateTime.now.strftime("%Y%m%d%H%M%S").to_i end
url()
click to toggle source
# File lib/mpesa_stk/push_payment.rb, line 26 def url "#{ENV['base_url']}#{ENV['process_request_url']}" end