Skip to content

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