Daraja API(Mpesa) Payment Library for Elixir
# ExMpesa
> Payment Library For Most Mpesa(Daraja) Payment API's in Kenya. Let us get this :moneybag:
## Table of contents
- Features
- Installation
- Configuration
- Documentation
- Contribution
- Contributors
- Licence
## Features
- [x] STK Transaction Validation
- [x] B2C
- [x] B2B
- [x] C2B
- [x] Reversal
- [x] Transaction Status
- [x] Account Balance
## Installation
If available in Hex, the package can be installed
by adding `ex_mpesa` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:ex_mpesa, "~> 0.1.0"}
]
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:
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:
peternjeru.co.ke by Peter Njeru
```elixir
config :ex_mpesa,
consumer_key: "72yw1nun6g1QQPPgOsAObCGSfuimGO7b",
consumer_secret: "vRzZiD5RllMLIdLD",
mpesa_short_code: "174379",
mpesa_passkey: "bfb279f9aa9bdbcf158e97dd71a467cd2e0c893059b10f78e6b72ada1ed2c919",
mpesa_callback_url: "
91eb0af5.ngrok.io"
```
## Documentation
The docs can be found at
hexdocs.pm.
### Quick Examples
#### Mpesa Express (STK)
```elixir
iex> ExMpesa.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 whethe …