Sha256: 245d4d34244268d0c654523c3410a124af94df7436cf1afe1c4f808fedcf75a9

Contents?: true

Size: 963 Bytes

Versions: 3

Compression:

Stored size: 963 Bytes

Contents

# frozen_string_literal: true

require 'base64'

module Mpesa
  class Stk < Resource
    PATH = 'mpesa/stkpush/v1/processrequest'

    def call
      Object.new post_request(url: PATH, body: body).body
    end

    def body
      {
        'BusinessShortCode': shortcode,
        'Password': password,
        'Timestamp': timestamp,
        'TransactionType': 'CustomerPayBillOnline',
        'Amount': args[:amount],
        'PartyA': format_phone(args[:phone]),
        'PartyB': shortcode,
        'PhoneNumber': format_phone(args[:phone]),
        'CallBackURL': args[:callback_url],
        'AccountReference': args[:reference],
        'TransactionDesc': args[:trans_desc]
      }
    end

    def password
      Base64.strict_encode64("#{shortcode}#{args[:pass_key] || client.pass_key}#{timestamp}")
    end

    def timestamp
      Time.now.strftime('%Y%m%d%H%M%S')
    end

    def shortcode
      args[:shortcode] || client.shortcode
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mpesarb-0.3.5 lib/mpesa/resources/stk.rb
mpesarb-0.3.4 lib/mpesa/resources/stk.rb
mpesarb-0.3.3 lib/mpesa/resources/stk.rb