Skip to main content

Python Wrapper for interacting with the Flutterwave Payments API

Project description

Python Flutterwave

Description

Python Wrapper for interacting with the Flutterwave API

Contribution

  • Before making any further steps (for interested contributors), please refer to the CONTRIBUTING GUIDE.

Installation

  • pip install python-flutterwave

Usage

  • Create an account in Flutterwave here and obtain your Secret Key only.
from python_flutterwave import payment

payment.token = 'YOUR_SECRET_KEY'
Here are all the possible values for payment options available on Flutterwave:
0: "account"
1: "card"
2: "banktransfer"
3: "mpesa"
4: "mobilemoneyrwanda"
5: "mobilemoneyzambia"
6: "qr"
7: "mobilemoneyuganda"
8: "ussd"
9: "credit"
10: "barter"
11: "mobilemoneyghana"
12: "payattitude"
13: "mobilemoneyfranco"
14: "paga"
15: "1voucher"
16: "mobilemoneytanzania"
  • To trigger a standard payment that returns a redirect uri
uri = payment.initiate_payment(tx_ref="qwerty", amount=100, redirect_url='your_callback_url',
                               payment_options='mpesa', customer_email='example@email.com',
                               customer_phone_number='0123456789', currency='KES', customer_name='John Doe',
                               title='Demo Payment', description='Just pay me...')
print(uri)
  • Redirect the user to that uri where he/she will make the payment.
  • After payment is made, the user will be redirected to the redirect_url you declared but Flutterwave will append some info regarding the payment i.e. transaction_id and tx_ref. If your url is https://example.com/callback then it may be http://example.com/callback/?status=successful&tx_ref=qwerty&transaction_id=2784792
  • You should save the transaction_id to your DB as it will be used to query the transaction details.

There is no need to save the transaction_id as it is also possible to use tx_ref to get the payment details! Check here - https://developer.flutterwave.com/reference/endpoints/transactions/

  • To check the transaction details e.g. successful or not, grab the transaction_id from the previous step.
details = payment.get_payment_details(transaction_id)
# or
deailts = payment.get_payment_details_via_tx_ref(tx_ref)

print(details)
  • To trigger an automatic MPESA charge on your customer through STK push, first configure your Webhook url in the dashboard, it may be a simple server; Flutterwave will post some data regarding your transaction status in that url. This method call will return a Python dict object. You can decide what to do thereon.
mpesa_trans_details = payment.trigger_mpesa_payment(tx_ref="qwertyuio", amount=100, currency='KES', 
                                                    email='johndoe@gmail.com', phone_number='1234567890', 
                                                    full_name='John Doe')
print(mpesa_trans_details)
  • To initiate a USSD payment to your customer, configure your webhook url in the dashboard where Flutterwave will post data regarding the transaction. This method call will return a Python Dict object from which you can extract the USSD code to show your customer for payment completion. For other banks, you may also need to extract the payment_code from the result.

    • By default, NGN is the only supported currency for USSD payments so this method automatically uses NGN
    • Only a number of banks support USSD so you have to refer to the docs to check your bank and its corresponding account_bank code.
At the moment, banks available for USSD payments (and their numeric codes) are:

Access Bank -- 044
Ecobank -- 050
Fidelity Bank -- 070
First Bank of Nigeria -- 011
First City Monument Bank (FCMB) -- 214
GTBank -- 058
Heritage Bank -- 030
Keystone Bank -- 082
Stanbic IBTC Bank -- 221
Sterling Bank -- 232
Union Bank -- 032
United Bank for Africa -- 033
Unity Bank -- 215
VFD Microfinance Bank -- 090110
Wema Bank -- 035
Zenith Bank -- 057
details = payment.initiate_ussd_payment(tx_ref="123erd", amount=100, email='johndoe@gmail.com',
                                        phone_number='789456123', full_name='John Doe', account_bank='057')
print(details)
  • For bank transactions, it is important to first verify the details given to you by the customer before granting incentives according to the specifications of your application.
  • To verify bank details call the function below that returns a Python dictionary with the data...
details = payment.verify_bank_account_details(account_number= "0690000032", account_bank= "044")
print(details)
  • For card transactions, it is advisable to ascertain the customer's card details before granting incentives according to the specifications of your application.
  • This function call takes the card_bin (usually the first 4-6 digits in debit/credit cards) and returns info regarding the card. A Python dict object is returned, thence use it according to your needs.
details = payment.verify_card_details(card_bin=553188)
print(details)

Sponsor Python Flutterwave

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-flutterwave-0.9.11.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_flutterwave-0.9.11-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file python-flutterwave-0.9.11.tar.gz.

File metadata

  • Download URL: python-flutterwave-0.9.11.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for python-flutterwave-0.9.11.tar.gz
Algorithm Hash digest
SHA256 d4cc5c2db09aec3e1c9794cd9fe15774c0449df992808fd931c0701471443f1f
MD5 b9a9647aaae1b1c1b04af49f37d2f932
BLAKE2b-256 1b7f632b7e4b0984d80c8e362a13c03a2636f4a3c055dd2b95c269b040a00a7a

See more details on using hashes here.

File details

Details for the file python_flutterwave-0.9.11-py3-none-any.whl.

File metadata

File hashes

Hashes for python_flutterwave-0.9.11-py3-none-any.whl
Algorithm Hash digest
SHA256 9c31c6bb6255c060c4919341bff2abc2541112c4fbdc52a46e743248ad0684c6
MD5 522e80b220f810724fc329269fdd95bb
BLAKE2b-256 5cda55846f9257ec3cb938c2a4b6bdcdf9624dc82fea0e5bbe61bda41cdd8d8a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page