Class: MpesaConnect::Client
- Inherits:
-
Object
- Object
- MpesaConnect::Client
- Defined in:
- lib/mpesa_connect.rb
Constant Summary collapse
- BASE_URL =
"https://sandbox.safaricom.co.ke"
Instance Method Summary collapse
- #account_balance(initiator, party_a) ⇒ Object
- #b2c_transaction(initiator, amount, party_a, party_b, url = "#{BASE_URL}/mpesa/b2c/v1/paymentrequest") ⇒ Object
- #c2b_register_url(shortcode, response_type) ⇒ Object
- #c2b_transaction(shortcode, amount, msisdn, bill_reference = nil) ⇒ Object
-
#initialize(key, secret, security_credentials) ⇒ Client
constructor
A new instance of Client.
- #reversal(initiator, transaction_id, amount, receiver_party) ⇒ Object
- #security_password(security_credentials) ⇒ Object
- #set_urls(timeout = nil, transaction = nil, confirm = nil, validate = nil) ⇒ Object
- #transaction_status(initiator, party_a, transaction_id) ⇒ Object
Constructor Details
#initialize(key, secret, security_credentials) ⇒ Client
Returns a new instance of Client.
9 10 11 12 13 14 |
# File 'lib/mpesa_connect.rb', line 9 def initialize key, secret, security_credentials @key = key @secret = secret @access_token = nil @sec_cred = security_credentials end |
Instance Method Details
#account_balance(initiator, party_a) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/mpesa_connect.rb', line 23 def account_balance initiator, party_a url = "#{BASE_URL}/mpesa/accountbalance/v1/query" headers = { "Authorization" => "Bearer #{get_token}", "Content-Type" => "application/json" } body = { Initiator: "#{initiator}", SecurityCredential: "#{@sec_cred}", CommandID: "AccountBalance", PartyA: party_a, IdentifierType: "4", Remarks: "Account Balance", QueueTimeOutURL: "#{@timeout}", ResultURL: "#{@transaction}" }.to_json response = HTTParty.post(url, headers: headers, body: body) JSON.parse(response.body) end |
#b2c_transaction(initiator, amount, party_a, party_b, url = "#{BASE_URL}/mpesa/b2c/v1/paymentrequest") ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/mpesa_connect.rb', line 122 def b2c_transaction initiator, amount, party_a, party_b, url = "#{BASE_URL}/mpesa/b2c/v1/paymentrequest" headers = { "Authorization" => "Bearer #{get_token}", "Content-Type" => "application/json" } body = { InitiatorName: "#{initiator}", SecurityCredential: "#{@sec_cred}", CommandID: "SalaryPayment", Amount: "#{amount}", PartyA: "#{party_a}", PartyB: "#{party_b}", Remarks: "Salary Payments", QueueTimeOutURL: "#{@timeout}", ResultURL: "#{@transaction}" }.to_json response = HTTParty.post(url, headers: headers, body: body) JSON.parse(response.body) end |
#c2b_register_url(shortcode, response_type) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/mpesa_connect.rb', line 87 def c2b_register_url shortcode, response_type url = "#{BASE_URL}/mpesa/c2b/v1/registerurl" headers = { "Authorization" => "Bearer #{get_token}", "Content-Type" => "application/json" } body = { ShortCode: "#{shortcode}", ResponseType: "#{response_type}", ConfirmationURL: "#{@confirm}", ValidationURL: "#{@validate}" }.to_json response = HTTParty.post(url, headers: headers, body: body) JSON.parse(response.body) end |
#c2b_transaction(shortcode, amount, msisdn, bill_reference = nil) ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/mpesa_connect.rb', line 104 def c2b_transaction shortcode, amount, msisdn, bill_reference=nil url = "#{BASE_URL}/mpesa/c2b/v1/simulate" headers = { "Authorization" => "Bearer #{get_token}", "Content-Type" => "application/json" } body = { ShortCode: "#{shortcode}", CommandID: "CustomerPayBillOnline", Amount: "#{amount}", Msisdn: "#{msisdn}", BillRefNumber: "#{bill_reference}" }.to_json response = HTTParty.post(url, headers: headers, body: body) JSON.parse(response.body) end |
#reversal(initiator, transaction_id, amount, receiver_party) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/mpesa_connect.rb', line 43 def reversal initiator, transaction_id, amount, receiver_party url = "#{BASE_URL}/mpesa/reversal/v1/request" headers = { "Authorization" => "Bearer #{get_token}", "Content-Type" => "application/json" } body = { Initiator: "#{initiator}", SecurityCredential: "#{@sec_cred}", CommandID:"TransactionReversal", TransactionID: "#{transaction_id}", Amount: "#{amount}", ReceiverParty: "#{receiver_party}", RecieverIdentifierType:"4", ResultURL: "#{@transaction}", QueueTimeOutURL: "#{@timeout}", Remarks: "reverse transaction #{transaction_id}" }.to_json response = HTTParty.post(url, headers: headers, body: body) JSON.parse(response.body) end |
#security_password(security_credentials) ⇒ Object
143 144 145 146 |
# File 'lib/mpesa_connect.rb', line 143 def security_password security_credentials @sec_cred = security_credentials encrypted_security_password end |
#set_urls(timeout = nil, transaction = nil, confirm = nil, validate = nil) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/mpesa_connect.rb', line 16 def set_urls timeout=nil, transaction=nil, confirm=nil, validate=nil @timeout = timeout @transaction = transaction @confirm = confirm @validate = validate end |
#transaction_status(initiator, party_a, transaction_id) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/mpesa_connect.rb', line 65 def transaction_status initiator, party_a, transaction_id url = "#{BASE_URL}/mpesa/transactionstatus/v1/query" headers = { "Authorization" => "Bearer #{get_token}", "Content-Type" => "application/json" } body = { Initiator: "#{initiator}", SecurityCredential: "#{@sec_cred}", CommandID: "TransactionStatusQuery", TransactionID: "#{transaction_id}", PartyA: "#{party_a}", IdentifierType: "3", Remarks: "Transaction Status", QueueTimeOutURL: "#{@timeout}", ResultURL: "#{@transaction}" }.to_json response = HTTParty.post(url, headers: headers, body: body) JSON.parse(response.body) end |