Django
Installation
pip install chargily-epay-Django
Create Payment model
to create a payment model you need to extend one of the following classes AbstractPayment
, AnonymPayment
, AnonymPayment
.
from chargily_epay_django.models import AnonymPayment
class Payment(AnonymPayment):
webhook_url = 'payment-confirmation' # reverse url
back_url = 'payment-status' # reverse url
CreatePaymentView
you can create a new Payment using CreatePaymentView
, this class extends from CreateView
# views.py
from django.forms import ModelForm
from chargily_epay_django.views import CreatePaymentView
from my_app.models import Payment
class PaymentForm(ModelForm):
class Meta:
model = Payment
fields = ['client', 'client_email', 'amount', 'mode', 'comment']
class CreatePayment(CreatePaymentView):
template_name: str = "payment/payment-template.html"
form_class = PaymentForm
Example
PaymentConfirmationView
if you want to confirme payment you can use PaymentConfirmationView
view, this view responsable for reciving payment confirmation from third party.
# views.py
# .....
from chargily_epay_django.views import CreatePaymentView, PaymentConfirmationView
# .....
class PaymentConfirmation(PaymentConfirmationView):
model = Payment
PaymentObjectStatusView, Or PaymentObjectDoneView
to check payment status you can use PaymentObjectStatusView
, Or PaymentObjectDoneView
check the doc to see dirence
# views.py
# .....
from chargily_epay_django.views import CreatePaymentView, PaymentConfirmationView, PaymentObjectDoneView
# .....
class PaymentStatus(PaymentObjectDoneView):
template_name: str = "payment/payment-status.html"
model = Payment
Example
FakePayment
if you are working in Devlopment
mode you can use FakePaymentView
all you need to do is to create a view and extend this class and add FakePaymentMixin
, to Payment
model
# models.py
from chargily_epay_django.models import AnonymPayment, FakePaymentMixin
class Payment(FakePaymentMixin,AnonymPayment):
webhook_url = 'payment-confirmation' # reverse url
back_url = 'payment-status' # reverse url
fake_payment_url = "fake-payment" # reverse url
# view
from chargily_epay_django.views import (
CreatePaymentView,
PaymentConfirmationView,
PaymentObjectDoneView,
FakePaymentView
)
class FakePayment(FakePaymentView):
model = Payment
Example
Result
we now can CREATE, UPDATE and READ payment using this few lines of code.
Note: you still have to configure settings, and urls.py
# models.py
from chargily_epay_django.models import AnonymPayment, FakePaymentMixin
class Payment(FakePaymentMixin,AnonymPayment):
webhook_url = 'payment-confirmation' # reverse url
back_url = 'payment-status' # reverse url
fake_payment_url = "fake-payment" # reverse url
# views.py
from django.forms import ModelForm
from chargily_epay_django.views import (
CreatePaymentView,
PaymentConfirmationView,
PaymentObjectDoneView,
FakePaymentView
)
from my_app.models import Payment
# FORM
class PaymentForm(ModelForm):
class Meta:
model = Payment
fields = ['client', 'client_email', 'amount', 'mode', 'comment']
# VIEWS
class CreatePayment(CreatePaymentView):
template_name: str = "payment/payment-template.html"
form_class = PaymentForm
class PaymentConfirmation(PaymentConfirmationView):
model = Payment
class PaymentStatus(PaymentObjectDoneView):
template_name: str = "payment/payment-status.html"
model = Payment
class FakePayment(FakePaymentView):
model = Payment