Return 导航在 Razorpay 支付网关的钱包中不起作用
Return navigation is not working in wallets for Razorpay payment gateway
我已经使用 RazorPay Android SDK 作为我产品的支付网关。我已经按照他们描述的那样实施了正确的代码,该代码在卡支付的实时模式下运行良好。但是像 PhonePe 和 GPay 这样的钱包会出现问题。
问题是当用户选择任何钱包时,它会以适当的金额浏览钱包。然后用户可以从 RazorPay 仪表板中填充的钱包中支付金额。但是在从钱包支付金额后,流程会自动导航到我的应用程序的支付页面,我在该页面上实现了 RazorPay onSuccess 和 onFailour 方法,而不是支付流程停留在钱包本身,所以我无法使用更新我的服务器付款详情,也无法更新付款 UI。
我已在下面添加了我为付款实施的代码。
chackout = new Checkout();
chackout.setKeyID(razorpayKey);
try {
JSONObject options = new JSONObject();
options.put("name", "Company");
options.put("description", "Advance for "+mBookings.getPartyName());
options.put("currency", "INR");
options.put("amount", finalAdvAmount);
options.put("send_sms_hash",true);
JSONObject preFill = new JSONObject();
preFill.put("email", ud.getUserMailId());
preFill.put("contact", mBookings.getBookingPersonPhoneNumber());
options.put("prefill", preFill);
chackout.open(this, options);
} catch (Exception e) {
AppUtils.showSnackBar(this, "There is some issues when starting payment. Please try
after sometimes");
}
我还实现了 PaymentResultWithDataListener
,通过它我也可以处理 onSuccess
和 onFailour
方法。
有人遇到过同样的问题吗?
您提供的代码无关紧要;回调监听器才是最重要的。在 Activity
(您也没有提供)中注册这些回调时,当前显示的 Fragment
并不重要。您所需要的只是 Activity
中 NavController
的句柄 - 以便它可以在回调时导航。最终你需要检查显示的是哪个 Fragment
- 然后只触发相应的 NavAction
- 因为并非每个 NavAction
都不适用于每个 Fragment
(除非全局) .
经过长时间的努力,我得到了工作正常的答案。要使用任何钱包,如 phonePe 或 GPay,我们需要在清单中使用 <queries>
和它们的包,并使用适当的导航意图。
如下所示:
<queries>
<!--google pay-->
<package android:name="com.google.android.apps.nbu.paisa.user"/>
<!--phonePe-->
<package android:name="com.phonepe.app"/>
<intent>
<action android:name="android.intent.action.SEND"/>
</intent>
<intent>
<action android:name="com.google.android.youtube.api.service.START" />
</intent>
</queries>
我已经使用 RazorPay Android SDK 作为我产品的支付网关。我已经按照他们描述的那样实施了正确的代码,该代码在卡支付的实时模式下运行良好。但是像 PhonePe 和 GPay 这样的钱包会出现问题。
问题是当用户选择任何钱包时,它会以适当的金额浏览钱包。然后用户可以从 RazorPay 仪表板中填充的钱包中支付金额。但是在从钱包支付金额后,流程会自动导航到我的应用程序的支付页面,我在该页面上实现了 RazorPay onSuccess 和 onFailour 方法,而不是支付流程停留在钱包本身,所以我无法使用更新我的服务器付款详情,也无法更新付款 UI。
我已在下面添加了我为付款实施的代码。
chackout = new Checkout();
chackout.setKeyID(razorpayKey);
try {
JSONObject options = new JSONObject();
options.put("name", "Company");
options.put("description", "Advance for "+mBookings.getPartyName());
options.put("currency", "INR");
options.put("amount", finalAdvAmount);
options.put("send_sms_hash",true);
JSONObject preFill = new JSONObject();
preFill.put("email", ud.getUserMailId());
preFill.put("contact", mBookings.getBookingPersonPhoneNumber());
options.put("prefill", preFill);
chackout.open(this, options);
} catch (Exception e) {
AppUtils.showSnackBar(this, "There is some issues when starting payment. Please try
after sometimes");
}
我还实现了 PaymentResultWithDataListener
,通过它我也可以处理 onSuccess
和 onFailour
方法。
有人遇到过同样的问题吗?
您提供的代码无关紧要;回调监听器才是最重要的。在 Activity
(您也没有提供)中注册这些回调时,当前显示的 Fragment
并不重要。您所需要的只是 Activity
中 NavController
的句柄 - 以便它可以在回调时导航。最终你需要检查显示的是哪个 Fragment
- 然后只触发相应的 NavAction
- 因为并非每个 NavAction
都不适用于每个 Fragment
(除非全局) .
经过长时间的努力,我得到了工作正常的答案。要使用任何钱包,如 phonePe 或 GPay,我们需要在清单中使用 <queries>
和它们的包,并使用适当的导航意图。
如下所示:
<queries>
<!--google pay-->
<package android:name="com.google.android.apps.nbu.paisa.user"/>
<!--phonePe-->
<package android:name="com.phonepe.app"/>
<intent>
<action android:name="android.intent.action.SEND"/>
</intent>
<intent>
<action android:name="com.google.android.youtube.api.service.START" />
</intent>
</queries>