2017-01-22 45 views
0

我對PHP和支付集成頗爲陌生。 但是我已經成功整合了支付系統,但是我面臨的問題是如何將這些確認值存儲在數據庫中。 這是我的response.php代碼,其中來自網關的確認響應被髮送回響應頁面。通過代碼,我可以得到確認狀態輸出,問題是如何將其存儲在數據庫中。 [這就是輸出] [1]在php中存儲參數的數據時遇到的問題

<?php 
    include 'header.php'; 
    include 'dbconnect.php'; 
    header("Pragma: no-cache"); 
    header("Cache-Control: no-cache"); 
    header("Expires: 0"); 
    ?> 
    <html> 
    <head></head> 
    <body> 
    <?php 
    // following files need to be included 
    require_once("./paytm/PaytmKit/lib/config_paytm.php"); 
    require_once("./paytm/PaytmKit/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/>"; 
     } 

     if (isset($_POST) && count($_POST)>0) 
     { 
      //here iam trying to store it but it is not working as shows undefined functions 
      foreach($_POST as $paramName => $paramValue) { 
        echo "<br/>" . $paramName . " = " . $paramValue; 
        $sql = "INSERT INTO txn_details (MID, ORDERID, TXNAMOUNT, CURRENCY, TXNID, BANKTXNID, STATUS, RESPCODE, RESPMSG, TXNDATE, GATEWAYNAME, BANKNAME, PAYMENTMODE) 
     VALUES ('$MID', '$ORDERID', '$TXNAMOUNT', '$CURRENCY', '$TXNID', '$BANKTXNID', '$STATUS', '$RESPCODE', '$RESPMSG', '$TXNDATE', '$GATEWAYNAME', '$BANKNAME', '$PAYMENTMODE')"; 
     $result = $conn->query($sql);    
      } 
     } 


    } 
    else { 
     echo "<b>Checksum mismatched.</b>"; 
     //Process transaction as suspicious. 
    } 

    include 'footer.php'; 
    ?> 

    </body> 
    </html> 


    [1]: https://i.stack.imgur.com/DnNRg.png 

這些是其中i MID和其它的是所限定的pgredirect.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"); 

$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"]; 
$EMAIL = $_POST["EMAIL"]; 
$MSISDN = $_POST["MSISDN"]; 


// 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"] = "http://localhost/wd/response.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 . '">'; 
      } 
      ?> 
      <input type="hidden" name="CHECKSUMHASH" value="<?php echo $checkSum ?>"> 
      </tbody> 
     </table> 
     <script type="text/javascript"> 
      document.f1.submit(); 
     </script> 
    </form> 
</body> 
</html> 
+0

你在哪裏定義'$ MID','$ ORDERID'等?請發佈您的數據庫模式和'var_dump($ _ POST);' –

+0

的輸出請記住思考SQL注入 - 此代碼易受攻擊。看看準備好的聲明 – iblamefish

+0

@Randeep我已經在pgredirect.php中定義了它我已經用pgredirect.php更新了上面的代碼 –

回答

0

您的插入語句應該看起來像。

if (isset($_POST) && count($_POST)>0) 
{ //here iam trying to store it but it is not working as shows undefined functions 
    $sql = "INSERT INTO txn_details (MID, ORDERID, TXNAMOUNT, CURRENCY, TXNID, BANKTXNID, STATUS, RESPCODE, RESPMSG, TXNDATE, GATEWAYNAME, BANKNAME, PAYMENTMODE) 
     VALUES ('".$_POST['MID']."', '".$_POST['ORDERID']."', '".$_POST['TXNAMOUNT'].", '".$_POST['CURRENCY']."', '"..$_POST['TXNID']."', '"..$_POST['BANKTXNID']."', '".$_POST['STATUS']."', '".$_POST['RESPCODE']."', '".$_POST['RESPMSG']."', '".$_POST['TXNDATE']."', '".$_POST['GATEWAYNAME']."', '".$_POST['BANKNAME']."', '".$_POST['PAYMENTMODE']."')"; 
     $result = $conn->query($sql);    

}

0

您必須定義所有變量值並在foreach循環的外側寫入INSERT語句。

+0

我明白我必須定義它,但它是如何定義的,它是否已經在重定向頁面中定義,輸出很好,$ paramName = $ param值,但如何將這些值傳遞給sql。 –

+0

你的插入語句應該看起來像。 – Rajesh

相關問題