首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Razorpay支付网关与Django集成,导致CSRF验证失败

将Razorpay支付网关与Django集成,导致CSRF验证失败
EN

Stack Overflow用户
提问于 2022-05-03 09:33:10
回答 1查看 225关注 0票数 0

这个问题以前曾问过https://stackoverflow.com/questions/69886006/razorpay-django-integration-with-callback-url-csrf-token-missing-or-incorrect,但我没有50个口碑点来继续讨论这个答案本身。

短版

本质上,问题归结为-我有一个外部URL,它将POST数据发送给我的Django应用程序。我想访问这个帖子数据,但是Django提供了403错误(CSRF令牌丢失)。

详细版本

我试图将Razorpay的托管支付网关添加到我的Django项目中。我已经将URL传递给回调功能中的以下函数。

正如前面的答案所指定的,我尝试使用csrf_exempt装饰器并将https://api.razorpay.com URL作为CSRF_TRUSTED_DOMAINS添加到settings.py文件中,但问题仍然存在。当付款成功时,我仍然从Django那里得到403错误。

代码语言:javascript
运行
复制
@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文件

代码语言:javascript
运行
复制
..
..
..
CSRF_TRUSTED_ORIGINS = ["https://api.razorpay.com"]
..
..

正在使用的版本:

  • Django = 4.0.3
  • Razorpay API = 1.3.0

我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-27 02:24:46

这个问题早就解决了。

解决方案是在启动请求的函数上添加@csrf_exempt标记到Razorpay网关,而不是接收来自支付网关的请求的函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72097413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档