Skip to main content

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.

Version Downloads License

SDK in action

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.

See contribution guide →

Credits

This package was created with Cookiecutter and the waynerv/cookiecutter-pypackage project template.

License

MIT. Have at it.

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

setu-2.1.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

setu-2.1.0-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file setu-2.1.0.tar.gz.

File metadata

  • Download URL: setu-2.1.0.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for setu-2.1.0.tar.gz
Algorithm Hash digest
SHA256 3240d17a00647dea37916be7cd47690b08d891cee8d4123e0e53653cdc25e7e3
MD5 ea6b0f5e07b3346564ad8702893f4477
BLAKE2b-256 3da788bb4818ad5812d8bc3a87d8327d09abcee72da18ec298d73c69d3640871

See more details on using hashes here.

Provenance

File details

Details for the file setu-2.1.0-py3-none-any.whl.

File metadata

  • Download URL: setu-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.3

File hashes

Hashes for setu-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 276b14ca9ebcaabb3b4bd54c684b842e90cf398aa2f4597eb23c5a325f829ba6
MD5 cf7c621e15b9870e75ed1118461395cf
BLAKE2b-256 9c39537eda49efefd735774108dcee32bd67701fcecf96c8934c5544a51720e9

See more details on using hashes here.

Provenance

Supported by

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