为了账号安全,请及时绑定邮箱和手机立即绑定

Android paytm支付网关响应

Android paytm支付网关响应

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

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

希望您已添加验证校验和所需的“CALLBACK_URL”。正如 paytm 文档中提到的

CALLBACK_URL - 避免篡改的安全参数。使用 Paytm 提供的服务器端校验和实用程序生成。商家必须确保它始终在服务器上生成。

希望这能发挥魔力。


查看完整回答
反对 回复 2023-09-13
?
烙印99

TA贡献1829条经验 获得超13个赞

我希望您已将此变量添加到您的代码中 -


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()

                }

            });

我希望这能帮到您。


查看完整回答
反对 回复 2023-09-13
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

将默认的回调 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();

                            }

                        }


查看完整回答
反对 回复 2023-09-13
  • 3 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信