在集成 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 支付网关期间没有支付?的主要内容,如果未能解决你的问题,请参考以下文章

返回导航在 Razorpay 支付网关的钱包中不起作用

iPhone中的支付网关集成[关闭]

登录后如何重定向到razorpay 支付弹出窗口?

wordpress 中的 Razorpay 插件不起作用

如何在 Android Studio 中实现 razorpay 定期付款?

沙盒测试模式下 Android 中的 Paypal 支付网关集成问题