首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android paytm支付网关响应

Android paytm支付网关响应
EN

Stack Overflow用户
提问于 2019-09-30 18:56:32
回答 3查看 1.6K关注 0票数 1

我已经实现了Paytm支付系统,一切都很好,在我的意图之上的网络意图,钱从客户的访问和它的添加到我的账户上,但交易完成后,它被卡在一个白色页面上说‘重定向到应用程序’,我认为我应该写代码重定向回我的应用程序,但我不知道如何做,因为我找不到一个onTransactionSucess()事件或任何类似的东西,我也尝试了onTransactionResponse,但仍然没有反应。我检查了所有的paytm文档,并尝试联系paytm支持人员,但找不到方法。

EN

回答 3

Stack Overflow用户

发布于 2020-01-03 15:32:14

希望你已经添加了'CALLBACK_URL‘,这是验证校验和所必需的。正如paytm文档中所提到的

CALLBACK_URL -避免篡改的安全参数。使用Paytm提供的服务器端校验和实用程序生成。商家必须确保这总是在服务器上生成。here提供了生成校验和散列的实用程序。

希望这能起到魔力。

票数 2
EN

Stack Overflow用户

发布于 2019-11-28 20:16:45

我希望你已经在你的代码中添加了这个变量-

代码语言:javascript
复制
PaytmPGService service;

如果你正在使用它,那么你可以获得所有与支付相关的方法,如下所示:

代码语言:javascript
复制
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()
                }
            });

我希望这能对你有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2020-02-28 19:43:29

将默认的回调更改为假设'http://yourdomain (如果检查本地主机,则为ip地址)/pgResponse.php‘;。将以下代码添加到pgResponse.php

代码语言:javascript
复制
 <?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>

在android直播间:

代码语言:javascript
复制
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();
                            }
                        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58166484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档