Skip to main content

A Django utility for eSewa signature generation.

Project description

Django-esewa

A simple, developer-friendly package for integrating the eSewa Payment Gateway into Django applications.

Overview

django-esewa was developed by Nischal Lamichhane to simplify eSewa integration for Python/Django developers. It aims to handle common payment gateway tasks like generating HMAC signatures, verifying transactions, and status checks (in future versions).

Features

  • HMAC Key Generation: Easily generate the signature required for eSewa requests.
  • Customization: Configure secret keys, product codes, success URLs, and failure URLs.

Future Goals

  • Transaction status verification.
  • Improved documentation for all class methods.

QuickStart

pip install django-esewa

Note: Ensure you have added necessary settings like ESEWA_SECRET_KEY, ESEWA_SUCCESS_URL, and ESEWA_FAILURE_URL in your settings.py.

Even though you can use the generate_signature function without creating an object of EsewaPayment, if you want to use other features, you need to add ESEWA_SUCCESS_URL, ESEWA_FAILURE_URL (will fallback to localhost:8000/success/ & localhost:8000/failure/) & ESEWA_SECRET_KEY (will fall back to '8gBm/:&EnhH.1/q').

ESEWA_SUCCESS_URL = "localhost:8000/success/"
ESEWA_FAILURE_URL = "localhost:8000/failure/"
ESEWA_SECRET_KEY = "<Custom_key_from_Esewa>"

Usage

Generating HTML Form

Views.py

from esewa import EsewaPayment

def confirm_order(request,id):
    order = Order.objects.get(id=id)
   

    payment = EsewaPayment(
        product_code=order.code,
        success_url="http://yourdomain.com/success/",
        failure_url="http://yourdomain.com/failure/",
        secret_key="your_secret_key"
    )
    payment.create_signature(
        order.amount,
        order.uuid
    )

    context = {
        'form':payment.generate_form()
    }
    return render(request,'order/checkout.html',context)

order/checkout.html

<form action="https://rc-epay.esewa.com.np/api/epay/main/v2/form" method="POST">
    {{form|safe}}
    <button type="submit">Pay with Esewa </button>
</form>

Generating a Signature

The generate_signature function helps create the HMAC signature required by eSewa for secure transactions.

Function Signature:

def generate_signature(
    total_amount: float,
    transaction_uuid: str,
    key: str = "8gBm/:&EnhH.1/q",
    product_code: str = "EPAYTEST"
) -> str:

Example:

from esewa import generate_signature

# During Development
signature = generate_signature(1000, "123abc")

# In Production
signature = generate_signature(1000, "123abc", "<your_private_key>", "<product_code>")

Using the EsewaPayment Class

EsewaPayment provides additional configuration options for success and failure URLs. List of all methods in EsewaPayment:

  • __init__()
  • create_signature()
  • generate_form()
  • get_status()
  • is_completed()
  • verify_signature()
  • log_transaction()
  • __eq__()

List of In-development methods:

  • generate_redirect_url()
  • refund_payment()
  • simulate_payment()

Initialization:

from esewa import EsewaPayment

payment = EsewaPayment(
    product_code="EPAYTEST",
    success_url="http://yourdomain.com/success/",
    failure_url="http://yourdomain.com/failure/",
    secret_key="your_secret_key"
)

Settings

To use custom configurations, add the following keys to your settings.py:

# settings.py

ESEWA_SECRET_KEY = "your_secret_key"
ESEWA_SUCCESS_URL = "http://yourdomain.com/success/"
ESEWA_FAILURE_URL = "http://yourdomain.com/failure/"

If these settings are missing, the package will use the following defaults:

  • ESEWA_SECRET_KEY: "8gBm/:&EnhH.1/q"
  • ESEWA_SUCCESS_URL: "http://localhost:8000/success/"
  • ESEWA_FAILURE_URL: "http://localhost:8000/failure/"

Contributing

Current To-Do List

  • Write documentation for all methods in the EsewaPayment class.
  • Add refund method

How to Contribute

  1. Fork this repository.
  2. Create a feature branch.
  3. Commit your changes with clear messages.
  4. Submit a pull request (PR) with a detailed description of your changes.

Credits

django-esewa is maintained by Nischal Lamichhane. This package was created as a last-ditch effort to help Python/Django developers integrate eSewa Payment Gateway efficiently.

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

django_esewa-1.0.4.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

django_esewa-1.0.4-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file django_esewa-1.0.4.tar.gz.

File metadata

  • Download URL: django_esewa-1.0.4.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for django_esewa-1.0.4.tar.gz
Algorithm Hash digest
SHA256 5443de0edac047a64757f4caa5bfbf50ad00612521f91efe52e9fa36755d1501
MD5 7c795131313d8d53c902898f7539dcf8
BLAKE2b-256 a7ffd5421e2552e0da2142eca0515942f58c5fd5b68eabd99bac5092f76e94c0

See more details on using hashes here.

File details

Details for the file django_esewa-1.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for django_esewa-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 346f71b249bd776496f4a5e0d7bed9c608f1091d3c551d05f08ef21179697143
MD5 718e2f728fb98790e0a7a51b30f1fcae
BLAKE2b-256 3c7156870e119b165016864380ed72fab179a21fa52049943b3d3a0ac0e64075

See more details on using hashes here.

Supported by

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