Android paytm支付网关响应

我已经实现了 Paytm 支付系统,一切正常,网络意图高于我的意图,钱从客户的账户中扣除,并添加到我的帐户中,但交易完成后,它卡在一个白色页面上,上面写着“重定向”到应用程序',我相信我应该编写代码来重定向回我的应用程序,但我不知道该怎么做,因为我找不到 onTransactionSucess() 事件或类似的事件,我也尝试过 onTransactionResponse 但仍然没有回复。我检查了所有 paytm 文档并尝试联系 paytm 支持,但找不到方法。



慕神8447489
浏览 108回答 3
3回答

三国纷争

希望您已添加验证校验和所需的“CALLBACK_URL”。正如 paytm 文档中提到的CALLBACK_URL - 避免篡改的安全参数。使用 Paytm 提供的服务器端校验和实用程序生成。商家必须确保它始终在服务器上生成。希望这能发挥魔力。

烙印99

我希望您已将此变量添加到您的代码中 -PaytmPGService service;如果您正在使用它,那么您可以获得所有与付款相关的方法,如下所示:service.startPaymentTransaction(this, true,            true, new PaytmPaymentTransactionCallback() {                @Override                public void onTransactionResponse(Bundle inResponse) {                    System.out.println("===== onTransactionResponse " + inResponse.toString());                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {                        if (Objects.equals(inResponse.getString("STATUS"), "TXN_SUCCESS")) {                            //    Payment Success                        } else if (!inResponse.getBoolean("STATUS")) {                            //    Payment Failed                        }                    }                }                @Override                public void networkNotAvailable() {                    // network error                }                @Override                public void clientAuthenticationFailed(String inErrorMessage) {                    // AuthenticationFailed                }                @Override                public void someUIErrorOccurred(String inErrorMessage) {                    // UI Error                }                @Override                public void onErrorLoadingWebPage(int iniErrorCode, String inErrorMessage, String inFailingUrl) {                    //  Web page loading error                }                @Override                public void onBackPressedCancelTransaction() {                    // on cancelling transaction                }                @Override                public void onTransactionCancel(String inErrorMessage, Bundle inResponse) {                    // maybe same as onBackPressedCancelTransaction()                }            });我希望这能帮到您。

人到中年有点甜

将默认的回调 URL 更改为假设“ http://yourdomain(如果在本地主机上检查,则为 IP 地址)/pgResponse.php”;。将以下代码添加到 pgResponse.php <?php        session_start();         header("Pragma: no-cache");        header("Cache-Control: no-cache");        header("Expires: 0");        // following files need to be included        require_once("./lib/config_paytm.php");        require_once("./lib/encdec_paytm.php");        $paytmChecksum = "";        $paramList = array();        $isValidChecksum = "FALSE";        $paramList = $_POST;        $return_array= $_POST;        $checkSum = getChecksumFromArray($paramList,PAYTM_MERCHANT_KEY);//generate new checksum        $paytmChecksum = isset($_POST["CHECKSUMHASH"]) ? $_POST["CHECKSUMHASH"] : ""; //Sent by Paytm pg        //Verify all parameters received from Paytm pg to your application. Like MID received from paytm pg is same as your applicationís MID, TXN_AMOUNT and ORDER_ID are same as what was sent by you to Paytm PG for initiating transaction etc.        $isValidChecksum = verifychecksum_e($paramList, PAYTM_MERCHANT_KEY, $paytmChecksum); //will return TRUE or FALSE string.        $return_array["IS_CHECKSUM_VALID"] = $isValidChecksum ? "Y" : "N";        unset($return_array["CHECKSUMHASH"]);        $mid = $_POST['MID'];      $orderid = $_POST['ORDERID'];         $curl = curl_init();        curl_setopt_array($curl, array(            CURLOPT_RETURNTRANSFER => 1,            CURLOPT_URL => 'https://securegw-stage.paytm.in/order/status?JsonData={"MID":"'.$mid.'","ORDERID":"'.$orderid.'","CHECKSUMHASH":"'.$checkSum.'"}',            CURLOPT_USERAGENT => 'Make Request'        ));        $resp = curl_exec($curl);        $status= json_decode($resp)->STATUS;//do something in your database        $encoded_json = htmlentities(json_encode($return_array));        ?>        <html>        <head>             <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-I">             <title>Paytm</title>             <script type="text/javascript">                    function response(){                            return document.getElementById('response').value;                    }             </script>        </head>        <body>          Redirecting back to the app.....</br>          <form name="frm" method="post">            <input type="hidden" id="response" name="responseField" value='<?php echo $encoded_json?>'>          </form>        </body>        </html>在安卓工作室中:public void onTransactionResponse(Bundle inResponse) {                            Log.d("Create Response", inResponse.toString());                            String response = inResponse.getString("RESPMSG");                            if (response.equals("Txn Successful.")) {                                Toast.makeText(Bag.this,"Payment done",Toast.LENGTH_LONG).show();                            }                            else{                                Toast.makeText(Bag.this,response,Toast.LENGTH_LONG).show();                            }                        }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java