Skip to content

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

License

Notifications You must be signed in to change notification settings

monim67/sslcommerz-sdk

Repository files navigation

sslcommerz-sdk

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.