在集成 Razorpay 支付网关期间没有支付?
Posted
技术标签:
【中文标题】在集成 Razorpay 支付网关期间没有支付?【英文标题】:During Integrating Razorpay Payment Gateway Payment is not happening? 【发布时间】:2020-09-26 04:11:38 【问题描述】:这是显示的错误消息 I/chromium: [INFO:CONSOLE(1)] "Uncaught TypeError: window.getDeviceDetails is not a function",来源:https://api.razorpay.com/v1/checkout/public?version=1.5.16&library=checkoutjs&platform=android(1)
在这方面帮助我
【问题讨论】:
当我通过卢比时。 10 支付然后得到同样的错误;而如果我传递更大的值,例如 Rs。 250,那么在我的情况下它工作正常。可能有最低交易限额... 对不起..但它还没有工作..同样的错误 @tejraj,发生这种情况是因为您提供的资金被 Razorpay 视为 paise,而您可以支付的最低金额为 1Rs(即 100)。 我也有同样的问题。即使我提供 200 的金额,它也不起作用。当我在后端的控制台中调试金额和订单时,金额打印正确,但仅在创建订单后的前端金额未定义:/。谁能告诉我如何解决它?即使使用了 parseInt 和 Float 也没有用。 【参考方案1】:尝试运行此代码:
@override
void initState()
super.initState();
_razorpay = Razorpay();
_razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess);
_razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, _handlePaymentError);
_razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, _handleExternalWallet);
@override
void dispose()
super.dispose();
_razorpay.clear();
void openCheckout() async
var options =
'key': 'rzp_test_1DP5mmOlF5G5ag',
'amount': 2000,
'name': 'Acme Corp.',
'description': 'Fine T-Shirt',
'prefill': 'contact': '8888888888', 'email': 'test@razorpay.com',
'external':
'wallets': ['paytm']
;
try
_razorpay.open(options);
catch (e)
debugPrint(e);
void _handlePaymentSuccess(PaymentSuccessResponse response)
Fluttertoast.showToast(
msg: "SUCCESS: " + response.paymentId, timeInSecForios: 4);
void _handlePaymentError(PaymentFailureResponse response)
Fluttertoast.showToast(
msg: "ERROR: " + response.code.toString() + " - " + response.message,
timeInSecForIos: 4);
void _handleExternalWallet(ExternalWalletResponse response)
Fluttertoast.showToast(
msg: "EXTERNAL_WALLET: " + response.walletName, timeInSecForIos: 4);
当您提供的资金格式不正确时,会发生上述错误。 RazorPay 只接受派斯的钱,因此如果您以十进制格式(即双精度)或任何小于 100 的值提供钱,那么它将引发该错误。因此,如果您有任何十进制值,请尝试将其转换为整数 paise。我也附上一个小代码供参考。
RegExp regex = RegExp(r"([.]*0)(?!.*\d)");
double money = double.parse(widget.totalMoney);
double tMoney = money*100;
String stringMoney = tMoney.toString().replaceAll(regex, '');
int totalMoney = int.parse(stringMoney);
正则表达式将从 stringMoney 中删除小数点后的零。或者直接转成字符串也一样。
希望这会有所帮助:)
【讨论】:
【参考方案2】:这可能是密钥 ID 和密钥密码不匹配的问题。尝试仔细检查代码是否具有一致的 Key ID 和 Key Secret。尤其是在您从测试帐户切换到真实帐户的情况下。
【讨论】:
【参考方案3】:请重新检查您的 API 密钥是否有效。这是由于您的 API 密钥或密码有错误。
【讨论】:
以上是关于在集成 Razorpay 支付网关期间没有支付?的主要内容,如果未能解决你的问题,请参考以下文章