Python package to connect to Setu's UPI Deep Link APIs.
Project description
Setu UPI DeepLinks: Python SDK
setu
is a Python SDK for accessing Setu’s UPI Deeplinks APIs. The SDK is designed with ease of access in mind, with native Python class objects for inputs & ouputs and custom exceptions.
Getting started
SDK documentation →
Full documentation →
Product overview →
Installation
pip install setu
Features
- Full support for latest UPI Deeplinks APIs
- Native Python class objects for all inputs & responses
- Allows both JWT & OAuth authentication mechanisms
SANDBOX
mode to test integration &PRODUCTION
for live data- Internal mechanism for OAuth authentication to automatically re-fetch token when current one expires, and retry all failed requests.
Examples
Setup
from setu import Deeplink
from setu.contract import RefundRequestItem, SetuAPIException
dl = Deeplink(
scheme_id="c4f57443-dc1e-428f-8c4e-e5fd531057d2",
secret="5b288618-473f-4193-ae1b-8c42f223798e",
product_instance_id="861023031961584801",
auth_type="OAUTH",
mode="SANDBOX",
)
Generate UPI payment link
bill_amount = 100
try:
link = dl.create_payment_link(
amount_value=bill_amount,
biller_bill_id="test_transaction_1234",
amount_exactness="EXACT",
payee_name="Python SDK unittest",
transaction_note="unittest transaction",
)
assert link.payment_link.upi_id == "refundtest@kaypay"
except SetuException as e:
assert False
Get Payment Link Status
try:
link_status = dl.check_payment_status(link.platform_bill_id)
assert link_status.status == "BILL_CREATED"
except SetuAPIException as e:
assert False
Trigger mock payment for UPI payment link (Sandbox only)
try:
credit_response = dl.trigger_mock_payment(
float(bill_amount) / 100, link.payment_link.upi_id, link.platform_bill_id
)
except SetuAPIException as e:
assert False
Mock Settlement
try:
dl.trigger_mock_settlement([credit_response.utr])
except SetuAPIException as e:
assert False
Expire bill payment
try:
dl.expire_payment_link(link.platform_bill_id)
except SetuAPIException as e:
assert False
Initiate Refund
try:
batch_initiate_refund_response = dl.initiate_batch_refund(
refunds=[
RefundRequestItem(
identifier=link.platform_bill_id,
identifierType="BILL_ID",
refundType="FULL",
),
],
)
assert batch_initiate_refund_response.refunds[0].status == "Pending"
except SetuAPIException as e:
assert False
Get refund batch status
try:
refund_batch_status_response = dl.get_batch_refund_status(batch_initiate_refund_response.batch_id)
assert refund_batch_status_response.refunds[0].bill_id == link.platform_bill_id
except SetuAPIException as e:
assert False
Get individual refund status
try:
refund_status_response = dl.get_refund_status(batch_initiate_refund_response.refunds[0].id)
assert refund_status_response.bill_id == link.platform_bill_id
except SetuAPIException as e:
assert False
Contributing
Have a look through existing Issues and Pull Requests that you could help with. If you'd like to request a feature or report a bug, please create a GitHub Issue using the template provided.
Credits
This package was created with Cookiecutter and the waynerv/cookiecutter-pypackage project template.
License
MIT. Have at it.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
setu-2.1.0.tar.gz
(12.7 kB
view hashes)
Built Distribution
setu-2.1.0-py3-none-any.whl
(11.7 kB
view hashes)