Django集成Razorpay时报错:request()接收到意外关键字参数'amount'
解决Django集成Razorpay时创建订单的参数错误问题
你遇到的这个错误,核心原因是创建订单时的参数传递格式不符合Razorpay Python SDK的要求。咱们一步步来理清楚:
问题根源
你原来的代码是直接把amount、currency这些参数作为独立的关键字参数传给client.order.create():
resp = client.order.create(amount=5000, currency='INR', receipt='TR110462011', payment_capture='1')
但Razorpay的SDK要求,订单相关的参数需要打包成一个字典,作为第一个参数传入create()方法,而不是分散的关键字参数。SDK内部的request()方法并没有预期接收这些零散的关键字参数,所以才会抛出request() got an unexpected keyword argument 'amount'的错误。
修正后的代码
把所有订单参数放进一个字典里,再传给create()方法就可以了:
client = razorpay.Client(auth=("<key>", "<secret>")) # 将订单参数打包为字典 order_options = { 'amount': 5000, # 注意:金额是最小货币单位,5000代表50.00 INR 'currency': 'INR', 'receipt': 'TR110462011', 'payment_capture': '1' } resp = client.order.create(order_options)
额外的验证小提示
- 升级SDK版本:确保你用的是最新版的Razorpay SDK,可以执行
pip install --upgrade razorpay升级,避免版本兼容问题。 - 确认金额格式:Razorpay要求金额传入最小货币单位(比如印度卢比的分),你当前代码里的5000对应50卢比是正确的,别不小心传成50导致金额错误。
- 密钥有效性:虽然这个错误和认证无关,但还是要确认你用的
<key>和<secret>是从Razorpay后台获取的有效密钥(测试环境用测试密钥,生产环境用生产密钥)。
这样修改后应该就能正常创建订单了,如果还有其他问题,可以查看SDK的官方文档确认参数细节,或者检查控制台的错误日志进一步排查。
内容的提问来源于stack exchange,提问作者shellbot97
相关产品推荐
相关产品推荐

