Skip to main content

Python wrapper flutterwave's rave API

Project description

Pyrave
======

Pyrave is a python wrapper for the flutterwave’s
`rave <http://rave.frontendpwc.com/>`__ payment platform

It currently supports the following features:

- Account charge (NG Banks)

- Account charge (International for US and ZAR).

- Card Charge (Bake in support for 3DSecure/PIN).

- Encryption

- Transaction status check (Normal requery flow and xrequery).

- Retry transaction status check flow.

- Preauth -> Capture -> Refund/void.

- Support for USSD and Mcash (Alternative payment methods).

- List of banks for NG Account charge. (Get banks list).

- Get fees endpoint.

- Integrity Checksum
(https://flutterwavedevelopers.readme.io/docs/checksum).

Getting Started
---------------

These instructions will get you a copy of the project up and running on
your local machine for development and testing purposes.

Set Up
~~~~~~

Go to `rave <http://rave.frontendpwc.com/>`__ and sign up. This would
provide you with a public and private authorization key which would be
used throughout the library. Store these authorization keys in your
environment as ``RAVE_PUBLIC_KEY`` for the public key and
``RAVE_SECRET_KEY``.

Installing
~~~~~~~~~~

.. code:: bash

pip install -U pyrave

Upon completion, try to import the library with

.. code:: python

import pyrave

If the installation was successful, the code above should run without
any error.

If an error like ``No module named pyrave`` pops up, then the
installation was not successfull. You can either raise an issue here to
get it looked at or attempt to reinstall it.

Usage
-----

Payment
-------

The payment class was made simple enough to cover the following rave
actions:

.. code:: python

from pyrave import Payment

rave_payment = Payment()

data = {...}

Payment with card and account
'''''''''''''''''''''''''''''

.. code:: python

## Payment with card and account
payment_with_card = rave_payment.pay(using="card", **data)
payment_with_account = rave_payment.pay(using="account", **data)

Getting encrypted data
''''''''''''''''''''''

To get the encrypted data, call the Payment class’
``get_encrypted_data`` method. This would return a tuple of data

.. code:: python

encrypted_data = rave_payment.get_encrypted_data(using="account", **data)

An alternative approach to doing this is to call the pay method and pass
the return_encrypted boolean as True

.. code:: python

encrypted_data = rave_payment.pay(using="card", return_encrypted=True , **data)

In both cases, if the request was successful, you should be able to get
each one of the encryption details by indexing ``encrypted_data``

Charge Validation
'''''''''''''''''

To validate a charge, call the ``validate_charge`` method and pass the
``reference`` and ``otp`` as parameter. You can select the method that
applies most to your transaction.

.. code:: python

validate_charge = rave_payment.validate_charge("reference", "otp", method="card")

Transaction Verification
''''''''''''''''''''''''

To verify a transaction, call the ``verify_transaction`` method and pass
the transaction reference.

.. code:: python

transaction_verification = rave_payment.verify_transaction("reference", "otp", method="card")

Disbursements
'''''''''''''

To make disbursements, call the ``disburse`` method and pass the
``bank_code``, ``account_number``, ``currency``, ``amount`` as
parameters

.. code:: python

disbursements = rave_payment.disburse("bank_code", "account_number", "currency", "amount")

Charge Tokenization
'''''''''''''''''''

.. code:: python

tokenize = rave_payment.tokenize_charge(**data)

Refund
''''''

.. code:: python

refud = rave_payment.refund(reference_id="reference_id")

Transaction
-----------

The transaction Class provides support for the following rave functions:

.. code:: python

from pyrave import Transaction

rave_transaction = Transaction()

data = {...}

Verify Transaction
''''''''''''''''''

.. code:: python

verify = rave_transaction.verify_transaction(**data)

Verify Transaction with xrequery
''''''''''''''''''''''''''''''''

.. code:: python

verify = rave_transaction.verify_transaction_with_xrequery(**data)

Get Recurrent Transactions
''''''''''''''''''''''''''

.. code:: python

verify = rave_transaction.get_reccurent_transactions()

Get Recurrent Transaction
'''''''''''''''''''''''''

.. code:: python

verify = rave_transaction.get_reccurent_transaction(transaction_id="your transaction_id")

Stop Recurrent Transactions
'''''''''''''''''''''''''''

.. code:: python

verify = rave_transaction.get_reccurent_transaction(transaction_data_id="your transaction_data_id")

Miscellaneous features
----------------------

The Misc class provides support for the following rave functions:

.. code:: python

from pyrave import Misc

misc = Misc()

Get list of banks
'''''''''''''''''

.. code:: python

banks = misc.get_banks()

Get fees
''''''''

.. code:: python

banks = misc.get_fee(amount="your amount", currency="your currency", ptype="your ptype", card6="card's number")

Get Exchange Rates
''''''''''''''''''

.. code:: python

rates = misc.get_exchange_rates(origin_currency="your origin currency", destination_currency="your destination currency", amount=None)

Preauth
-------

.. code:: python

from pyrave import Preauth

preauth = Preauth()

Preauthorize card
^^^^^^^^^^^^^^^^^

Before preauthorizing a card, get the client and alg parameters by
calling the ``get_encrypted_data`` method of the Payment class.

.. code:: python

preauth.preauthorise_card(client="client id", algo="algo used")

Preauthorization Capture
''''''''''''''''''''''''

To capture preauthorization, call the
``capture_preauthorised_transaction`` method and pass the
``transaction_reference`` as parameter

.. code:: python

preauthorization = preauth.capture_preauthorised_transaction(transaction_reference="your transaction reference")

Transaction Refund or Void
''''''''''''''''''''''''''

.. code:: python

refund_or_void = preauth.refund_or_void_transaction(action="refund or void", reference_id="your reference id")

Contributing
------------

To contribute, fork the repo, make your changes and create a pull
request.

Todo
----

More Tests

Authors
-------

- `Olamilekan Wahab <https://github.com/Olamyy>`__

License
-------

This project is licensed under the MIT License - see the
`LICENSE.md <LICENSE.md>`__ file for details

Project details


Download files

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

Files for pyrave, version 1.0.3a0
Filename, size File type Python version Upload date Hashes
Filename, size pyrave-1.0.3a0.tar.gz (8.7 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page