2017-01-22 1 views
0

私はPHPと支払いの統合には全く新しいです。 しかし、支払いシステムを正常に統合しましたが、私が直面している問題は、これらの確認値をデータベースに格納する方法です。 ここで私のresponse.phpコードは、ゲートウェイからの確認応答が返信ページに送り返されます。私は確認ステータスの出力を得ることができるコードで、問題はどのようにdbに格納するかです。 【これが出力される] [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 

これらは私ミッド等が定義されている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

あなたのinsert文は次のようになります。

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

あなたのinsert文は次のようになります。 – Rajesh

関連する問題