/sslcommerz-sdk

Python SDK for SSLCOMMERZ configurable with Sqlalchemy, PynamoDB or Django ORM.

Primary LanguagePythonMIT LicenseMIT

sslcommerz-sdk

Build Status Docs Build Status Coverage
Python Versions PyPI Version MIT Licence

Python SDK for SSLCOMMERZ configurable with Sqlalchemy, PynamoDB or Django ORM.

Getting Started

Install it via pip (python>=3.0).

pip install sslcommerz-sdk

How to Use

Create the views below depending on framework you are using.

from sslcommerz_sdk.enums import TransactionStatus

# TODO: create payment_handler.py file
from .payment_handler import payment_handler, store


def payment_init_view():
    # TODO: Freeze the cart, see what cart freezing is
    session, created = payment_handler.get_or_create_session(
        store=store,
        tran_id="test",
        currency="BDT",
        total_amount=100,
        cus_name="test",
        cus_email="test@test.com",
        cus_add1="test",
        cus_city="test",
        cus_postcode="1234",
        cus_country="test",
        cus_phone="123456",
        success_url="<URL to redirect cutomer when transaction is successful>",
        fail_url="<URL to redirect cutomer when transaction is failed>",
        cancel_url="<URL to redirect cutomer when transaction is cancelled>",
        ipn_url="<URL of ipn_view>",
    )
    # TODO: Redirect customer to session.redirect_url


def ipn_view():
    # TODO: Make this URL public, i.e accessible without logging in
    # TODO: Disable CSRF protection for this view
    # TODO: post_dict = {dict of request POST values}
    session, verified_right_now = payment_handler.verify_transaction(
        payload=post_dict,
    )
    if verified_right_now:
        if session.status == TransactionStatus.VALID:
            print(f"Tran ID: {session.tran_id} successful...")
            # TODO: Update order payment status in your database
        else:
            print("Transaction failed/cancelled!")
            # TODO: Unfreeze the cart sothat customer can modify/delete the cart

Next Steps

Contributing

PR should pass the tests and lint commands, checkout the following to get started.

License

This project is published under MIT LICENSE.