[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как передать WMI_SIGNATURE?
Гость_Дима
Привет,

я пытаюсь вставить платёжный сервис «Единый кошелек» от w1.ru.

Код я взял от сюда http://merchant.w1.ru/checkout/site/develope/#step1

при переходе к оплате выдаёт ошибку:

An error occured
Parameter "WMI_SIGNATURE" wasn't passed.

Как передать WMI_SIGNATURE?


<?php

//Секретный ключ интернет-магазина
$key = "Mk9dckhFVVNNXVB7VWNUMm1CZHY1d05UNmNz";

$fields = array();

// Добавление полей формы в ассоциативный массив
$fields["WMI_MERCHANT_ID"] = "122694837850";
$fields["WMI_PAYMENT_AMOUNT"] = "15.00";
$fields["WMI_CURRENCY_ID"] = "643";
$fields["WMI_PAYMENT_NO"] = "12";
$fields["WMI_DESCRIPTION"] = "BASE64:".base64_encode("Пополнить баланс");
$fields["WMI_EXPIRED_DATE"] = "2019-12-31T23:59:59";
$fields["WMI_SUCCESS_URL"] = "http://www.XXXXX.com/paid.php";
$fields["WMI_FAIL_URL"] = "http://www.XXXXX.com/paid.php";
$fields["MyShopParam1"] = "user_email"; // Дополнительные параметры
$fields["MyShopParam2"] = "Value2"; // интернет-магазина тоже участвуют
$fields["MyShopParam3"] = "Value3"; // при формировании подписи!
//Если требуется задать только определенные способы оплаты, раскоментируйте данную строку и перечислите требуемые способы оплаты.
//$fields["WMI_PTENABLED"] = array("ContactRUB", "UnistreamRUB", "SberbankRUB", "RussianPostRUB");

//Сортировка значений внутри полей

foreach($fields as $name => $val)
{
if (is_array($val))
{
usort($val, "strcasecmp");
$fields[$name] = $val;
}
}



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

uksort($fields, "strcasecmp");
$fieldValues = "";

foreach($fields as $value)
{
if (is_array($value))
foreach($value as $v)
{
//Конвертация из текущей кодировки (UTF-8)
//необходима только если кодировка магазина отлична от Windows-1251

$v = iconv("utf-8", "windows-1251", $v);
$fieldValues .= $v;
}
else
{
//Конвертация из текущей кодировки (UTF-8)
//необходима только если кодировка магазина отлична от Windows-1251

$value = iconv("utf-8", "windows-1251", $value);
$fieldValues .= $value;
}
}


// Формирование значения параметра WMI_SIGNATURE, путем
// вычисления отпечатка, сформированного выше сообщения,
// по алгоритму MD5 и представление его в Base64


$signature = base64_encode(pack("H*", md5($fieldValues . $key)));

//Добавление параметра WMI_SIGNATURE в словарь параметров формы

$fields["WMI_SIGNATURE"] = $signature;
?>
<?
function
show_payin(){
global $base;
global $var;

$type = get_str_val('type');

if($type == 'robokassa'){
$txt .= show_payin_robokassa();

}elseif($type == 'webmoney'){
$txt .= show_payin_webmoney();

}elseif($type == 'sms'){
$txt .= show_payin_sms();
}

return $txt;
}




function show_payin_webmoney(){
global $base;
global $var;

$txt .='
<form action="https://merchant.w1.ru/checkout/default.aspx" method="post">
<table class="form">
<tr>
<td>
Сумма
<input type="hidden" name="WMI_MERCHANT_ID" value="122694837850"/>
<input name="WMI_PAYMENT_AMOUNT" type="text" size="5" value="300" class="inp_"> руб.
<input type="hidden" name="WMI_CURRENCY_ID" value="643"/>
<input type="hidden" name="WMI_DESCRIPTION" value="'
.$var['pay_title'].' - пополнение баланса - '.$var['user_email'].'">
<input type="hidden" name="WMI_SIGNATURE" value="'
.$signature.'"/>

<input type="hidden" name="user_email" value="'
.$var['user_email'].'">

<input type="submit" value="Оплатить" class="btn">
</td>
</tr>
</table>
</form>


'
;

return $txt;
}
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.