Django集成Razorpay支付网关报错:Amount参数无需发送且不应传入
问题修复方案
这个错误的核心原因是参数名大小写不符合Razorpay API要求:Razorpay Python SDK创建订单时,金额参数要求使用全小写的amount,你的代码中使用了首字母大写的Amount,被API判定为非法多余参数,触发校验错误。
需修改的两处代码
1. views.py 代码修改
找到创建订单的行,将参数Amount改为小写amount,同时修正代码缩进问题,修改后代码如下:
from django.shortcuts import render import razorpay from .models import coffee def index(request): if request.method=='POST': Name = request.POST.get("Name") amount = int(request.POST.get("Amount")) * 100 client = razorpay.Client(auth=("rzp_test_YhfEhfejrkkjdkfju","t5MRPkjfijdh23845kejkej")) # 把参数Amount改为小写amount payment = client.order.create({'amount':amount, 'currency':'INR'}) print(payment) Coffee = coffee(Name=Name, Amount=amount , payment_id = payment['id'] ) # 若需要将订单存入数据库需补充save方法 Coffee.save() return render(request,'index.html',{'payment':payment}) return render(request,'index.html') def success(request): if request.method == 'POST': a = request.POST print(a) return render(request,"success.html")
注:新版Razorpay订单API已默认自动捕获支付,不需要额外传递
payment_capture参数,可直接删除避免多余参数报错。
2. index.html 代码修改
找到前端调用支付的script标签,将{{payment.Amount}}改为小写{{payment.amount}},修改后对应代码如下:
<script src="https://checkout.razorpay.com/v1/checkout.js" data-key="rzp_test_YhfEhfejrkkjdkfju" data-amount="{{payment.amount}}" data-currency="INR" data-order_id="{{payment.id}}" data-buttontext="Pay with Razorpay" data-name="Coffee Corp" data-description="A Wild Sheep Chase is the third novel by Japanese author Haruki Murakami" data-image="https://example.com/your_logo.jpg" data-prefill.name="Gaurav Kumar" data-prefill.email="gaurav.kumar@example.com" data-theme.color="#F37254" ></script>
修改完以上两处即可解决该报错。
内容的提问来源于stack exchange,提问作者ketanddadhe
相关产品推荐
相关产品推荐

