Android paytm 集成 - 无法显示支付页面

Android paytm integration - Unable to show Payment Page

我正在尝试将 paytm 支付集成到我的 android 应用程序中。交易初始化和 CHECKSUM 验证,而且我能够获得交易令牌,但我无法在我的手机上获得 paytm UI。

下面提到的是我得到的日志。我在日志中没有看到任何错误消息。

I/Timeline: Timeline: Activity_launch_request time:611492681 intent:Intent { 
cmp=com.hago.lucky.seven/com.paytm.pgsdk.PaytmPGActivity (has extras) }
W/ActivityThread: handleWindowVisibility: no activity for token 
android.os.BinderProxy@f9c15c4
I/WebViewFactory: Loading com.google.android.webview version 81.0.4044.138 (code 404413803)
I/cr_LibraryLoader: Loaded native library version number "81.0.4044.138"
W/ago.lucky.seve: Accessing hidden method Landroid/content/Context;-    >bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handl    er;Landroid/os/UserHandle;)Z (light greylist, reflection)
D/EgretLoader: EgretLoader(Context context)
D/EgretLoader: The context is not activity
W/ContentCatcher: Failed to notify a WebView
I/ago.lucky.seve: ProcessProfilingInfo new_methods=0 is saved saved_to_disk=0     resolve_classes_delay=8000
D/ViewRootImpl[PaytmPGActivity]: changeCanvasOpacity: opaque=false
D/ViewRootImpl[PaytmPGActivity]: changeCanvasOpacity: opaque=true
W/ContentCatcher: Failed to notify a WebView

我在build.gradle中添加了implementation 'com.paytm:pgplussdk:1.4.4' 我在我的应用级别 build.gradle 中添加了 maven { url "https://artifactory.paytm.in/libs-release-local" }

我的代码会出现什么错误?提前致谢。

我已经与 Paytm 支持者分享了我实现的逻辑。

发现问题是,我有从 Play 商店下载的 Paytm 应用程序并正在尝试暂存集成。一旦我卸载了 Paytm 应用程序,它就成功运行了。

我从 Paytm 支持那里得到了这些信息

我会建议您迁移到新的 Paytm 一体化 SDK。它很容易集成。即使客户没有在他的 phone 上安装 paytm 应用程序,它也可以工作。 Paytm 正式迁移到 All-in-one SDK。在项目级别 gradle.

使用以下依赖项
  maven {
            url "https://artifactory.paytm.in/libs-release-local"
        }

在模块级别使用gradle

// implementation ‘com.paytm.appinvokesdk:appinvokesdk:1.2’

您需要从您的服务器生成交易令牌。它与我们之前用于 paytm 的校验和相同,但代码不同。因此,请仅使用新的生成交易令牌 php 代码。 获得令牌后,启动 paytm 支付交易管理器。

public void startPaytmPayment (String token){
    txnTokenString = token;
    // for test mode use it 
   // String host = "https://securegw-stage.paytm.in/";
    // for production mode use it
    String host = "https://securegw.paytm.in/";
    String orderDetails = "MID: " + midString + ", OrderId: " + orderIdString + ", TxnToken: " + txnTokenString
            + ", Amount: " + txnAmountString;
    //Log.e(TAG, "order details "+ orderDetails);
    String callBackUrl = host + "theia/paytmCallback?ORDER_ID="+orderIdString;
    Log.e(TAG, " callback URL "+callBackUrl);
    PaytmOrder paytmOrder = new PaytmOrder(orderIdString, midString, txnTokenString, txnAmountString, callBackUrl);
    TransactionManager transactionManager = new TransactionManager(paytmOrder, new PaytmPaymentTransactionCallback(){
        @Override
        public void onTransactionResponse(Bundle bundle) {
            Log.e(TAG, "Response (onTransactionResponse) : "+bundle.toString());
        }
        @Override
        public void networkNotAvailable() {
            Log.e(TAG, "network not available ");
        }
        @Override
        public void onErrorProceed(String s) {
            Log.e(TAG, " onErrorProcess "+s.toString());
        }
        @Override
        public void clientAuthenticationFailed(String s) {
            Log.e(TAG, "Clientauth "+s);
        }
        @Override
        public void someUIErrorOccurred(String s) {
            Log.e(TAG, " UI error "+s);
        }
        @Override
        public void onErrorLoadingWebPage(int i, String s, String s1) {
            Log.e(TAG, " error loading web "+s+"--"+s1);
        }
        @Override
        public void onBackPressedCancelTransaction() {
            Log.e(TAG, "backPress ");
        }
        @Override
        public void onTransactionCancel(String s, Bundle bundle) {
            Log.e(TAG, " transaction cancel "+s);
        }
    });
    transactionManager.setShowPaymentUrl(host + "theia/api/v1/showPaymentPage");
    transactionManager.startTransaction(this, ActivityRequestCode);
}

请阅读complete details and source code here