Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.42 KB | None | 0 0
  1. #!/usr/bin/php
  2. <?php
  3. // Секретный ключ интернет-магазина (настраивается в кабинете)
  4. $skey = "ххххххххххххххххххххххххххххххххххххххххххххх";
  5.  
  6. include("bd.php"); // подключение к БД
  7.  
  8. // Функция, которая возвращает результат в Единую кассу
  9.  
  10. function print_answer($result, $description)
  11. {
  12. print "WMI_RESULT=" . strtoupper($result) . "&";
  13. print "WMI_DESCRIPTION=" .$description;
  14. exit();
  15. }
  16.  
  17. // Проверка наличия необходимых параметров в POST-запросе
  18.  
  19. if (!isset($_POST["WMI_SIGNATURE"]))
  20. print_answer("Retry", "Отсутствует параметр WMI_SIGNATURE");
  21.  
  22. if (!isset($_POST["WMI_PAYMENT_NO"]))
  23. print_answer("Retry", "Отсутствует параметр WMI_PAYMENT_NO");
  24.  
  25. if (!isset($_POST["WMI_ORDER_STATE"]))
  26. print_answer("Retry", "Отсутствует параметр WMI_ORDER_STATE");
  27.  
  28. // Извлечение всех параметров POST-запроса, кроме WMI_SIGNATURE
  29.  
  30. foreach($_POST as $name => $value)
  31. {
  32. if ($name !== "WMI_SIGNATURE") $params[$name] = $value;
  33. }
  34.  
  35. // Сортировка массива по именам ключей в порядке возрастания
  36. // и формирование сообщения, путем объединения значений формы
  37.  
  38. uksort($params, "strcasecmp"); $values = "";
  39.  
  40. foreach($params as $name => $value)
  41. {
  42.  
  43. $values .= $value;
  44. }
  45.  
  46. // Формирование подписи для сравнения ее с параметром WMI_SIGNATURE
  47.  
  48. $signature = base64_encode(pack("H*", md5($values . $skey)));
  49.  
  50. //Сравнение полученной подписи с подписью W1
  51.  
  52. if ($signature == $_POST["WMI_SIGNATURE"])
  53. {
  54. if (strtoupper($_POST["WMI_ORDER_STATE"]) == "ACCEPTED")
  55. {
  56. // TODO: Пометить заказ, как «Оплаченный» в системе учета магазина
  57. $customer = (int)$_POST["MyShopParam1"]; // здесь я получаю id пользователя
  58. $amount = (float)$_POST["WMI_PAYMENT_AMOUNT"]; // здесь я получаю сумму
  59. // и добавляю сумму платежа по id пользователя в БД
  60. $result = mysqli_query($con, "INSERT INTO oc_customer_transaction (customer_id, amount) VALUES ($customer, $amount)");
  61.  
  62. print_answer("Ok", "Заказ #" . $_POST["WMI_PAYMENT_NO"] . " оплачен!");
  63. }
  64. else
  65. {
  66. // Случилось что-то странное, пришло неизвестное состояние заказа
  67.  
  68. print_answer("Retry", "Неверное состояние ". $_POST["WMI_ORDER_STATE"]);
  69. }
  70. }
  71. else
  72. {
  73. // Подпись не совпадает, возможно вы поменяли настройки интернет-магазина
  74.  
  75. print_answer("Retry", "Неверная подпись " . $_POST["WMI_SIGNATURE"]);
  76. }
  77. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement