付款后终止会话并返回回调页面

时间:2021-03-01 06:16:26

标签: php html sql

在用户填写他或她的信息表单后,它会创建一些会话,我需要在回调页面中终止所有会话,但它不会通过销毁会话或未设置会话来工作。 填写信息页面后,我们有3页如下。

payment.php

<?php session_start();

require_once('variables.php');
require_once('../includes/config.php');



$stmt = $db->prepare('SELECT * FROM order_main WHERE name = :name and phone=:phone');
if($stmt->execute(array(':name' => $_SESSION['post-data']['name'], ':phone' => $_SESSION['post-data'] 
['phone'] ) ));
while($row = $stmt->fetch()){
  //if($code == $row['code']){
   //if(!empty($_POST['code'])){
         
      

        $_SESSION['order_id'] = $row['order_id'];
    

      
  //}
   // }

}


$order_id = $_SESSION['order_id'];

$amount = $_SESSION['total'];


echo $_SESSION['order_id'];

$_SESSION['order_id']=3;


 echo $_SESSION['post-data']['name'];
 echo $_SESSION['post-data']['order_desc'];

 $name = $_SESSION['post-data']['name'];
 $phone = $_SESSION['post-data']['phone'];
 $order_desc = $_SESSION['post-data']['order_desc'];



 $params = array(
'order_id' => $order_id ,
'amount' =>  10000,
'phone' => $phone,
 'name' => $name,
 'desc' => $order_desc,
 'callback' => URL_CALLBACK,
 );

idpay_payment_create($params);


/**
* @param array $params
* @return bool
*/
function idpay_payment_create($params) {
$header = array(
'Content-Type: application/json',
'X-API-KEY:' . APIKEY,
'X-SANDBOX:' . SANDBOX,
 );

$ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, URL_PAYMENT);
 curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

$result = curl_exec($ch);
curl_close($ch);

$result = json_decode($result);

if (empty($result) || empty($result->link)) {

print 'Exception message:';
print '<pre>';
print_r($result);
print '</pre>';

return FALSE;
}

//.Redirect to payment form
 header('Location:' . $result->link);
}

变量.php

<?php session_start();

define('URL_CALLBACK', 'http://www.siteaddress.org/blog/php-simple-master/callback.php');

define('URL_PAYMENT', 'https://api.idpay.ir/v1.1/payment');
define('URL_INQUIRY', 'https://api.idpay.ir/v1.1/payment/inquiry');
define('URL_VERIFY', 'https://api.idpay.ir/v1.1/payment/verify');

define('APIKEY', 'xxxxx...');
 define('SANDBOX', 1);

callback.php(我想在这里销毁部分或所有会话,但不能)

 <?php session_start();

 require_once('variables.php');
 require_once('config.php');

 ?>



 <?php
 

 if ($_SERVER['REQUEST_METHOD'] === 'POST') {
 $response = $_POST;
 }

 if ($_SERVER['REQUEST_METHOD'] === 'GET') {
 $response = $_GET;
 }

 if (empty($response['status']) ||
 empty($response['id']) ||
 empty($response['track_id']) ||
 empty($response['order_id'])) {

  return FALSE;

 }

 if ($response['status'] != 10) {
 print idpay_payment_get_message($response['status']);
  }

   // if $response['id'] was not in the database return FALSE

   $inquiry = idpay_payment_get_inquiry($response);

   if ($inquiry) {
    $verify = idpay_payment_verify($response);
   }


   /**
   * @param array $response
   * @return bool
   */
   function idpay_payment_get_inquiry($response) {

   $header = array(
  'Content-Type: application/json',
  'X-API-KEY:' . APIKEY,
  'X-SANDBOX:' . SANDBOX,
    );

   $params = array(
  'id' => $response['id'],
  'order_id' => $response['order_id'],
   );

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, URL_INQUIRY);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
   curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

  $result = curl_exec($ch);
  curl_close($ch);

  $result = json_decode($result);

  if (empty($result) ||
  empty($result->status)) {
  
    print 'Exception message:';
  print '<pre>';
  print_r($result);
   print '</pre>';
  
  
  

   return FALSE;
   }

  if ($result->status == 10) {
  
 
  
   return TRUE;

   }

   print idpay_payment_get_message($result->status);

  return FALSE;
  }


  /**
 * @param array $response
    * @return bool
  */
  function idpay_payment_verify($response) {

   $header = array(
  'Content-Type: application/json',
  'X-API-KEY:' . APIKEY,
  'X-SANDBOX:' . SANDBOX,
   );

   $params = array(
  'id' => $response['id'],
  'order_id' => $response['order_id'],
   );

   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, URL_VERIFY);
   curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
   curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

   $result = curl_exec($ch);
   curl_close($ch);

   $result = json_decode($result);



  if (empty($result) ||
  empty($result->status)) {
  
  print 'Exception message:';
  print '<pre>';
  print_r($result);
  print '</pre>';

  
 
  
   return FALSE;
  }



  print idpay_payment_get_message($result->status);



 //print '<pre>';
 //print_r($result);
 //print '</pre>';






 

      $stmt = $db->prepare('UPDATE order_main SET track_id = :track_id, id = :id, order_date=:date 
       WHERE order_id = :order_id  ') ;
            $stmt->execute(array(
                ':track_id' => $_GET['track_id'],
                ':id' => $_GET['id'],
                ':date' => $_GET['date'],
                ':order_id' => $_GET['order_id']
                
                
            ));












     }



  
  
  



/**
 * @param int $status
 * @return string
 */
 function idpay_payment_get_message($status) {



  switch ($status) {
   case 1:
  return 'پرداخت انجام نشده است';

   case 2:
    return 'پرداخت ناموفق بوده است';

  case 3:
   return 'خطا رخ داده است';

   case 10:
  return 'در انتظار تایید پرداخت';

   case 100:
      
  return 'پرداخت تایید شده است لطفا منتظر بمانید';
      

  case 101:
  return 'پرداخت قبلاً تایید شده است';

  default:
      
  return 'Error handeling';
  }
  }

 unset ($_SESSION['post-data']['name']);
unset ($_SESSION['post-data']['phone']);
if($_GET['order_desc']){
unset ($_SESSION['post-data']['order_desc']);
 }
unset ($_SESSION['order_id']);
 unset ($_SESSION['shopping_cart']);

1 个答案:

答案 0 :(得分:0)

session_start();
session_destroy();
session_commit();

只需在代码末尾添加 session_destroy($_SESSION["your_session]);,session_commit 也是如此

相关问题