• 1402/01/06

درگاه پرداخت زرینپال :

سلام اقای اردوخانی خسته نباشید

دستورات برای کانفیگ زرینپال عوض شده میشه توضیح بدید چیکار کنم؟

سورس جدید:

from django.conf import settings
import requests
import json

# ? sandbox merchant
if settings.SANDBOX:
    sandbox = 'sandbox'
else:
    sandbox = 'www'

ZP_API_REQUEST = f"https://{sandbox}.zarinpal.com/pg/rest/WebGate/PaymentRequest.json"
ZP_API_VERIFY = f"https://{sandbox}.zarinpal.com/pg/rest/WebGate/PaymentVerification.json"
ZP_API_STARTPAY = f"https://{sandbox}.zarinpal.com/pg/StartPay/"

amount = 1000  # Rial / Required
description = "توضیحات مربوط به تراکنش را در این قسمت وارد کنید"  # Required
phone = 'YOUR_PHONE_NUMBER'  # Optional
# Important: need to edit for realy server.
CallbackURL = 'http://127.0.0.1:8080/order/verify-payment/'


def send_request(request):
    data = {
        "MerchantID": settings.MERCHANT,
        "Amount": amount,
        "Description": description,
        "Phone": phone,
        "CallbackURL": CallbackURL,
    }
    data = json.dumps(data)
    # set content length by data
    headers = {'content-type': 'application/json', 'content-length': str(len(data))}
    try:
        response = requests.post(ZP_API_REQUEST, data=data, headers=headers, timeout=10)

        if response.status_code == 200:
            response = response.json()
            if response['Status'] == 100:
                return {'status': True, 'url': ZP_API_STARTPAY + str(response['Authority']),
                        'authority': response['Authority']}
            else:
                return {'status': False, 'code': str(response['Status'])}
        return response

    except requests.exceptions.Timeout:
        return {'status': False, 'code': 'timeout'}
    except requests.exceptions.ConnectionError:
        return {'status': False, 'code': 'connection error'}


def verify(authority):
    data = {
        "MerchantID": settings.MERCHANT,
        "Amount": amount,
        "Authority": authority,
    }
    data = json.dumps(data)
    # set content length by data
    headers = {'content-type': 'application/json', 'content-length': str(len(data))}
    response = requests.post(ZP_API_VERIFY, data=data, headers=headers)

    if response.status_code == 200:
        response = response.json()
        if response['Status'] == 100:
            return {'status': True, 'RefID': response['RefID']}
        else:
            return {'status': False, 'code': str(response['Status'])}
    return response
  • 1402/01/08
  • ساعت 21:39

سلام دوست من

تغییر خاصی نداشته دوست من

صرفا آدرس ها یه مقدار تنظیماتشون تغییر کرده

مواردی که مورد نیاز هستش :


amount = 1000  # Rial / Required
description = "توضیحات مربوط به تراکنش را در این قسمت وارد کنید"  # Required
phone = 'YOUR_PHONE_NUMBER'  # Optional
# Important: need to edit for realy server.
CallbackURL = 'http://127.0.0.1:8080/order/verify-payment/'

اطلاعات مورد نظر رو پر کنین تا درخواست ارسال بشه


  • 1402/01/09
  • ساعت 08:39

سلام

من هم مشکل دارم با تنظیمات جدید

SANDDBOX باید در setting آورده بشه که برنامه Error میده گویی که نمیشناسه این فرمت رو.

توضیح بیشتری بفرمایید ممنون میشم.


  • 1402/01/09
  • ساعت 11:05

یک متغیر با نام SANDBOX داخل فایل settings.py تعریف کنین و بهش true یا false بدین

اگه true باشه ینی حالت تست و دمو هستش و اگه false بدین ینی قصد دارین از درگاه اصلی استفاده کنین


  • 1402/01/11
  • ساعت 20:22

سلام 

ممنون اقای اردوخانی


  • 1402/01/11
  • ساعت 00:02

خواهش میکنم دوست من

موفق باشین :)


  • 1402/01/13
  • ساعت 12:59

استاد سلام، وقتتون بخیر 

منم باهاش مشکل دارم،در حالت تستی ارور 

'dict' object has no attribute 'headers' رو میده.

لطفا منم راهنمایی کنید.


  • 1402/01/14
  • ساعت 23:24

کدی که نوشتین رو دقیقا مطابق با کد اموزش پیاده سازی کنین دوست من

کد آموزش به درستی کار میکنه