Здравствуйте, делаю плагин (точнее переделываю с робокасы) для оплаты через Единую кассу
Плагин готов как бы на 35-40% Сделано только оплата, но результат об оплате не возвращается :-(
Как я понял Дмитрий Касаев делал на примере paypal, и ответ об оплате обрабатывается здесь: library/XenForo/UserUpgradeProcessor/RoboKassa.php
Теперь подскажите пожалуйста как мне переделать под w1.ru (Единую кассу)?
Вот сам код который формует зарос для оплаты:
library/robokassa/robokassa.php:
Документация по Единой кассе здесь -
Документация по Робокассе где-то тут -
P.S. - Единая касса не будет отправлять запрос на оплату и возвращать данные когда сайт на локалке ! - Всем желающим помощь закидайте сайт на фри хост.
Еще ИД получается там очень страшное и единая касса не принимает запрос для оплаты - ругается ошибкой, для того чтобы это вылечить нужно всего лишь в шаблонах "account_upgrades"
Подправить строчку:
На вот такую:
(Это 117 строчка установочного файла addon-robo.xml)
Плагин готов как бы на 35-40% Сделано только оплата, но результат об оплате не возвращается :-(
Как я понял Дмитрий Касаев делал на примере paypal, и ответ об оплате обрабатывается здесь: library/XenForo/UserUpgradeProcessor/RoboKassa.php
Теперь подскажите пожалуйста как мне переделать под w1.ru (Единую кассу)?
Вот сам код который формует зарос для оплаты:
library/robokassa/robokassa.php:
PHP:
<?php
if (isset($_POST['OutSum'], $_POST['_xfTokens'], $_POST['desc_info']))
{
$key = " KEY "; // Ключ - брать на сайте w1.ru в настройках магазина
$fields = array();
$fields["WMI_MERCHANT_ID"] = "ВАШ ИД"; // Ид брать на том же сайте в том же месте
$fields["WMI_PAYMENT_AMOUNT"] = $_POST['OutSum'];
$fields["WMI_CURRENCY_ID"] = "840"; // Доллары, в документации есть номера и других валют
$fields["WMI_PAYMENT_NO"] = $_POST['_xfTokens']; // Генерируется с данных user_id и user_upgrade_id)
$fields["WMI_DESCRIPTION"] = "BASE64:".base64_encode($_POST['desc_info']);
$fields["WMI_EXPIRED_DATE"] = "2019-12-31T23:59:59"; // Дата должна зависеть от времени сесии (Обычно это 15 мин) - нужно доделать
$fields["WMI_SUCCESS_URL"] = "http://illbreak.ru/account/upgrade-purchase"; // ответ об успешной оплате
$fields["WMI_FAIL_URL"] = "http://illbreak.ru";
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)
{
$v = iconv("utf-8", "windows-1251", $v);
$fieldValues .= $v;
}
else
{
$value = iconv("utf-8", "windows-1251", $value);
$fieldValues .= $value;
}
}
$signature = base64_encode(pack("H*", md5($fieldValues . $key)));
$fields["WMI_SIGNATURE"] = $signature;
print "<form action=\"https://merchant.w1.ru/checkout/default.aspx\" method=\"POST\">";
foreach($fields as $key => $val)
{
if (is_array($val))
foreach($val as $value)
{
print "$key: <input type=\"text\" name=\"$key\" value=\"$value\"/><br>";
}
else
print "$key: <input type=\"text\" name=\"$key\" value=\"$val\"/><br>";
}
}
print "<input type=\"submit\"/></form>";
?>
Документация по Единой кассе здесь -
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
Документация по Робокассе где-то тут -
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
P.S. - Единая касса не будет отправлять запрос на оплату и возвращать данные когда сайт на локалке ! - Всем желающим помощь закидайте сайт на фри хост.
Еще ИД получается там очень страшное и единая касса не принимает запрос для оплаты - ругается ошибкой, для того чтобы это вылечить нужно всего лишь в шаблонах "account_upgrades"
Подправить строчку:
PHP:
<input type="hidden" name="_xfTokens" value="{$visitor.user_id},{$upgrade.user_upgrade_id},token,{$visitor.csrf_token_page}" />
PHP:
<input type="hidden" name="_xfTokens" value="{$visitor.user_id}{$upgrade.user_upgrade_id}" />