【问题标题】:How to store paytm API response information in mysql database using php如何使用php将paytm API响应信息存储在mysql数据库中
【发布时间】:2019-01-06 05:52:46
【问题描述】:

我是 php 和支付网关集成的新手。我已成功集成支付系统,但问题是我面临将这些信息存储在数据库中。这是我的 response.php 代码。 现在没有错误,但这些信息没有将数据存储到我的数据库中。

<?php
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;
$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.


if($isValidChecksum == "TRUE") {
echo "<b>Checksum matched and following are the transaction details:</b>" . 
"<br/>";
if ($_POST["STATUS"] == "TXN_SUCCESS") {
    echo "<b>Transaction status is success</b>" . "<br/>";
    //Process your transaction here as success transaction.

    //Verify amount & order id received from Payment gateway with your 
 application's order id and amount.
 }
 else {
    echo "<b>Transaction status is failure</b>" . "<br/>";
    header("Location: ../wallet.php?wallet");
 }
 if (isset($_POST) && count($_POST)>0 )
 { 
 var_dump($_POST);
include("db.php");
$TRANS_DATE_TIME= date('Y-m-d H:i:s');
#$ORDERID = $_POST["ORDERID"];
#$TXNID= $_POST["TXNID"];

$GETTING_INFO="INSERT INTO `wallet_transaction` 
(`ORDERID`,`TXNID`,`TRANS_DATE_TIME`) VALUES ('".$_POST['ORDERID']."', 
'".$_POST['TXNID']."','$TRANS_DATE_TIME')";
$dbsuccess=$conn->query($GETTING_INFO);

if($dbsuccess){
     header("Location: ../wallet.php?wallet");
 }  
}


}
else {
echo "<b>Checksum mismatched.</b>";
//Process transaction as suspicious.
header("Location: ../wallet.php?wallet");
}
?>

重定向页面

<?php
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");

$checkSum = "";
$paramList = array();

$ORDER_ID = $_POST["ORDER_ID"];
$CUST_ID = $_POST["CUST_ID"];
$INDUSTRY_TYPE_ID = $_POST["INDUSTRY_TYPE_ID"];
$CHANNEL_ID = $_POST["CHANNEL_ID"];
$TXN_AMOUNT = $_POST["TXN_AMOUNT"];
$MSISDN = $_POST["MSISDN"];
$EMAIL = $_POST["EMAIL"];

// Create an array having all required parameters for creating checksum.
$paramList["MID"] = PAYTM_MERCHANT_MID;
$paramList["ORDER_ID"] = $ORDER_ID;
$paramList["CUST_ID"] = $CUST_ID;
$paramList["INDUSTRY_TYPE_ID"] = $INDUSTRY_TYPE_ID;
$paramList["CHANNEL_ID"] = $CHANNEL_ID;
$paramList["TXN_AMOUNT"] = $TXN_AMOUNT;
$paramList["WEBSITE"] = PAYTM_MERCHANT_WEBSITE;


$paramList["CALLBACK_URL"] = 
"https://shareworld.com/PaytmKit/pgResponse.php";
$paramList["MSISDN"] = $MSISDN; //Mobile number of customer
$paramList["EMAIL"] = $EMAIL; //Email ID of customer
$paramList["VERIFIED_BY"] = "EMAIL"; //
$paramList["IS_USER_VERIFIED"] = "YES"; //

 //Here checksum string will return by getChecksumFromArray() function.
 $checkSum = getChecksumFromArray($paramList,PAYTM_MERCHANT_KEY);
?>
<html>
<head>
<title>Merchant Check Out Page</title>
</head>
<body>
<center><h1>Please do not refresh this page...</h1></center>
    <form method="post" action="<?php echo PAYTM_TXN_URL ?>" name="f1">
    <table border="1">
        <tbody>
        <?php
        foreach($paramList as $name => $value) {
            echo '<input type="hidden" name="' . $name .'" value="' . $value 
 . '">';
 //Database connection will be there

        }
        ?>
        <input type="hidden" name="CHECKSUMHASH" value="<?php echo $checkSum 
 ?>">
        </tbody>
    </table>
    <script type="text/javascript">
        document.f1.submit();
    </script>
</form>
</body>
</html>

【问题讨论】:

  • 在数据库中存储数据的代码在哪里?
  • $GETTING_INFO="INSERT INTO wallet_transaction (ORDERID,TXNID,TRANS_DATE_TIME) 值 ('".$_POST['ORDERID']."', '".$ _POST['TXNID']."','$TRANS_DATE_TIME')"; $dbsuccess=$conn->query($GETTING_INFO);

标签: php paytm


【解决方案1】:
if (isset($_POST) && count($_POST)>0 )
{ 
    $servername = "localhost";
    $username = "tdccom_triwits";
    $password = "triwits@123";
    $dbname = "tdccom_paytm";

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
    } 

    $sql = "INSERT INTO response (ORDERID,MID,TXNID,TXNAMOUNT,PAYMENTMODE,CURRENCY,TXNDATE,STATUS,RESPCODE,RESPMSG,GATEWAYNAME,BANKTXNID,BANKNAME,CHECKSUMHASH)
    VALUES ('".$_POST['ORDERID']."','".$_POST['MID']."', '".$_POST['TXNID']."','".$_POST['TXNAMOUNT']."','".$_POST['PAYMENTMODE']."','".$_POST['CURRENCY']."','".$_POST['TXNDATE']."','".$_POST['STATUS']."','".$_POST['RESPCODE']."','".$_POST['RESPMSG']."','".$_POST['GATEWAYNAME']."','".$_POST['BANKTXNID']."','".$_POST['BANKNAME']."','".$_POST['CHECKSUMHASH']."')";

    if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
    } else {
    echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();

    foreach($_POST as $paramName => $paramValue) {
            echo "<br/>" . $paramName . " = " . $paramValue;
    }
}

}

查看https://github.com/MujmillahammedDafedar/WEB-TECHNOLOGIES/

【讨论】:

    【解决方案2】:
    if($isValidChecksum == "TRUE") {
    echo "<b>Checksum matched and following are the transaction details:</b>" . "<br/>";
    if ($_POST["STATUS"] == "TXN_SUCCESS") {
        echo "<b>Transaction status is success</b>" . "<br/>";
        //Process your transaction here as success transaction.
        //Verify amount & order id received from Payment gateway with your application's order id and amount.
    }
    else {
        echo "<b>Transaction status is failure</b>" . "<br/>";
    }
    
    if (isset($_POST) && count($_POST)>0 )
    { 
        $ORDERID = $_POST['ORDERID'];
        $MID = $_POST['MID'];
        $TXNID = $_POST['TXNID'];
        $TXNAMOUNT = $_POST['TXNAMOUNT'];
        $PAYMENTMODE = $_POST['PAYMENTMODE'];
        $CURRENCY = $_POST['CURRENCY'];
        $TXNDATE = $_POST['TXNDATE'];
        $STATUS = $_POST['STATUS'];
        $RESPCODE = $_POST['RESPCODE'];
        $RESPMSG = $_POST['RESPMSG'];
        $GATEWAYNAME = $_POST['GATEWAYNAME'];
        $BANKTXNID = $_POST['BANKTXNID'];
        $BANKNAME = $_POST['BANKNAME'];
        $CHECKSUMHASH =$_POST['CHECKSUMHASH'];
    
        $query = "INSERT into transaction (`ORDERID`,`MID`,`TXNID`,`TXNAMOUNT`,`PAYMENTMODE`,`CURRENCY`,`TXNDATE`,`STATUS`,`RESPCODE`,`RESPMSG`,`GATEWAYNAME`,`BANKTXNID`,`BANKNAME`,`CHECKSUMHASH`) 
        VALUES ('$ORDERID','$MID','$TXNID','$TXNAMOUNT','$PAYMENTMODE','$CURRENCY','$TXNDATE','$STATUS','$RESPCODE','$RESPMSG','$GATEWAYNAME','$BANKTXNID','$BANKNAME','$CHECKSUMHASH')";
    
        $result = mysqli_query($connection, $query) or die(mysqli_error($connection));
        }
    

    }

    【讨论】:

    • 您能解释一下您所做的更改以及解决问题的原因吗?
    • 我只是将所有值保存在不同的变量中并运行 SQL 查询以插入表中它对我有用。
    猜你喜欢
    • 2019-06-29
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2015-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多