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回调不起作用的主要内容,如果未能解决你的问题,请参考以下文章
从片段替换片段时,onRequestPermissionsResult 回调不起作用