• 1402/12/22

ارور مربوط به زرین پال :

سلام اقای اردوخانی عزیز من جلسه 130 هستم و قدم به قدم طبق کدهای خودتون پیش میرم برای درگاه پرداخت زرین پال و مرچنت آیدی هم از سمت زرین گرفتم ولی وقتی قرارش میدم این ارور رو میگیرم ممنون میشم کمکم کنید و بگید که اون مرچنت رو به چه شکلی باید قرار بدم که تایپ ارور نگیرم با تشکر  
 

  • 1402/12/23
  • ساعت 09:30

سلام خدمت شما دوست عزیز

در یک قسمت از کدتون شما یک لیست دارین که قصد دارین با index یک مقدار رو بدست بیارین اما گویا یک متن به عنوان کلید ارسال کردین 


  • 1402/12/23
  • ساعت 10:51

ببینید توی آموزش جنگو شما مراحل رو پیش میرید تا جایی که به دلیل مسائل امنیتی مرچنت آیدی رو نشون نمیدید که به چه نحوی قرار میدید چون مرچنت آیدی هم دارای رقم هست و هم حروف ولی اگه طبق سورس کد اصلی خودش این ارقام و حروف رو داخل ' ' قرار بدیم ارور میگیریم طبعا من میخوام ببینم شما به چه شکلی قرارش دادید؟ 
این هم تصویر مربوط به Views - RequestPayment 


  • 1402/12/26
  • ساعت 08:47

از این مقدار استفاده کنین دوست من

"00000000-0000-0000-0000-000000000000"

داخل فایل نمونه کدی که از خود سایت اصلی دانلود میکنین یک فایل readme هستش

اون رو مطالعه کنین


  • 1403/01/04
  • ساعت 17:21

تصویر ارور 

***
تصویر کارکرد صحیح قسمت سندباکس وقتی توی ستینگ True هست 

 

درود آقای اردوخانی سال نوتون مبارک و سرشار از حال خوب باشه 
من این اولین پروژه واقعیم بعد از آموزش های جنگوی شما هست و هیچی به جز این زرین پال اینقدر اذیتم نکرد 90 درصد سایت کاراش انجام شده و فقط این مونده و بیچاره کرده منو لطفا کمکم کنید حل بشه با کمک شما 
ببینید من هر مقداری چه مرچنت آیدی خودم و چه xxx و چه 0000 توی قسمت مرچنت گذاشتم فایده نداشت و همون اروری که بالاتر گفتم بهتون رو گرفتم پس کلا رفتم سمت متد جدید زرین که همون سند باکس هست و نتیجه گرفتم توی محیط سند باکس و تستی قشنگ کار میکنه همه چی سبد خریدم مبلغش میاد و .... ولی وقتی سند باکس رو فالس میکنم که www به آدرس اضافه بشه و به درگاه واقعی زرین پال متصل بشه اون مبلغ سبد خرید کاربر ارور میگیرم و ارور خیلی common ای هم هست که تا جایی که من سرچ کردم و علم درموردش پیدا کردم کشلش اینه که httpresponse ریترن نمیشه که من توی کدهام همه جا این رو حتی توی رندرها و ری دایرکت ها چک کردم حتی پروژه کاربر هم اسمشو برمیگردونه و مشکلی نیست در پایین تصویر ارور و کدهای views رو واستون میذارم لطفا مطالعه کنید و بهم کمک کنید با تشکر 

کدهای views order_module 
from datetime import time
from django.contrib.auth.decorators import login_required
from django.contrib.sites import requests
from django.http import HttpRequest, JsonResponse, HttpResponse, request
from django.shortcuts import redirect, render
from django.urls import reverse
from django.views import View
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from product_module.models import Product
from .models import Order, OrderDetail
from django.conf import settings
import requests
import json

# Create your views here.

#
# ? 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
description = 'پرداخت اصفهان ابزار '
callback_url = 'http://127.0.0.1:8000/order/verify/'


def add_product_to_order(request: HttpRequest):
product_id = int(request.GET.get('product_id'))
count = int(request.GET.get('count'))
if count < 1:
return JsonResponse({
'status': 'invalid_count',
'text': 'مقدار وارد شده معتبر نمی باشد',
'confirm_button_text': 'مرسی از شما',
'icon': 'warning'

})
if request.user.is_authenticated:
product = Product.objects.filter(id=product_id, is_active=True, is_delete=False).first()
if product is not None:
current_order, created = Order.objects.get_or_create(is_paid=False, user_id=request.user.id)
current_order_detail = current_order.orderdetail_set.filter(product_id=product_id).first()
if current_order_detail is not None:
current_order_detail.count += count
current_order_detail.save()
else:
new_detail = OrderDetail(order_id=current_order.id, product_id=product_id, count=count)
new_detail.save()

return JsonResponse({
'status': 'success',
'text': 'محصول مورد نظر با موفقیت به سبد خرید شما اضافه شد',
'confirm_button_text': 'باشه ممنونم',
'icon': 'success'
})
else:
return JsonResponse({
'status': 'not_found',
'text': 'محصول مورد نظر یافت نشد',
'confirm_button_text': 'مرسییییی',
'icon': 'error'
})
else:
return JsonResponse({
'status': 'not_auth',
'text': 'برای افزودن محصول به سبد خرید ابتدا می بایست وارد سایت شوید',
'confirm_button_text': 'ورود به سایت',
'icon': 'error'
})


@method_decorator(login_required, name='dispatch')
class OrderPayView(View):
def get(self, request):
current_order, created = Order.objects.get_or_create(is_paid=False, user_id=request.user.id)
total_price = current_order.calculate_total_price()
data = {
'MerchantID': settings.MERCHANT,
'Amount': total_price,
'Description': description,
'CallbackURL': callback_url,
}
data = json.dumps(data)
headers = {'content-type': 'application/json', 'content-length': str(len(data))}
res = requests.post(ZP_API_REQUEST, data=data, headers=headers)
if res.status_code == 200:
response = res.json()
if response['Status'] == 100:
url = f"{ZP_API_STARTPAY}{response['Authority']}"
return redirect(url)
else:
print(res.json()['errors'])
return HttpResponse(str(res.json()['errors']))


@method_decorator(login_required, name='dispatch')
class VerifyPayView(View):
def get(self, request):
current_order, created = Order.objects.get_or_create(is_paid=False, user_id=request.user.id)
total_price = current_order.calculate_total_price()
authority = request.GET['Authority']
data = {
'MerchantID': settings.MERCHANT,
'Amount': total_price,
'Authority': authority,
}
data = json.dumps(data)
headers = {'content-type': 'application/json', 'content-length': str(len(data))}
res = requests.post(ZP_API_VERIFY, data=data, headers=headers)
if res.status_code == 200:
response = res.json()
if response['Status'] == 100:
# return HttpResponse({'Status': response['Status'], 'RefID': response['RefID']})
return render(request, 'payment_result.html')

else:
# return HttpResponse({'Status': response['Status'], 'RefID': response['RefID']})
return render(request, 'payment_result_failed.html')
else:
return HttpResponse('پرداخت ناموفق')
پیشاپیش تشکر 

 


  • 1403/01/05
  • ساعت 23:09

ممنونم دوست من

سال نو شما هم مبارک باشه

لطفا از debugger استفاده کنین و خط به خط با کد برید جلو

قسمتی از کد شما هست که احتمالا با if چک کردین ودرصورت درست بودن شرط response رو بر می‌میگردونین 

یک view در هر صورت باید HttpRespone داشته باشه