【发布时间】:2022-06-22 13:24:08
【问题描述】:
之前有人问过这个问题here,但我没有 50 点声望点来继续讨论这个答案本身。
短版
基本上,问题归结为 - 我有一个将 POST 数据发送到我的 Django 应用程序的外部 URL。我想访问这个 POST 数据,但 Django 给出 403 错误(缺少 CSRF 令牌)。
详细版
我正在尝试将 Razorpay 的 Hosted Payment Gateway 添加到我的 Django 项目中。我已将 URL 传递给回调功能中的以下函数。
如上一个答案中所述,我尝试使用csrf_exempt 装饰器并将https://api.razorpay.com URL 添加为CSRF_TRUSTED_DOMAINS 在settings.py 文件中,但问题仍然存在。付款成功后,我仍然收到 Django 的 403 错误。
@csrf_exempt
def course_purchase_callback(request):
payment_id = request.POST.get("razorpay_payment_id")
order_id = request.POST.get("razorpay_order_id")
signature = request.POST.get("razorpay_signature")
client = razorpay.Client(auth=(os.getenv("RZP_ID"), os.getenv("RZP_SECRET")))
verify = client.utility.verify_payment_signature({
"razorpay_payment_id": payment_id,
"razorpay_order_id": order_id,
"razorpay_signature": signature,
})
settings.py 文件
..
..
..
CSRF_TRUSTED_ORIGINS = ["https://api.razorpay.com"]
..
..
正在使用的版本:
- Django = 4.0.3
- Razorpay API = 1.3.0
我在这里缺少什么?
【问题讨论】:
-
你好@Japkeerat Singh 我的意思是你能提供你的回调网址