پرداخت آنلاین در جنگو یکی از نیازهای اساسی بسیاری از پروژه‌های وب‌سایت کلودبر است. با استفاده از زرین‌پال، شما می‌توانید به سادگی سیستم پرداخت آنلاین را در پروژه جنگو خود راه‌اندازی کنید. در این مقاله به شما آموزش می‌دهیم که چگونه زرین‌ پال در جنگو اضافه کنید.

همچنین آموزش ویدیوی پیاده سازی زرین‌ پال در جنگو به صورت ویدئویی در کدیتی قرار گرفته است که میتوانید از طریق لینک زیر مشاهده نمایید، نکته: برای پیاده سازی زرین پال در جنگو روش های و کتابخانه های مختلفی وجود دارد

آموزش پیاده سازی درگاه پرداخت زرین پال در جنگو [ویدئو]

مراحل پیاده‌سازی زرین‌ پال در جنگو

1. نصب کتابخانه‌های مورد نیاز

اولین مرحله برای ایجاد سیستم پرداخت آنلاین در جنگو، نصب کتابخانه‌های لازم است. شما باید از طریق pip کتابخانه requests را نصب کنید:

pip install requests

این کتابخانه برای ارسال درخواست‌های HTTP به API زرین‌پال لازم است.

2. تنظیمات پروژه

سپس باید تنظیمات مربوط به زرین‌پال را در فایل تنظیمات جنگو (settings.py) اضافه کنید. شما نیاز دارید تا اطلاعات کلید تسهیل خود را وارد کنید.

ZARINPAL_MERCHANT_ID = 'YOUR_MERCHANT_ID'

3. ایجاد مدل پرداخت

در این مرحله باید مدلی برای ذخیره‌سازی اطلاعات پرداخت تعریف کنید. به عنوان مثال:

from django.db import models

class Payment(models.Model):
    amount = models.PositiveIntegerField()
    authority = models.CharField(max_length=100)
    status = models.CharField(max_length=20)

4. ایجاد فرم پرداخت

حالا به ایجاد یک فرم برای کاربران می‌پردازیم تا جزئیات پرداخت خود را وارد کنند:

from django import forms

class PaymentForm(forms.Form):
    amount = forms.IntegerField(label='مقدار مبلغ')

5. ساخت ویو برای پردازش پرداخت

در این مرحله شما باید یک ویو برای پردازش پرداخت‌ها ایجاد کنید. در این ویو، با استفاده از API زرین‌پال به ایجاد یک درخواست پرداخت می‌پردازیم.

import requests
from django.shortcuts import render
from .forms import PaymentForm
from django.conf import settings
from .models import Payment

def payment_view(request):
    if request.method == 'POST':
        form = PaymentForm(request.POST)
        if form.is_valid():
            amount = form.cleaned_data['amount']
            # ایجاد درخواست پرداخت
            response = requests.post('https://api.zarinpal.com/pg/v4/request.json', json={
                'merchant_id': settings.ZARINPAL_MERCHANT_ID,
                'amount': amount,
                'callback_url': 'YOUR_CALLBACK_URL',
                'description': 'پرداخت بابت سفارش'
            })
            res = response.json()
            if res['data']['code'] == 100:
                authority = res['data']['authority']
                # ذخیره‌سازی در دیتابیس
                payment = Payment(amount=amount, authority=authority, status='pending')
                payment.save()
                # ریدایرکت به درگاه پرداخت
                return redirect(f'https://www.zarinpal.com/pg/StartPay/{authority}')
    else:
        form = PaymentForm()
    return render(request, 'payment.html', {'form': form})

6. ایجاد callback

پس از پرداخت، شما باید یک callback برای پردازش موفقیت یا عدم موفقیت پرداخت در نظر بگیرید. در این ویو می‌توانید وضعیت پرداخت را بروز کنید:

def verify_payment(request):
    authority = request.GET.get("Authority")
    if request.GET.get("Status") == "OK":
        # پردازش درخواست تأیید
        response = requests.post('https://api.zarinpal.com/pg/v4/verify.json', json={
            'merchant_id': settings.ZARINPAL_MERCHANT_ID,
            'amount': amount,  # مقدار باید از دیتابیس گرفته شود
            'authority': authority
        })
        res = response.json()
        if res['data']['code'] == 100:
            payment = Payment.objects.get(authority=authority)
            payment.status = 'success'
            payment.save()
            return HttpResponse('پرداخت با موفقیت انجام شد.')
        else:
            return HttpResponse('پرداخت ناموفق بود.')
    return HttpResponse('خطا در پردازش درخواست.')

نتیجه‌ گیری

با اجرای مراحل بالا، شما زرین‌ پال در جنگو پیاده‌ سازی کرده‌اید. استفاده از پرداخت آنلاین در جنگو می‌تواند به شما کمک کند تا فرایند خرید کاربران را تسهیل کنید و به راحتی تراکنش‌های مالی را مدیریت کنید.