обработать транзакцию функцией PayPal - PullRequest
0 голосов
/ 29 мая 2018

Я создаю приложение электронной коммерции с помощью видео-обучения.

У меня есть функция process_transaction, которая анализирует PayPal tx-параметры URL-адреса после успешной покупки и заполняет таблицу 'заказов' в phpMyAdmin 4.8.0.

Ранееесли вы обновили мою страницу thank_you.php, то ордера продолжают заполнять мою таблицу «ордеров» (так как ранее не было уничтожения сеанса, встроенного в вышеупомянутую функцию).

Проблема в том, что код, предложенный для предотвращения такого нашим преподавателем, для этой функции не работает.При запуске таблица 'orders' больше не заполняется из транзакций, а также session_destroy не работает.

Мне было интересно, что не так с функцией.

thank_you.php

<?php require_once("../resources/config.php"); ?>
<?php require_once("../resources/cart.php"); ?> 
<?php include('../resources/templates/front/header.php') ?>   



<?php

process_transaction();

?> 



    <!-- Page Content -->
    <div class="container">

      <h1 class="text-center">THANK YOU</h1>

      <h3>Nippon will get your products shipped today</h3>

    </div>
    <!-- /.container -->




 <?php include('../resources/templates/front/footer.php') ?>

cart.php (не работает должным образом - не сохраняет приказы в БД или не уничтожает сеанс)

function process_transaction(){

  if(isset($_GET['tx'])){

    $amount = $_GET['amt']; // get amount
    $currency = $_GET['cc'];
    $transaction = $_GET['tx']; // 
    $status = $_GET['st']; // get status ie completed
    $total = 0;
    $item_quantity = 0;


    foreach ($_SESSION as $name => $value) {

      if($value > 0 ) {

        if (substr($name, 0, 8) == "product_") {

          $length = strlen($name); 
          $id = substr($name, 8, $length);

           $send_order = query("INSERT INTO orders (order_amount,order_transaction,order_status,order_currency) VALUES('{$amount}','{$transaction}','{$status}','{$currency}')");
           $last_id = last_id(); 
           confirm($send_order); 


          $query = query("SELECT * FROM products WHERE product_id = " . escape_string($id) . " ");
          confirm($query);

          while($row = fetch_array($query)) {
            $product_price = $row['product_price'];
            $product_title = $row['product_title'];
            $sub = $row['product_price'] * $value;
            $item_quantity += $value;
            $insert_report = query("INSERT INTO reports (product_id, order_id, product_title, product_price,product_quantity) VALUES ('{$id}','{$last_id}','{$product_title}','{$product_price}','{$value}')");
            confirm($insert_report);
          }

          $total += $sub;
          echo $item_quantity;
        }
      }
    }
    session_destroy();
  } else {
    redirect("index.php");
  }
}

functions.php

<?php

function query($sql) {


global $connection;

return mysqli_query($connection, $sql);


}


function fetch_array($result) {

return mysqli_fetch_array($result); 


}




function escape_string($string){

global $connection;

return mysqli_real_escape_string($connection,$string);  


}






?>

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...