This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

This package provides bindings for the Lipisha Payments API (http://developer.lipisha.com/)

Features

  • Send money
  • Send SMS
  • Get Float
  • Get Balance
  • Acknowledge transactions

Examples

IPN callback examples are in the examples directory:

https://github.com/lipisha/lipisha-python-client/tree/master/examples

Quick start

>>> from lipisha import Lipisha
>>> api_key = "YOUR API KEY"
>>> api_signature = "YOUR API SIGNATURE"
>>> lipisha = Lipisha(api_key, api_signature)
>>> lipisha.api_base_url
'https://lipisha.com/payments/accounts/index.php/v2/api'
>>> lipisha = Lipisha(api_key, api_signature, api_environment='test')
>>> lipisha.api_base_url
'http://developer.lipisha.com/index.php/v2/api/'
>>> lipisha = Lipisha(api_key, api_signature, api_environment='live')
>>> lipisha.api_base_url
'https://lipisha.com/payments/accounts/index.php/v2/api'

>>> lipisha.confirm_transaction(transaction='YYYE9WWWW0')

{u'content': {u'transaction': u'YYYE9WWWW0',
  u'transaction_account_name': u'Primary',
  u'transaction_account_number': u'098777',
  u'transaction_amount': u'200.0000',
  u'transaction_date': u'2015-08-14 16:51:00',
  u'transaction_email': u'',
  u'transaction_method': u'Paybill (M-Pesa)',
  u'transaction_mobile_number': u'2547XXYYYZZZ',
  u'transaction_name': u'Test User Names',
  u'transaction_reference': u'99',
  u'transaction_status': u'Completed',
  u'transaction_type': u'Payment'},
  u'status': {u'status': u'SUCCESS',
              u'status_code': 0,
              u'status_description': u'Transaction Found'}}


>>> lipisha.create_payment_account(transaction_account_type=1,
                                   transaction_account_name="MPESA Payments",
                                   transaction_account_manager="test_account")

{u'content': {u'transaction_account_manager': u'test_account',
  u'transaction_account_name': u'MPESA Payments',
  u'transaction_account_number': u'09999',
  u'transaction_account_type': u'1'},
  u'status': {u'status': u'SUCCESS',
              u'status_code': 0,
              u'status_description': u'Account Created'}}

>>> lipisha.create_withdrawal_account(transaction_account_type="1",
                               transaction_account_name="Settlement Bank A/C",
                               transaction_account_number="0100555555555",
                               transaction_account_bank_name="AZY Bank",
                               transaction_account_bank_branch="HQ",
                               transaction_account_bank_address="PO BOX 900032 - 99999 Nairobi, Kenya",
                               transaction_account_swift_code="ABCXYXXXX",
                               transaction_account_manager="test_account")
{u'content': {u'transaction_account_bank_address': u'PO BOX 900032 - 99999 Nairobi, Kenya',
  u'transaction_account_bank_branch': u'HQ',
  u'transaction_account_bank_name': u'AZY Bank',
  u'transaction_account_manager': u'test_account',
  u'transaction_account_name': u'Settlement Bank A/C',
  u'transaction_account_number': u'0100555555555',
  u'transaction_account_swift_code': u'ABCXYXXXX',
  u'transaction_account_type': u'1'},
  u'status': {u'status': u'SUCCESS',
              u'status_code': 0,
              u'status_description': u'Account Created'}}

>>> lipisha.get_balance()
{u'content': {u'balance': u'246.2500', u'currency': u'KES'},
 u'status': {u'status': u'SUCCESS',
             u'status_code': 0,
             u'status_description': u'Balance Found'}}

>>> lipisha.get_float(account_number="098000")

{u'content': {u'account_number': u'098000',
  u'currency': u'KES',
  u'float': u'0.00'},
 u'status': {u'status': u'SUCCESS',
  u'status_code': 0,
  u'status_description': u'Float Found'}}

>>> lipisha.get_transactions()

{u'content': [{u'code': None,
   u'transaction': u'JJ99X9TC0',
   u'transaction_account_name': u'Primary',
   u'transaction_account_number': u'098777',
   u'transaction_amount': u'50.0000',
   u'transaction_date': u'2015-08-06 10:39:00',
   u'transaction_email': u'',
   u'transaction_method': u'Paybill (M-Pesa)',
   u'transaction_mobile_number': u'2547XXYYYZZZ',
   u'transaction_name': u'Test User Names',
   u'transaction_reference': u'',
   u'transaction_reversal_status': u'None',
   u'transaction_reversal_status_id': u'1',
   u'transaction_status': u'Completed',
   u'transaction_type': u'Payment'},
  {u'code': None,
   u'transaction': u'JJ99X9TC0',
   u'transaction_account_name': u'Primary',
   u'transaction_account_number': u'098777',
   u'transaction_amount': u'-0.7500',
   u'transaction_date': u'2015-08-06 10:39:00',
   u'transaction_email': u'',
   u'transaction_method': u'Paybill (M-Pesa)',
   u'transaction_mobile_number': u'2547XXYYYZZZ',
   u'transaction_name': u'Test User Names',
   u'transaction_reference': u'',
   u'transaction_reversal_status': u'None',
   u'transaction_reversal_status_id': u'1',
   u'transaction_status': u'Completed',
   u'transaction_type': u'Fee'},
  {u'code': None,
   u'transaction': u'YYYE9WWWW0',
   u'transaction_account_name': u'Primary',
   u'transaction_account_number': u'098777',
   u'transaction_amount': u'200.0000',
   u'transaction_date': u'2015-08-14 16:51:00',
   u'transaction_email': u'',
   u'transaction_method': u'Paybill (M-Pesa)',
   u'transaction_mobile_number': u'2547XXYYYZZZ',
   u'transaction_name': u'Test User Names',
   u'transaction_reference': u'99',
   u'transaction_reversal_status': u'None',
   u'transaction_reversal_status_id': u'1',
   u'transaction_status': u'Completed',
   u'transaction_type': u'Payment'},
  {u'code': None,
   u'transaction': u'YYYE9WWWW0',
   u'transaction_account_name': u'Primary',
   u'transaction_account_number': u'098777',
   u'transaction_amount': u'-3.0000',
   u'transaction_date': u'2015-08-14 16:51:00',
   u'transaction_email': u'',
   u'transaction_method': u'Paybill (M-Pesa)',
   u'transaction_mobile_number': u'2547XXYYYZZZ',
   u'transaction_name': u'Test User Names',
   u'transaction_reference': u'99',
   u'transaction_reversal_status': u'None',
   u'transaction_reversal_status_id': u'1',
   u'transaction_status': u'Completed',
   u'transaction_type': u'Fee'}],
 u'status': {u'status': u'SUCCESS',
  u'status_code': 0,
  u'status_description': u'Transactions Found'}}

>>> lipisha.get_transactions(transaction="JJ99X9TC0")
{u'content': [{u'code': None,
   u'transaction': u'JJ99X9TC0',
   u'transaction_account_name': u'Primary',
   u'transaction_account_number': u'098777',
   u'transaction_amount': u'50.0000',
   u'transaction_date': u'2015-08-06 10:39:00',
   u'transaction_email': u'',
   u'transaction_method': u'Paybill (M-Pesa)',
   u'transaction_mobile_number': u'2547XXYYYZZZ',
   u'transaction_name': u'Test User Names',
   u'transaction_reference': u'',
   u'transaction_reversal_status': u'None',
   u'transaction_reversal_status_id': u'1',
   u'transaction_status': u'Completed',
   u'transaction_type': u'Payment'},
  {u'code': None,
   u'transaction': u'JJ99X9TC0',
   u'transaction_account_name': u'Primary',
   u'transaction_account_number': u'098777',
   u'transaction_amount': u'-0.7500',
   u'transaction_date': u'2015-08-06 10:39:00',
   u'transaction_email': u'',
   u'transaction_method': u'Paybill (M-Pesa)',
   u'transaction_mobile_number': u'2547XXYYYZZZ',
   u'transaction_name': u'Test User Names',
   u'transaction_reference': u'',
   u'transaction_reversal_status': u'None',
   u'transaction_reversal_status_id': u'1',
   u'transaction_status': u'Completed',
   u'transaction_type': u'Fee'}],
 u'status': {u'status': u'SUCCESS',
  u'status_code': 0,
  u'status_description': u'Transactions Found'}}

>>> lipisha.get_customers()
{u'content': [{u'customer_average': u'125.00000000',
   u'customer_email': u'',
   u'customer_first_payment_date': u'2015-08-06 10:39:00',
   u'customer_last_payment_date': u'2015-08-14 16:51:00',
   u'customer_mobile_number': u'2547XXYYYZZZ',
   u'customer_name': u'Test User Names',
   u'customer_payments': u'2',
   u'customer_total': u'250.0000'}],
 u'status': {u'status': u'SUCCESS',
  u'status_code': 0,
  u'status_description': u'Customers Found'}}

>>> lipisha.get_customers(customer_mobile_number="2547XXYYYZZZ")
{u'content': [{u'customer_average': u'125.00000000',
   u'customer_email': u'',
   u'customer_first_payment_date': u'2015-08-06 10:39:00',
   u'customer_last_payment_date': u'2015-08-14 16:51:00',
   u'customer_mobile_number': u'2547XXYYYZZZ',
   u'customer_name': u'Test User Names',
   u'customer_payments': u'2',
   u'customer_total': u'250.0000'}],
 u'status': {u'status': u'SUCCESS',
  u'status_code': 0,
  u'status_description': u'Customers Found'}}

>>> lipisha.send_airtime(account_number="03160", mobile_number="07XXYYYZZZ", amount="50", network="SAF")
{u'content': {u'amount': u'50',
  u'mobile_number': u'07XXYYYZZZ',
  u'reference': u'MF0QKVD9W'},
 u'status': {u'status': u'SUCCESS',
  u'status_code': u'0000',
  u'status_description': u'Airtime purchased successfully'}}



>>> lipisha.send_money(account_number="098777", mobile_number="07XXYYYZZZ", amount=50)
{u'content': {u'amount': u'50',
  u'customer_name': u'',
  u'mobile_number': u'07XXYYYZZZ',
  u'reference': u'SP01ZXA45'},
 u'status': {u'status': u'SUCCESS',
  u'status_code': u'0000',
  u'status_description': u'Payout Scheduled'}}


>>> lipisha.authorize_card_transaction(account_number="098000",
                                       card_number="4242424242424242",
                                       address1="PO BOX 11111 99999",
                                       address2="",
                                       expiry="082020",
                                       name="Lipsha Test Account",
                                       country="KENYA",
                                       state="NAIROBI",
                                       zip="00200",
                                       security_code="999",
                                       amount=100,
                                       currency='KES')
{u'content': {u'transaction_index': u'{CDD55BEB-F74A-4A8B-8D5C-2FC77FF14E7B}',
  u'transaction_reference': 111111},
 u'status': {u'status': u'SUCCESS',
  u'status_code': u'0000',
  u'status_description': u'Transaction Authorized Successfully'}}


>>> lipisha.complete_card_transaction(transaction_reference=11111,
                                      transaction_index="{CDD55BEB-F74A-4A8B-8D5C-2FC77FF14E7B}")
{u'content': {u'transaction_index': u'{CDD55BEB-F74A-4A8B-8D5C-2FC77FF14E7B}',
  u'transaction_reference': u'11111'},
 u'status': {u'status': u'SUCCESS',
  u'status_code': u'0000',
  u'status_description': u'Transaction Completed Successfully'}}

>>> lipisha.reverse_card_transaction(transaction_reference=11111, transaction_index="{CDD55BEB-F74A-4A8B-8D5C-2FC77FF14E7B}")
{u'content': None, u'status': None}

Installation

At the command line:

$ pip install lipisha

Or using easy_install

$ easy_install lipisha

Manual installation

$ git clone https://github.com/lipisha/lipisha-python-client.git
$ cd lipisha-python-client
$ python setup.py install

Or, if you have virtualenvwrapper installed::

$ mkvirtualenv lipisha
$ pip install lipisha

See documentation for detailed API. Refer to Lipisha API for parameters required for each method.

Release History

Release History

0.2.4

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.2.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting