Skip to content

Payment Library For Most Public Payment API's in Kenya and hopefully Africa. Let us get this moneybag

Notifications You must be signed in to change notification settings

beamkenya/ex_pesa

Repository files navigation

Actions Status Hex.pm Hex.pm Coverage Status

ExPesa 💵 💷 💴 💶

Payment Library For Most Public Payment API's in Kenya and hopefully Africa. Let us get this 💰

Related Libraries

If you intend to use just one Payment Library included below, there are some which exists as separately, you can check them out before proceeding;

Table of contents

Features

  • Mpesa
    • Mpesa Express (STK)
    • STK Transaction Validation
    • B2C
    • B2B
    • C2B
    • Reversal
    • Transaction Status
    • Account Balance
  • JengaWS(Equity)
    • Send Money
    • Send Money Queries
    • Receive Money
    • Receive Money Queries
    • Buy Goods, Pay Bills, Get Airtime
    • Airtime
    • Reg Tech: KYC, AML, & CDD API
    • Account Services
    • Forex Rates
  • Paypal
  • Card
  • iPay

Installation

If available in Hex, the package can be installed by adding ex_pesa to your list of dependencies in mix.exs:

def deps do
  [
    {:ex_pesa, "~> 0.1.1"}
  ]
end

Configuration

Create a copy of config/dev.exs or config/prod.exs from config/dev.sample.exs Use the sandbox key to true when you are using sandbox credentials, chnage to false when going to :prod

Mpesa (Daraja)

Mpesa Daraja API link: https://developer.safaricom.co.ke

Add below config to dev.exs / prod.exs files This asumes you have a clear understanding of how Daraja API works.

You can also refer to this Safaricom Daraja API Tutorial: https://peternjeru.co.ke/safdaraja/ui/ by Peter Njeru

config :ex_pesa,
    mpesa: [
        consumer_key: "72yw1nun6g1QQPPgOsAObCGSfuimGO7b",
        consumer_secret: "vRzZiD5RllMLIdLD",
        mpesa_short_code: "174379",
        mpesa_passkey: "bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c919",
        mpesa_callback_url: "http://91eb0af5.ngrok.io/api/payment/callback"
    ]

Jenga API (Equity)

Jenga API link: https://developer.jengaapi.io

Add below config to dev.exs / prod.exs files.
This asumes you have a clear understanding of how Jenga API works.

Read more about how the token is generted here: https://developer.jengaapi.io/docs/developer-quickstart .
The private_key is used to generate the signature. READ More: https://developer.jengaapi.io/docs/generating-signatures .

config :ex_pesa,
    jenga: [
        api_key: "=======API KEY HERE ========",
        username: "=====USERNAME HERE=====",
        password: "=======PASSWORD HERE =======",
        private_key: "=======PRIVATE KEY HERE ======="
    ]

Documentation

The docs can be found at https://hexdocs.pm/ex_pesa.

Quick Examples

Mpesa Express (STK)

  iex> ExPesa.Mpesa.Stk.request(%{amount: 10, phone: "254724540000", reference: "reference", description: "description"})
      {:ok,
        %{
        "CheckoutRequestID" => "ws_CO_010320202011179845",
        "CustomerMessage" => "Success. Request accepted for processing",
        "MerchantRequestID" => "25558-10595705-4",
        "ResponseCode" => "0",
        "ResponseDescription" => "Success. Request accepted for processing"
        }}

Contribution

If you'd like to contribute, start by searching through the issues and pull requests to see whether someone else has raised a similar idea or question. If you don't see your idea listed, Open an issue.

Check the Contribution guide on how to contribute.

Contributors

Auto-populated from: contributors-img

Licence

ExPesa is released under MIT License

license