首页 > 解决方案 > 在paytm阶段环境中付款后android webview转到https://developer.paytm.com/txn-response

问题描述

我陷入了一个奇怪的境地,同时在 android 应用程序上集成了 paytm 支付网关。使用appinvokesdk。在 webview 重定向到支付网关后,我完成了支付成功,它转到https://developer.paytm.com/txn-response并卡住,而不是转到 onActivityResult。

下面是我的代码。

// 应用程序分级

implementation 'com.paytm.appinvokesdk:appinvokesdk:1.6.0'

// 项目分级

allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
        maven {
            url "https://artifactory.paytm.in/libs-release-local"
        }
    }
}

// 结帐活动

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.i(TAG ,"onActivityResult - resultCode " + resultCode);
    if (requestCode == PaytmRequestCode && data != null) {
        Bundle bundle = data.getExtras();
        if (bundle != null) {
            for (String key : bundle.keySet()) {
                Log.i(PG_TAG, key + " : " + (bundle.get(key) != null ? bundle.get(key) : "NULL"));
            }
        }
        /*if(bundle.get("STATUS").toString().equals("TXN_SUCCESS")) {
            processing_app_payment(bundle);
        }*/
        Log.e(PG_TAG, "data - " + data.getStringExtra("nativeSdkForMerchantMessage"));
        Log.e(PG_TAG, "data response - " + data.getStringExtra("response"));
        //General.showToast(mContext, data.getStringExtra("nativeSdkForMerchantMessage") + data.getStringExtra("response"));
    } else {
        General.showToast(mContext, "Payment Failed");
    }
}

我打电话给...

public void initializePaytmPayment(String txn_token, String callbackurl, String id, String order_ref, String net_order_total) {
        String paymentUrl = "";
        if(PAYTM_ENVIRONMENT.equals("TEST")) {
            paymentUrl = "https://securegw-stage.paytm.in/theia/api/v1/showPaymentPage";
        }
        if(PAYTM_ENVIRONMENT.equals("PROD")) {
            paymentUrl = "https://securegw.paytm.in/theia/api/v1/showPaymentPage";
        }
        PaytmOrder paytmOrder = new PaytmOrder(order_ref, PAYTM_MERCHANT_MID, txn_token, net_order_total, callbackurl);

        TransactionManager transactionManager = new TransactionManager(paytmOrder, new PaytmPaymentTransactionCallback() {
            @Override
            public void onTransactionResponse(@Nullable @org.jetbrains.annotations.Nullable Bundle bundle) {
                General.showToast(mContext, "Payment Transaction response " + bundle.toString());
            }
            @Override
            public void networkNotAvailable() {
                General.showToast(mContext, "networkNotAvailable");
            }
            @Override
            public void onErrorProceed(String s) {
                General.showToast(mContext, "onErrorProceed - " + s.toString());
            }
            @Override
            public void clientAuthenticationFailed(String s) {
                General.showToast(mContext, "clientAuthenticationFailed - " + s.toString());
            }
            @Override
            public void someUIErrorOccurred(String s) {
                General.showToast(mContext, "someUIErrorOccurred - " + s.toString());
            }
            @Override
            public void onErrorLoadingWebPage(int i, String s, String s1) {
                General.showToast(mContext, "onErrorLoadingWebPage - " + s.toString() + ", " + s1.toString());
            }
            @Override
            public void onBackPressedCancelTransaction() {
                General.showToast(mContext, "Back Pressed or Cancelled Transaction");
            }
            @Override
            public void onTransactionCancel(String s, Bundle bundle) {
                General.showToast(mContext, "onTransactionCancel - " + s.toString() + ", " + bundle.toString());
            }
        });

        //transactionManager.setAppInvokeEnabled(false);
        transactionManager.setShowPaymentUrl(paymentUrl);
        transactionManager.startTransaction(this, PaytmRequestCode);
    }

完成支付 webview 后转到https://developer.paytm.com/txn-response。请看截图。 在此处输入图像描述

我不明白为什么会发生这种情况。请帮助,谢谢提前。

标签: androidpayment-gatewaypaytm

解决方案


您可以尝试根据支付网关的文档检查交易后的响应(使用测试 url),调用或处理可以附加到 POST 方法,因此结果中必须有一个回复您应该使用 GUI 在您的应用程序中进行管理,请查看https://developer.paytm.com/docs/authenticate-subscription/


推荐阅读