Paytm支付网关支付正常但支付成功后无法跳转回App/Activity问题咨询
嘿,我之前也踩过Paytm回调跳转的坑,结合你的情况给你几个具体的解决方向:
别用Paytm官方测试回调页面当前端跳转URL
你现在配置的CALLBACK_URL = "https://pguat.paytm.com/paytmchecksum/paytmCallback.jsp"是Paytm给Web端测试用的页面,它只会显示支付结果,没法唤起你的App。你需要换成App的自定义Scheme/Deep Link,用来直接触发App内的目标Activity。配置App的跳转Scheme并验证
首先在AndroidManifest.xml里给你要跳转的Activity添加,示例如下: <activity android:name=".YourPaymentResultActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 自定义Scheme,比如paytmdemo://callback --> <data android:scheme="paytmdemo" android:host="callback" /> </intent-filter> </activity>配置完后用adb命令测试能不能正常唤起:
adb shell am start -W -a android.intent.action.VIEW -d "paytmdemo://callback"如果能成功打开目标Activity,说明Scheme配置没问题。
调整Paytm回调URL和商户后台配置
把你的CALLBACK_URL改成刚才的Scheme链接,比如paytmdemo://callback。同时登录Paytm的staging商户后台,检查前端回调URL是否也设置成了这个Scheme(注意区分前端回调负责跳转App,后端回调负责订单状态更新,你现在后台数据正常说明后端回调是好的)。检查Paytm SDK的回调逻辑
如果你用的是Paytm Android SDK,确保在支付发起的Activity里重写onActivityResult方法,接收Paytm返回的支付结果,比如:@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PAYTM_REQUEST_CODE) { // 这里可以处理支付结果,手动跳转回目标页面(如果Scheme没触发的话) Intent intent = new Intent(this, YourPaymentResultActivity.class); intent.putExtra("payment_data", data.getExtras()); startActivity(intent); } }
从你提供的截图来看,支付完成后应该是停在了Paytm的成功页面没有触发跳转,核心问题就是前端回调URL没有指向能唤起你App的链接,按上面的步骤调整应该就能解决啦。
内容的提问来源于stack exchange,提问作者Rajesh Wolf

