Razorpay支付集成报错:未找到合适的支付方式(No appropriate payment method found)求助
问题原因排查与解决方案
我帮你梳理了代码和常见问题,找到几个核心原因,咱们一步步解决:
1. 最关键的错误:Checkout的Key ID配置错误
看你startPayment方法里的这行代码:
checkout.setKeyID("my key my secret key")
这里错误地把Key ID和Secret Key拼接在一起传入了!setKeyID只需要单独传入你在Razorpay平台获取的Key ID(就是创建Order时用的第一个参数),Secret Key是后端专用的敏感信息,绝对不能暴露在前端代码里!
2. 验证Order参数的有效性
虽然你创建Order的代码逻辑没问题,但还是要确认:
amount确实是最小货币单位(比如50000对应500印度卢比),这个是正确的currency设置为INR,且你的Razorpay账号(测试账号默认支持)允许使用该货币- 创建Order时返回的
order对象是有效状态,没有抛出异常
修复后的完整代码示例
修正Key ID配置后的代码如下:
val razorpay = RazorpayClient("your_key_id", "your_secret_key") val orderRequest = JSONObject() orderRequest.put("amount", 50000); // amount in the smallest currency unit orderRequest.put("currency", "INR"); orderRequest.put("receipt", "order_rcptid_11") try { val order: Order = razorpay.Orders.create(orderRequest) Timber.d("order : $order") startPayment(order) } catch (e: RazorpayException) { Timber.e(e) } private fun startPayment(order: Order) { val checkout = Checkout() // 仅传入Key ID,不要包含Secret Key checkout.setKeyID("your_key_id") val activity: Activity = this try { checkout.open(activity, order.toJson()) } catch (e: Exception) { Toast.makeText(activity, "Error in payment: " + e.message, Toast.LENGTH_LONG).show() e.printStackTrace() } }
额外排查点(若修复后仍报错)
- 确认设备网络正常,能访问Razorpay支付网关
- 检查是否使用了测试环境的Key ID(生产环境Key在测试场景下会限制支付方式)
- 确保Razorpay SDK是最新版本,旧版本可能存在兼容性问题
内容的提问来源于stack exchange,提问作者subrata sharma
相关产品推荐
相关产品推荐

