вот код из waletone - он то работает, то не работает.. может здесь есть подсказка?
<?php
session_start();
define('unisitecms', true);
include_once("../../../systems/config.php");
include_once("{$_SERVER['DOCUMENT_ROOT']}/systems/classes/UniSite.php");
$languages_content = json_decode( ob_get($_SERVER["DOCUMENT_ROOT"]."/lang/".$settings["lang_site_default"].".php"), true );
$title_payment = $languages_content["payment-replenishment-title"];
$param = paymentParams('walletone');
$bonus = bonusProgram("balance_profile");
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] = $value;
}
// Сортировка массива по именам ключей в порядке возрастания
// и формирование сообщения, путем объединения значений формы
uksort($params, "strcasecmp"); $values = "";
foreach($params as $name => $value)
{
//Конвертация из текущей кодировки (UTF-8)
//необходима только если кодировка магазина отлична от Windows-1251
// $value = iconv("utf-8", "windows-1251", $value);
$values .= $value;
}
// Формирование подписи для сравнения ее с параметром WMI_SIGNATURE
$signature = base64_encode(pack("H*", md5($values . $param["key"])));
//Сравнение полученной подписи с подписью W1
if ($signature == $_POST["WMI_SIGNATURE"])
{
if (strtoupper($_POST["WMI_ORDER_STATE"]) == "ACCEPTED")
{
$explode = explode("-", $_POST["WMI_PAYMENT_NO"]);
if($Profile->profileBalance(array("id_user"=>$explode[0],"summa"=>round($_POST["WMI_PAYMENT_AMOUNT"],2),"title"=>$title_payment,"id_order"=>$explode[1],"method"=>"WalletOne"),"+")){
if($bonus["procent"]){
$summa = (($_POST["WMI_PAYMENT_AMOUNT"] / 100) * $bonus["procent"]);
$Profile->profileBalance(array("id_user"=>$explode[0],"summa"=>round($summa,2),"method"=>"WalletOne","title"=>$bonus["title"],"id_order"=>$explode[1]),"+");
}
print_answer("Ok", "Заказ #" . $_POST["WMI_PAYMENT_NO"] . " оплачен!");
}else{
print_answer("Retry", "Произошла ошибка при оплате!");
}
}
else
{
// Случилось что-то странное, пришло неизвестное состояние заказа
print_answer("Retry", "Неверное состояние ". $_POST["WMI_ORDER_STATE"]);
}
}
else
{
// Подпись не совпадает, возможно вы поменяли настройки интернет-магазина
print_answer("Retry", "Неверная подпись " . $_POST["WMI_SIGNATURE"]);
}
?>