Интеграция с Яндекс.деньги

Ошибки, проблемы, способы их решения.
svyazist
Сообщения: 13
Зарегистрирован: 2009-12-15 15:34:56

Интеграция с Яндекс.деньги

Сообщение svyazist » 2016-04-28 1:07:47

Здравствуйте,
Необходима помощь (на платной основе) по интеграции с Яндекс.деньги.
Суть проблемы: не проходит checkOrder, система возвращает пустой ответ.
в ЛС

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Интеграция с Яндекс.деньги

Сообщение Alex Keda » 2016-04-28 15:43:06

viewtopic.php?f=5&t=1766
начните отсюда
Убей их всех! Бог потом рассортирует...

svyazist
Сообщения: 13
Зарегистрирован: 2009-12-15 15:34:56

Интеграция с Яндекс.деньги

Сообщение svyazist » 2016-04-28 17:50:20

я так понимаю отвечает за это дело файл hosts/billing/comp/www/Merchant/Yandex.com
по дебагу упирается все в это дело, куда дальше копать, не знаю:(

[16:44:59.95][50560] [MySQL->Query]: SELECT `ID` FROM `Clauses` WHERE (`Partition` = '/Merchant/Yandex')
[16:44:59.95][50560] [Exception]: [ROWS_NOT_FOUND]=(Записи не найдены)
[16:44:59.95][50560] [!] [1024]-[MemoryCache_Get]: не удалось извлечь объект в линии 93 файла /home/svyazist/data/hosts/root/system/libs/auto/MemoryCache.lib
[16:44:59.95][50560] [!] [8]-Undefined index: SessionID в линии 36 файла /home/svyazist/data/hosts/billing/system/modules/Main.mod
[16:44:59.95][50560] Load file '/home/svyazist/data/hosts/billing/comp/www/Merchant/Yandex.comp'
[16:44:59.95][50560] [!] [8]-Undefined index: orderIsPaid в линии 17 файла /home/svyazist/data/core/Load.php(148) : eval()'d code
[16:44:59.95][50560] [MySQL->Query]: SELECT `ID`,`Summ` FROM `Invoices` WHERE `ID` = 12553
[16:44:59.95][50560] [!] [1024]-101 в линии 96 файла /home/svyazist/data/core/Load.php(148) : eval()'d code
[16:44:59.95][50560] [!] [1024]-[Comp_Load]: не возможно загрузить компонент в линии 48 файла /home/svyazist/data/hosts/root/system/libs/auto/Comp.lib
[16:44:59.95][50560] [!] [1024]-[system/modules/Main]: не удалось загрузить основной компонент системы в линии 64 файла /home/svyazist/data/hosts/billing/system/modules/Main.mod

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Интеграция с Яндекс.деньги

Сообщение Alex Keda » 2016-04-28 21:47:26

Код: Выделить всё

SELECT `ID`,`Summ` FROM `Invoices` WHERE `ID` = 12553

этот запрос что возвращает?

Отправлено спустя 2 минуты 37 секунд:
и покажите то что приходит от яндекса - набор переменных какой.
там несколько вариантов для 101 ошибки
Убей их всех! Бог потом рассортирует...

svyazist
Сообщения: 13
Зарегистрирован: 2009-12-15 15:34:56

Интеграция с Яндекс.деньги

Сообщение svyazist » 2016-04-29 0:49:01

Код: Выделить всё

SELECT `ID`,`Summ` FROM `Invoices` WHERE `ID` = 12553;
+-------+------+
| ID    | Summ |
+-------+------+
| 12553 | 1.00 |
+-------+------+
1 row in set (0.00 sec)



от яндекса приходит это:

Код: Выделить всё

shopSumCurrencyPaycash=10643
rebillingOn=false
orderSumBankPaycash=1003
cps_region_id=18
orderNumber=12553
orderSumAmount=1.00
orderSumCurrencyPaycash=10643
merchant_order_id=12553_270416165951_00000_55827
PaymentTypeCD=PC
paymentPayerCode=4100323340901
cps_rebillingAllowed=false
customerNumber=2001
paymentType=PC
requestDatetime=2016-04-27T17:02:06.727+03:00
cps_user_country_code=RU
orderCreatedDatetime=2016-04-27T16:59:52.592+03:00
action=checkOrder
invoiceId=2000000761817
shopId=55827
scid=534965
shopSumBankPaycash=1003
shopSumAmount=0.94
md5=88EAF452B36E5544BC8826EC2B0F0F4F
Последний раз редактировалось Alex Keda 2016-04-29 10:05:24, всего редактировалось 1 раз.
Причина: Товарищщи, цените чужое время, юзайте кнопочку [code] ...

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Интеграция с Яндекс.деньги

Сообщение Alex Keda » 2016-04-29 10:25:35

так. стоп.
я всё понять не мог чё ж мне глаза-то режет
/home/svyazist/data/hosts/billing/comp/www/Merchant/Yandex.comp

файлик, вообще-то должен называться Yandex.comp.php

и уже года 4 как он переименован из старого имени - раньше он был как у вас

у вас версия биллинга какая? яндекс-деньги в старой - не работали.
это - точно, ибо я их подправлял чтоб заработали, и было это уже после переименования всех *.comp в *.comp.php
Убей их всех! Бог потом рассортирует...

svyazist
Сообщения: 13
Зарегистрирован: 2009-12-15 15:34:56

Интеграция с Яндекс.деньги

Сообщение svyazist » 2016-04-29 10:44:57

про яндекс не знал, думал все работало и раньше....версия да, древнючая, но впринципе меня устраивало, пока об яндекс не споткнулся....т.е. без полного апдейта никак?
вопрос теперь только как обновиться, штатный способ в "Проверить наличие обновлений" пишет что "ничего нет", если накатить все патчи на базу, что есть в дистрибутиве, и структурировать нормально должна зацепится?
пока думаю так:
1. сделать установку с нуля на другом хосте
2. склонировать рабочую базу , и накатить патчи
3. протестировать, если все ок, перенести на рабочий хост

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Интеграция с Яндекс.деньги

Сообщение Alex Keda » 2016-04-29 13:05:53

svyazist писал(а):Источник цитаты про яндекс не знал, думал все работало и раньше....версия да, древнючая, но впринципе меня устраивало, пока об яндекс не споткнулся....т.е. без полного апдейта никак?

из репозитория файлик возьмите, подсуньте вместо своего
или сравните - там немного вроде правок-то было... не помню уже

svyazist писал(а):Источник цитаты вопрос теперь только как обновиться, штатный способ в "Проверить наличие обновлений" пишет что "ничего нет",

я незнаю даже, куда там в вашей версии за обновлениями оно ходит....
видимо, не туда куда нынешние...

svyazist писал(а):Источник цитаты если накатить все патчи на базу, что есть в дистрибутиве, и структурировать нормально должна зацепится?

нет, скорей всего. там много патчей базы сделаны php файлами, т.к. сложные модификации делались - со сменой колонок, перекладывание из таблиц в таблицы и т.п...

можно тупо поверху раскатать все файлы и нажать послденюю кнопку в обновлялке...
может и прокатит... но на тестовом, не боевом =))
и с сохранением отладочного лога. чтоб потом мона было понять - чё не так пошло и чё доделать руками

svyazist писал(а):Источник цитаты 1. сделать установку с нуля на другом хосте
2. склонировать рабочую базу , и накатить патчи
3. протестировать, если все ок, перенести на рабочий хост

может прокатить.
но - сменилось много таблиц. сервера хостинга ушли в таблицу Servers, учёт заказов в таблицу OrdersConsider, и т.п.
это реально уже совсем другой биллинг, с иной внутренней структурой.

я бы оценил число юзеров и заказов, и подумал насчёт "вручную" перетащщить

Отправлено спустя 2 минуты 8 секунд:
хотя вру... я бы сделал дамп нынешней базы, выковырнул из него муор всякий лишний, а потом по кусочкам, по табличкам, с правкой изменившихся колонок/полей всё импортирвоал в новый.

но это реально мутная ручная работа, и надо понимать что к чему, зачем... и в каком порядке таблицы тащщить
далеко не в алфавитном - там же ключи в них с одних на другие ...

Отправлено спустя 6 минут 21 секунду:
вам феерически повезло.
когда я писал эти патчи, у меня ещё не было права коммита, поэтому они в багтрекере есть как текст

куда сунуть и на что наложить - сами разбирайтесь =)

Код: Выделить всё

srv0# diff -Nru ./hosts/billing/comp/www/Merchant/Yandex.comp.orig ./hosts/billing/comp/www/Merchant/Yandex.comp
--- ./hosts/billing/comp/www/Merchant/Yandex.comp.orig 2011-05-25 15:08:16.000000000 +0400
+++ ./hosts/billing/comp/www/Merchant/Yandex.comp 2011-05-25 15:07:54.000000000 +0400
@@ -29,7 +29,7 @@
   $Args['shopSumCurrencyPaycash'],
   $Args['orderSumBankPaycash'],
   $Args['shopId'],
- $OrderID,
+ $Args['invoiceId'],
   $Args['customerNumber'],
   $Settings['Hash']
 );
@@ -37,7 +37,7 @@
 if(StrToUpper(Md5(Implode(';',$Md5))) != $Args['md5'])
   return ERROR | @Trigger_Error('[comp/www/Merchant/Yandex]: проверка подлинности завершилась не удачей');
 #-------------------------------------------------------------------------------
-$Date = Date('Y-md\TH:i:s\Z',Time() - 7200);
+$Date = Date('c', Time());
 #-------------------------------------------------------------------------------
 $ShopID = $Settings['Send']['ShopID'];
 #-------------------------------------------------------------------------------
@@ -50,7 +50,7 @@
     return ERROR | @Trigger_Error(400);
   case 'array':
     #---------------------------------------------------------------------------
- if(Round($Invoice['Summ']/$Settings['Course'],2) != $Args['shopSumCurrencyPaycash'])
+ if(Round($Invoice['Summ']/$Settings['Course'],2) != $Args['orderSumAmount'])
       return ERROR | @Trigger_Error('[comp/Merchant/Yandex]: проверка суммы платежа завершилась не удачей');
     #---------------------------------------------------------------------------
     $InvoiceID = $Invoice['ID'];
@@ -59,13 +59,13 @@
       case 'Check':
 #-------------------------------------------------------------------------------
 $Result = <<<EOD
-<?xml version="1.0" encoding="utf-8"
+<?xml version="1.0" encoding="windows-1251"?>
 <response performedDatetime="%s">
- <result code="0" action="Check" shopId="%s" orderNumber="%s" />
+ <result code="0" action="Check" shopId="%s" invoiceId="%s" />
 </response>
 EOD;
 #-------------------------------------------------------------------------------
- return SPrintF($Result,$Date,$ShopID,$InvoiceID);
+ return SPrintF(trim($Result),$Date,$Args['shopId'],$Args['invoiceId']);
       case 'PaymentSuccess':
         #-----------------------------------------------------------------------
         $Comp = Comp_Load('Users/Init',100);
@@ -82,13 +82,13 @@
           case 'array':
 #-------------------------------------------------------------------------------
 $Result = <<<EOD
-<?xml version="1.0" encoding="utf-8"
+<?xml version="1.0" encoding="windows-1251"?>
 <response performedDatetime="%s">
- <result code="0" action="PaymentSuccess" shopId="%s" orderNumber="%s" />
+ <result code="0" action="PaymentSuccess" shopId="%s" invoiceId="%s" />
 </response>
 EOD;
 #-------------------------------------------------------------------------------
- return SPrintF($Result,$Date,$ShopID,$InvoiceID);
+ return SPrintF(trim($Result),$Date,$Args['shopId'],$Args['invoiceId']);
           default:
             return ERROR | @Trigger_Error(101);
         }
====
ещё один дифф - для включения тестового режима:
srv0# diff -Nru ./hosts/billing/config/Config.xml.orig ./hosts/billing/config/Config.xml
--- ./hosts/billing/config/Config.xml.orig 2011-03-22 22:12:41.000000000 +0300
+++ ./hosts/billing/config/Config.xml 2011-05-24 16:38:46.000000000 +0400
@@ -341,13 +341,14 @@
     <PaymentTypeCD>PC</PaymentTypeCD>
     <ShowCaseID>1010</ShowCaseID>
     <ShopID />
+ <scid>3307</scid>
     <Sum>auto</Sum>
     <orderNumber>auto</orderNumber>
     <customerNumber>auto</customerNumber>
     <md5>auto</md5>
    </Send>
    <Comp>Yandex</Comp>
- <Cpp>http://money.yandex.ru/selectwallet.xml&lt;/Cpp>
+ <Cpp>https://demomoney.yandex.ru/eshop.xml&lt;/Cpp>
    <Hash />
    <ContractsTypes>
     <Default>1</Default>
srv0#

Добавление отстутсвующего параметра scid

Код: Выделить всё

srv0# diff -Nru ./hosts/billing/config/Config.ini.orig ./hosts/billing/config/Config.ini
--- ./hosts/billing/config/Config.ini.orig 2010-03-03 13:05:27.000000000 +0300
+++ ./hosts/billing/config/Config.ini 2011-05-26 12:28:50.000000000 +0400
@@ -45,6 +45,7 @@
 Yandex="Яндекс.Деньги"
 wbp_ShopKeyID="Номер магазина"
 wbp_ShopEncryptionKey="Ключ магазина"
+scid="Номер витрины магазина"
 Moneybookers="Moneybookers"
 Checkout="2Checkout"
 demo="Тестовый режим|select|Нет=N,Да=Y"
@@ -69,4 +70,4 @@
 Uin="Номер"
 Password="Пароль"
 
-Tasks="Задачи"
\ No newline at end of file
+Tasks="Задачи"
srv0#


плюс конифиг поправил:

Код: Выделить всё

srv0# diff -Nru ./hosts/billing/config/Config.xml.orig ./hosts/billing/config/Config.xml
--- ./hosts/billing/config/Config.xml.orig 2011-03-22 22:12:41.000000000 +0300
+++ ./hosts/billing/config/Config.xml 2011-05-26 12:27:24.000000000 +0400
@@ -341,13 +341,14 @@
     <PaymentTypeCD>PC</PaymentTypeCD>
     <ShowCaseID>1010</ShowCaseID>
     <ShopID />
+ <scid />
     <Sum>auto</Sum>
     <orderNumber>auto</orderNumber>
     <customerNumber>auto</customerNumber>
     <md5>auto</md5>
    </Send>
    <Comp>Yandex</Comp>
- <Cpp>http://money.yandex.ru/selectwallet.xml&lt;/Cpp>
+ <Cpp>https://demomoney.yandex.ru/eshop.xml&lt;/Cpp>
    <Hash />
    <ContractsTypes>
     <Default>1</Default>
srv0#
Убей их всех! Бог потом рассортирует...

svyazist
Сообщения: 13
Зарегистрирован: 2009-12-15 15:34:56

Интеграция с Яндекс.деньги

Сообщение svyazist » 2016-04-29 16:35:18

спасибо большое, буду пробовать

Отправлено спустя 2 часа 56 минут 31 секунду:
не сильно помогло вообщем:(
самих файлов наверно не сохранилось в бэкапах у вас посмотреть?

а так все одно и тоже, сперва

[8]-Undefined index: orderIsPaid в линии 17 файла /home/svyazist/data/core/Load.php(148) : eval()'d code

но orderIsPaid действительно отсутствует в запросе от яндекса,
если его убрать, то

[!] [1024]-[comp/www/Merchant/Yandex]: проверка подлинности завершилась не удачей в линии 37 файла /home/svyazist/data/core/Load.php(148) : eval()'d code

Отправлено спустя 5 минут 6 секунд:
примечательно, что этот orderIsPaid и в последней версии Yandex.comp.php присуствует,
но при это , как говорится, все работает

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Интеграция с Яндекс.деньги

Сообщение Alex Keda » 2016-04-29 17:04:42

svyazist писал(а):Источник цитаты [!] [1024]-[comp/www/Merchant/Yandex]: проверка подлинности завершилась не удачей в линии 37 файла /home/svyazist/data/core/Load.php(148) : eval()'d code

смотрите проверку, её настройки
Убей их всех! Бог потом рассортирует...


Вернуться в «Решение проблем»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость