Top.Mail.Ru
Ответы

Срочно требуется помощь в php

Значит мне нужно обработать POST запрос от walet one результат должен быть это запись данных в БД mysql с данными
сделала так:
<?php

// Секретный ключ интернет-магазина (настраивается в кабинете)

$skey = "скрытый текст";

// Функция, которая возвращает результат в Единую кассу
///// Дальше идет наш модуль
//
$host="localhost";
$user="test";
$pass="test1."; //установленный вами пароль
$db_name="bd2";
$link=mysql_connect($host,$user,$pass);
mysql_select_db($db_name,$link);
$sql = mysql_query("INSERT INTO `pay` (`number`, `sum`,`state`)
VALUES ('".$_POST["WMI_PAYMENT_NO"]."','".$_POST['WMI_PAYMENT_AMOUNT']."','".$_POST['"WMI_ORDER_STATE']."')");

function print_answer($result, $description)
{
print "WMI_RESULT=" . strtoupper($result) . "&";
print "WMI_DESCRIPTION=" .urlencode($description);
exit();
}

// Проверка наличия необходимых параметров в POST-запросе

if (!isset($_POST["WMI_SIGNATURE"]))
print_answer("Retry", "Отсутствует параметр WMI_SIGNATURE");

if (!isset($_POST["WMI_PAYMENT_NO"]))
print_answer("Retry", "Отсутствует параметр WMI_PAYMENT_NO");

if (!isset($_POST["WMI_ORDER_STATE"]))
print_answer("Retry", "Отсутствует параметр WMI_ORDER_STATE");

// Извлечение всех параметров POST-запроса, кроме WMI_SIGNATURE

foreach($_POST as $name => $value)
{
if ($name !== "WMI_SIGNATURE") $params[$name] = urldecode($value);
}

// Сортировка массива по именам ключей в порядке возрастания
// и формирование сообщения, путем объединения значений формы

uksort($params, "strcasecmp"); $values = "";

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

$values .= $value;
}

// Формирование подписи для сравнения ее с параметром WMI_SIGNATURE

$signature = base64_encode(pack("H*", md5($values . $skey)));

//Сравнение полученной подписи с подписью W1

if ($signature == $_POST["WMI_SIGNATURE"])
{
if (strtoupper($_POST["WMI_ORDER_STATE"]) == "ACCEPTED")
{
// TODO: Пометить заказ, как «Оплаченный» в системе учета магазина

print_answer("Ok", "Заказ #" . $_POST["WMI_PAYMENT_NO"] . " оплачен!");
}
else
{
// Случилось что-то странное, пришло неизвестное состояние заказа

print_answer("Retry", "Неверное состояние ". $_POST["WMI_ORDER_STATE"]);
}
}
else
{
// Подпись не совпадает, возможно вы поменяли настройки интернет-магазина

print_answer("Retry", "Неверная подпись " . $_POST["WMI_SIGNATURE"]);
}

?>
Но тут проблема
параметр WMI_ORDER_STATE пустой, как будто wallet one его не передает и плюс если платеж не прошел то в бд записывается куча строк с этими данными. как исправить помогите

По дате
По рейтингу
Аватар пользователя
Просветленный
9лет

цена вопроса?

Аватар пользователя
Оракул
9лет

интегрируешь платежную систему? тут так просто подсказать не получится ибо надо читать доки оп API платежной системы - что и когда она шлет.
цена вопроса $50 = пишу крипт + объясняю как оно работает, за безопасность не парься просто вставишь потом свой секретный ключ в строчку которую скажу и доступы поменяешь - все честно )))

Аватар пользователя
Просветленный
9лет

заплати фрилансеру. сэкономь время и нервы.