android片段中的Razorpay回调不起作用

Posted

技术标签:

【中文标题】android片段中的Razorpay回调不起作用【英文标题】:Razorpay callbacks in android fragment is not working 【发布时间】:2021-04-19 04:15:42 【问题描述】:

Razorpay 回调不适用于片段而不是使用片段的活动,请提供解决方案如果有人知道,请提前致谢。

私人乐趣 startPayment()

    val activity: Activity = requireActivity()
    val co = Checkout()
    try 
        val options = JSONObject()
        options.put("name", "Vendor")
        options.put("description", " for Order")
        //You can omit the image option to fetch the image from dashboard
        options.put("image", "https://rzp-mobile.s3.amazonaws.com/images/rzp.png")
        options.put("currency", "INR")
        val payment: String = "1"//getcart?.CartTotal.toString()
        // amount is in paise so please multiple it by 100
        //Payment failed Invalid amount (should be passed in integer paise. Minimum value is 100 paise, i.e. ₹ 1)
        var total = payment.toDouble()
        total = total * 100
        options.put("amount", total)
        val preFill = JSONObject()
        preFill.put("email", "hell@gmail.com")
        preFill.put("contact", "9898989898")
        options.put("prefill", preFill)
        co.open(requireActivity(), options)
     catch (e: Exception) 
        Toast.makeText(activity, "Error in payment: " + e.message, Toast.LENGTH_SHORT).show()
        e.printStackTrace()
    


override fun onPaymentSuccess(s: String?) 
    toast("onPaymentSuccess")
    Log.i(TAG, "onPaymentSuccess: $s")


override fun onPaymentError(i: Int, s: String?) 
    Log.e(TAG,  "error code "+i.toString()+" -- Payment failed "+s.toString())
    try 
        toast("Payment error please try again")
     catch (e : Exception) 
        Log.e("OnPaymentError", "Exception in onPaymentError", e);
    

【问题讨论】:

请分享你的代码 请检查@RajendraMahato 上面的代码是否已编辑 你添加Checkout.preload(getApplicationContext());在你的 coCreate 方法中?顺便说一句,您的代码看起来不错,它应该可以工作。也请分享一些日志 做一件事在活动而不是片段中启动此付款流程。我记得,我也面临同样的问题 yes Checkout.preload(getApplicationContext()) added ...这是为了更快地加载razorpay屏幕 【参考方案1】:
    金额应为整数和paise。 实现片段主机活动的结果侦听器并在那里覆盖错误和成功函数。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review【参考方案2】:

在片段中您不会获得 Razorpay 回调函数,因此您应该在活动中实现 PaymentResultListener 或 PaymentResultWithDataListener 并从您调用片段的活动中调用您的 api 调用以获取剃刀支付响应。

在您的活动中:

@Override
public void onPaymentSuccess(String s, PaymentData paymentData) 
    try 
        FeeFragment feeList = (FeeFragment) mViewPager.getAdapter().instantiateItem(mViewPager, mViewPager.getCurrentItem());
        feeList.checkRazorResponse(paymentData, true);
     catch (Exception e) 
        Log.e("Exception in success", e.toString());
        e.printStackTrace();
    

在你的片段中:

public void checkRazorResponse(PaymentData paymentData, boolean success) 
    if (success) 
        updatePaymentStatus(paymentData);
        //do your api call
     else 
        //handle error message
    

【讨论】:

以上是关于android片段中的Razorpay回调不起作用的主要内容,如果未能解决你的问题,请参考以下文章

wordpress 中的 Razorpay 插件不起作用

从片段替换片段时,onRequestPermissionsResult 回调不起作用

片段中的 Android ListView ArrayAdapter 不起作用

片段中的按钮在android中不起作用

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

片段隐藏在Android中不起作用