Skip to main content

Simple and flexible pluggable cryptocurrency payment app for django

Project description

https://badge.fury.io/py/django-cryptocurrency-payment.svg https://travis-ci.org/ydaniels/django-cryptocurrency-payment.svg?branch=master https://codecov.io/gh/ydaniels/django-cryptocurrency-payment/branch/master/graph/badge.svg PyPI - Python Version Django Version

Simple and flexible pluggable cryptocurrency payment app for django. Coins are spendable and reflect on HD wallet like Electrum

Documentation

The full documentation is at https://django-cryptocurrency-payment.readthedocs.io.

Quickstart

Install Django Cryptocurrency Payment:

pip install django-cryptocurrency-payment

Add it to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'cryptocurrency_payment.apps.CryptocurrencyPaymentConfig',
    ...
)

CRYPTOCURRENCY_PAYMENT = {
    "BITCOIN": {
        "CODE": "btc",
        "BACKEND": "merchant_wallet.backends.btc.BitcoinBackend",
        "FEE": 0.00,
        "REFRESH_PRICE_AFTER_MINUTE": 15,
        "REUSE_ADDRESS": False,
        "ACTIVE": True,
        "MASTER_PUBLIC_KEY": 'PUT_YOUR_WALLET_MASTER_PUBLIC_KEY',
        "CANCEL_UNPAID_PAYMENT_HRS": 24,
        "CREATE_NEW_UNDERPAID_PAYMENT": True,
        "IGNORE_UNDERPAYMENT_AMOUNT": 10,
        "IGNORE_CONFIRMED_BALANCE_WITHOUT_SAVED_HASH_MINS": 20,
        "BALANCE_CONFIRMATION_NUM": 1,
        "ALLOW_ANONYMOUS_PAYMENT": True,
        "DERIVATION_PATH": "m/0", #please use deriavation path from your wallet
        "ADDRESS_TYPE": "p2wpkh" #specify address type you want to generate p2pkh p2sh p2wpkh p2wsh p2wpkh_in_p2sh
    },
    "LITECOIN": {
    "CODE": "LTC",
          ..
          ..
          ..
          ..
    }
 }

Add Django Cryptocurrency Payment’s URL patterns:

from cryptocurrency_payment import urls as cryptocurrency_payment_urls


urlpatterns = [
    ...
    url(r'^', include(cryptocurrency_payment_urls)), #/payment/{pk}/
    ...
]

Create payment with method

from cryptocurrency_payment.models import create_new_payment

payment = create_new_payment(
crypto='BITCOIN', #Cryptocurrency from your settings
fiat_amount=10, #Amount of item in fiat
fiat_currency='USD', #Fiat currency used to convert to crypto amount
payment_title=None,  #Title associated with payment
payment_description=None, #Description associated with payment
related_object=None, #Generic linked object for this payment -> crypto_payments = GenericRelation(CryptoCurrencyPayment)
user=None, #User of this payment for non-anonymous payment
parent_payment=None, #Associate with previous payment
address_index=None,# Use an address generated from a particular index for this payment e.g same address can always be used for a particular user
reuse_address=None), #Used previously paid address for this payment

Tasks

Run these tasks periodically based on your preferred time using your favorite django task manager

cryptocurrency_payment.tasks.update_payment_status
cryptocurrency_payment.tasks.cancel_unpaid_payment
cryptocurrency_payment.tasks.refresh_payment_prices

Features

  • Flexible payment creation that can be linked to other django object

  • Automatically update payment status from blockchain

  • Auto update payment prices if payment is not paid

  • Auto create child payment if payment is underpaid

  • Cancel unpaid payment after a period of time

  • Allow Anonymous payment

  • Pluggable backend to support more cryptocurrency

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install tox
(myenv) $ tox

Credits

Tools used in rendering this package:

History

0.1.0 (2020-03-21)

  • First release on PyPI.

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-cryptocurrency-payment-0.1.2.tar.gz (16.4 kB view hashes)

Uploaded Source

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