Монетизация форума API W1 Единая касса

Chvalov

Проверенные
Сообщения
36
Реакции
12
Баллы
8,105
Здравствуйте, делаю плагин (точнее переделываю с робокасы) для оплаты через Единую кассу

Плагин готов как бы на 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}" />
(Это 117 строчка установочного файла addon-robo.xml)
 
Нифига себе. Это нужно ждать Димона тогда. :-)
В том прикол что Димона на том ресурсе где я раньше с ним общался Забанили по непонятной мне причине ((
Знаю что он и здесь обитает но последняя активность была уже давно (
Надесь что здесь найдется тот человек который поможет мне розобраться с данным вопросом раз и навсегда.

П.С. Спасибо за подтверждение моей регистрации
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу