10ответ(ов) в теме
виталий
не в сети 7 лет
На сайте с 06.10.2016
Участник
Тем 3
Сообщения 20
1
17:53
Версия плагина: 3.1.6

Добрый вечер, выручайте))
Не обновляется статус оплаты в админке,
1) оплата в ЕК проходит
2) приходят письма \"Неудачная оплата\" с сайта с подобным содержанием:
CMS - 30
TYPE_PAY - 1
USER_ID - vitaliybereza@yandex.ua
WMI_AUTO_ACCEPT - 1
WMI_COMMISSION_AMOUNT - 0.40
WMI_CREATE_DATE - 2017-10-03 10:23:50
WMI_CURRENCY_ID - 643
WMI_DESCRIPTION - 物豚蜞 玎赅玎 铗 vitaliybereza@yandex.ua
WMI_EXPIRED_DATE - 2017-11-03 10:23:50
WMI_FAIL_URL -

Вы не можете просматривать опубликованные ссылки

WMI_INVOICE_OPERATIONS - [{\\\"CreateDate\\\":\\\"2017-10-03 10:45:53\\\",\\\"PaymentId\\\":\\\"151774050\\\",\\\"Amount\\\":\\\"10.00\\\",\\\"AmountEntryId\\\":\\\"10862712470\\\"}]
WMI_LAST_NOTIFY_DATE - 2017-10-03 14:21:37
WMI_MERCHANT_ID - 112466845835
WMI_NOTIFY_COUNT - 29
WMI_ORDER_ID - 340750543939
WMI_ORDER_STATE - Accepted
WMI_PAYMENT_AMOUNT - 10.00
WMI_PAYMENT_NO - 1507036999
WMI_PAYMENT_TYPE - SberOnlineRUB
WMI_SUCCESS_URL -

Вы не можете просматривать опубликованные ссылки

WMI_UPDATE_DATE - 2017-10-03 10:45:53
WMI_SIGNATURE - yV5SCjnDwjp7MRpxyuMCaA==
C褎芯褉屑懈褉芯胁邪薪薪褘泄 褏械褕 - mZSsE/gTOzKI6DRu9c9Vhg==
孝械泻褍褖懈泄 锌芯褋褌 - 72
RESULT - 72
SUCCESS - 70

3) От них недавно приходило письмо что изменился API:
Уважаемые пользователи!
С 21 сентября 2017 года изменится состав коллбэка. В него будет включен новый параметр WMI_INVOICE_OPERATIONS. Для проверки цифровой подписи необходимо его учитывать.

Wallet One Team.
4) Может что-то в коде надо поменять? (кода мерчанта)
if(class_exists(\'WRP_Payment\')){ add_action(\'init\',\'wrp_add_walletone_payment\'); function wrp_add_walletone_payment(){ $pm = new WRP_Walletone_Payment(); $pm->register_payment(\'walletone\'); } class WRP_Walletone_Payment extends WRP_Payment{ public $form_pay_id; public $payments_json; function register_payment($form_pay_id){ $this->form_pay_id = $form_pay_id; parent::add_payment($this->form_pay_id, array( \'class\'=>get_class($this), \'request\'=>\'WMI_PAYMENT_NO\', \'name\'=>\'WalletOne\' )); if(is_admin()) $this->add_options(); } function add_options(){ add_filter(\'wrp_pay_option\',(array($this,\'options\'))); add_filter(\'wrp_pay_child_option\',(array($this,\'child_options\'))); } function options($options){ $options[$this->form_pay_id] = __(\'WalletOne\',\'rcl-walletone\'); return $options; } function child_options($child){ $opt = new WRP_Options(); $child .= $opt->child( array( \'name\'=>\'connect_sale\', \'value\'=>$this->form_pay_id ), array( $opt->title(__(\'Настройки подключения WalletOne\',\'rcl-walletone\')), $opt->label(__(\'Merchant ID\',\'rcl-walletone\')), $opt->option(\'text\',array(\'name\'=>\'WO_MERCHANT_ID\')), $opt->label(__(\'Секретный ключ\',\'rcl-walletone\')), $opt->option(\'password\',array(\'name\'=>\'WO_SECRET_KEY\')), $opt->label(__(\'Доступные способы оплаты\',\'rcl-walletone\')), $content ) ); return $child; } function pay_form($data){ global $wrp_options; $merchant_id = $wrp_options[\'WO_MERCHANT_ID\']; $secret_key = $wrp_options[\'WO_SECRET_KEY\']; $curs = array( \'RUB\' => 643, \'UAH\' => 980, \'KZT\' => 398, \'USD\' => 840, \'EUR\' => 978 ); $code_cur = (isset($curs[$wrp_options[\'primary_cur\']]))? $curs[$wrp_options[\'primary_cur\']]: 643; $desc = ($data->description)? $data->description: \'Платеж от \'.$data->email_user; $fields = array( \'WMI_MERCHANT_ID\'=>$merchant_id, \'WMI_PAYMENT_AMOUNT\'=>$data->pay_summ.\'.00\', \'WMI_CURRENCY_ID\'=>$code_cur, \'WMI_PAYMENT_NO\'=>$data->pay_id, \'WMI_DESCRIPTION\'=>$desc, \'WMI_SUCCESS_URL\'=>get_permalink($wrp_options[\'page_successfully_pay\']), \'WMI_FAIL_URL\'=>get_permalink($wrp_options[\'page_fail_pay\']), \'USER_ID\'=>$data->email_user, \'TYPE_PAY\'=>$data->pay_type, \'CMS\'=>30 ); //Сортировка значений внутри полей 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 . $secret_key))); //Добавление параметра WMI_SIGNATURE в словарь параметров формы $fields[\"WMI_SIGNATURE\"] = $signature; $form = parent::form($fields,$data,\'https://wl.walletone.com/checkout/checkout/Index\'); return $form; } function result($data){ global $wrp_options; $secret_key = $wrp_options[\'WO_SECRET_KEY\']; $data->pay_summ = $_REQUEST[\"WMI_PAYMENT_AMOUNT\"]; $data->pay_id = $_REQUEST[\"WMI_PAYMENT_NO\"]; $data->email_user = $_REQUEST[\"USER_ID\"]; $data->pay_type = $_REQUEST[\"TYPE_PAY\"]; if (!isset($_REQUEST[\"WMI_SIGNATURE\"])) $this->print_answer(\"Retry\", \"Отсутствует параметр WMI_SIGNATURE\"); if (!isset($_REQUEST[\"WMI_PAYMENT_NO\"])) $this->print_answer(\"Retry\", \"Отсутствует параметр WMI_PAYMENT_NO\"); if (!isset($_REQUEST[\"WMI_ORDER_STATE\"])) $this->print_answer(\"Retry\", \"Отсутствует параметр WMI_ORDER_STATE\"); // Извлечение всех параметров POST-запроса, кроме WMI_SIGNATURE foreach($_REQUEST 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 . $secret_key))); //Сравнение полученной подписи с подписью W1 if ($signature == $_REQUEST[\"WMI_SIGNATURE\"]){ if (strtoupper($_REQUEST[\"WMI_ORDER_STATE\"]) == \"ACCEPTED\"){ // TODO: Пометить заказ, как «Оплаченный» в системе учета магазина if(!parent::get_pay($data)){ //print_answer(\"Ok\", \"Заказ #\" . $_POST[\"WMI_PAYMENT_NO\"] . \" оплачен!\"); print \"WMI_RESULT=\" . strtoupper(\"Ok\") . \"&\"; print \"WMI_DESCRIPTION=\" .urlencode(\"Заказ #\" . $_POST[\"WMI_PAYMENT_NO\"] . \" оплачен!\"); parent::insert_pay($data); exit; } }else{ // Случилось что-то странное, пришло неизвестное состояние заказа $this->print_answer(\"Retry\", \"Неверное состояние \". $_REQUEST[\"WMI_ORDER_STATE\"]); } }else{ // Подпись не совпадает, возможно вы поменяли настройки интернет-магазина $this->print_answer(\"Retry\", \"Неверная подпись \" . $_REQUEST[\"WMI_SIGNATURE\"],$signature); } } function print_answer($result, $description,$signature=false){ wrp_mail_payment_error($signature); print \"WMI_RESULT=\" . strtoupper($result) . \"&\"; print \"WMI_DESCRIPTION=\" .urlencode($description); exit(); } } }

5) Скрины настроек прилагаю, но вроде все ок.
a)ЕК ЕК
b)Админка Админка
c)Страницы Страницы

ПС:Написал еще супорту ЕК, жду ответ. Надеюсь общими усилиями справимся 🙂


Fatal error: Uncaught Error: Call to undefined function ads_get_box() in /var/www/www-root/data/www/codeseller.ru/wp-content/themes/codeseller/includes/adv.php:15 Stack trace: #0 /var/www/www-root/data/www/codeseller.ru/wp-includes/class-wp-hook.php(310): add_adv_content_after_first_forum_post('pfm-single-post...', '/var/www/www-ro...') #1 /var/www/www-root/data/www/codeseller.ru/wp-includes/class-wp-hook.php(334): WP_Hook->apply_filters('', Array) #2 /var/www/www-root/data/www/codeseller.ru/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #3 /var/www/www-root/data/www/codeseller.ru/wp-content/plugins/wp-recall/functions/files.php(57): do_action('rcl_include_tem...', 'pfm-single-post...', '/var/www/www-ro...') #4 /var/www/www-root/data/www/codeseller.ru/wp-content/plugins/wp-recall/add-on/prime-forum/functions-templates.php(117): rcl_include_template('pfm-single-post...', '/var/www/www-ro...') #5 /var/www/www-root/data/www/codeseller.ru/wp-content/plugins/wp-recall/add-on/prime-forum/themes/prime-first/templates/pfm in /var/www/www-root/data/www/codeseller.ru/wp-content/themes/codeseller/includes/adv.php on line 15