/pesaPi

API for (mobile) commercial accounts

Primary LanguagePHP

PesaPI

PesaPI is an unofficial open source API for mobile money systems, released under the BSD(lite) license.
The system currently support:

  • Kenya: Mpesa paybill accounts
  • Kenya: Mpesa private accounts
  • Kenya: Yu private accounts (experimental)
  • Ghana: Airtel private accounts (experimental)
  • Rwanda: MNT private accounts (experimental)

The API supports both PUSH and PULL versions. The PHP version of the API is generally the most mature and recomended at this point - the system is build using Mysql and Curl. Please direct all questions to the public mailing-list "pesaPi" on Google-groups: http://groups.google.com/group/pesapi

Short example

For a short usage example please see: http://www.youtube.com/gifair

Current status

The current system should be considered as beta version - at least one commercial solution is using it as its payment gateway. However it is not recomended that you deploy the system without having a developer available to support the setup.

Version 0.1.0 was recently released and is contains a major rework of the internal structures of PesaPi - be alert that things that worked previously may not be fully working yet - as detailed testing is ongoing.

Currently we are looking for people to provide copies of the SMS messages they are getting from various payment systems.

System design overview

  • Supports both push and pull notifications.
  • Does synchroization between local and server database.
  • Transaction data are available even when main server is down.
  • Super easy to utilize for integrators.
  • Fast response on historical data.
  • Keep the load on servers as low as possible.
  • Hopefully more reliable than other APIs.

API Overview

The PesaPi class contains several static methods, these methods are the main interface.

  • availableBalance(time) -- returns the balance at a given point in time
  • locateByReceipt(receipt) -- returns a payment or null for the given receipt number
  • locateByPhone(phone, from, until) -- returns an array of payments from a particular phone
  • locateByName(name, from, until) -- returns an array of payments from a particular client name
  • locateByAccount(account, from, until) -- returns an array of payments from a particular account-no
  • locateByTimeInterval(from, until) -- returns an array of all payments within a given time interval

As an alternative you can ask PesaPi to call a your on your site when a new transaction is received (push mechanics).

Way forward

The following is a highlevel "todo" list for the project

  • Getting the code to release/production quality.
  • Getting more developers onboard.
  • Add support for more payment systems.