Python SDK
With the Transfa API, you can request payments from anywhere in West Africa. And by using the SDKs, you can quickly integrate Transfa in your workflow and benefits of the following features:
- Request a payment
- Get a payment status
- Refund a payment
- Retrieve and list all payments
- And also process webhooks sent from our end to get real-time update.
Let's see how you can use the Transfa Python SDK to collect and manage payments without further due.
Note
You will need an API key for this tutorial. For better understanding and avoiding unwanted effects, you should use tests api keys before, and once you are comfortable with the SDK and sure that the integration is working, you can move to a live environement.
Using the Transfa Python SDK
First of all, you need to install the SDK python package.
- Shell
pip install --upgrade transfa
After the installation, let's describe the minimum required information to request a payment.
- Python
import uuid
from transfa.api_client import client
client.api_key = "ak_test_..."
response = client.Payment.request_payment({
"account_alias": "60201010",
"amount": 5000,
"mode": "mtn-benin",
"webhook_url": "https://your_app_url.domain/your_webhook_endpoint/" # Optional
},
idempotency_key=uuid.uuid4().hex)
# Process the response's body
print(response.text)
In the code above, we are using the request_payment
method to request a payment. The required payload for this method is:
- the
account_alias
which represents the mobile money account of your customer. - the
amount
which means the amount of the payment requested. - the
mode
which means the gateway of theaccount_alias
- and another parameter, the
idempotency_key
which is actually essential as it helps us and you avoid duplicated payments.
You can also send a webhook_url
and the Transfa API will handle everything that concerns webhook notifications.
The returned object by the request_payment
method is a Response
object and you can access the data of the responses as you will do with this type of object.
Retrieve and List Payments
The Transfa SDK also provides methods such as list
and retrieve
to list and retrieve payments from the API.
- Python
from transfa.api_client import client
client.api_key = "ak_test_..."
response = client.Payment.list()
print(response.text)
response = client.Payment.retrieve(payment_id="28dc22751e854b86a6a1d8ded87a83")
print(response.text)
And for a better developer experience, if you want to check the status of a payment you can use the status
method and pass the payment id as a parameter.
- Python
from transfa.api_client import client
client.api_key = "ak_test_..."
response = client.Payment.status(payment_id="28dc22751e854b86a6a1d8ded87a83")
print(response.text)
And you can also request a refund for a certain payment using the refund
method. You just need to use the refund
method and pass the payment id as a parameter.
- Python
from transfa.api_client import client
client.api_key = "ak_test_..."
response = client.Payment.refund(payment_id="28dc22751e854b86a6a1d8ded87a83")
print(response.text)
Now that we better understand how to use the Payment API, let's see how you can verify a webhook using the Transfa Python SDK.
Webhooks
At Transfa, we use webhooks to notify you of changes in the status of a payment. Here is an example of a webhook payload sent by the Transfa API.
- Json
{
"webhook_id": "a6a307855d4e4e0dbab9e4e98cee80f7",
"event": "payment:processing",
"payment": "WGYDKVCCCK",
"created": "2023-01-29T11:29:18.439332+00:00",
"updated": "2023-01-29T11:29:18.439346+00:00"
}
The webhooks handle three types of events. These events come with the following structure payment:financial_status
and you can have the following events:
payment:pending
: meaning that the payment is pending. It also means that the status of the payment isprocessing
.payment:success
: meaning that the payment iscompleted
.payment:failed
meaning that the payment has been canceled or has just failed.payment:refunded
meaning that the payment has been refunded. The status of the payment will remaincompleted
.
Using the Transfa SDK, you will need to have a private secret
key. This key is used to sign the payload of the request and ensure that there is no data tempering.
- Python
from transfa.webhook import Webhook
...
webhook = Webhook(webhook_token=secret_key, body=body, headers=request.headers)
verified = webhook.verify()
In the code above, verified
can either be a boolean
or a dict
. If the verify
the method runs successfully, it will return the data in the payload. Otherwise, you will receive False
the meaning that the data is not authentic.
It is a good habit to use an environment to store transfa API and secret keys in your Python application. We can recommend the usage python-dotenv
or you can use the getenv
API of the os
package.