Здравствуйте,
Необходима помощь (на платной основе) по интеграции с Яндекс.деньги.
Суть проблемы: не проходит checkOrder, система возвращает пустой ответ.
в ЛС
Интеграция с Яндекс.деньги
Интеграция с Яндекс.деньги
viewtopic.php?f=5&t=1766
начните отсюда
начните отсюда
Убей их всех! Бог потом рассортирует...
Интеграция с Яндекс.деньги
я так понимаю отвечает за это дело файл 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
по дебагу упирается все в это дело, куда дальше копать, не знаю:(
[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
Интеграция с Яндекс.деньги
Код: Выделить всё
SELECT `ID`,`Summ` FROM `Invoices` WHERE `ID` = 12553
этот запрос что возвращает?
Отправлено спустя 2 минуты 37 секунд:
и покажите то что приходит от яндекса - набор переменных какой.
там несколько вариантов для 101 ошибки
Убей их всех! Бог потом рассортирует...
Интеграция с Яндекс.деньги
Код: Выделить всё
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] ...
Причина: Товарищщи, цените чужое время, юзайте кнопочку [code] ...
Интеграция с Яндекс.деньги
так. стоп.
я всё понять не мог чё ж мне глаза-то режет
файлик, вообще-то должен называться Yandex.comp.php
и уже года 4 как он переименован из старого имени - раньше он был как у вас
у вас версия биллинга какая? яндекс-деньги в старой - не работали.
это - точно, ибо я их подправлял чтоб заработали, и было это уже после переименования всех *.comp в *.comp.php
я всё понять не мог чё ж мне глаза-то режет
/home/svyazist/data/hosts/billing/comp/www/Merchant/Yandex.comp
файлик, вообще-то должен называться Yandex.comp.php
и уже года 4 как он переименован из старого имени - раньше он был как у вас
у вас версия биллинга какая? яндекс-деньги в старой - не работали.
это - точно, ибо я их подправлял чтоб заработали, и было это уже после переименования всех *.comp в *.comp.php
Убей их всех! Бог потом рассортирует...
Интеграция с Яндекс.деньги
про яндекс не знал, думал все работало и раньше....версия да, древнючая, но впринципе меня устраивало, пока об яндекс не споткнулся....т.е. без полного апдейта никак?
вопрос теперь только как обновиться, штатный способ в "Проверить наличие обновлений" пишет что "ничего нет", если накатить все патчи на базу, что есть в дистрибутиве, и структурировать нормально должна зацепится?
пока думаю так:
1. сделать установку с нуля на другом хосте
2. склонировать рабочую базу , и накатить патчи
3. протестировать, если все ок, перенести на рабочий хост
вопрос теперь только как обновиться, штатный способ в "Проверить наличие обновлений" пишет что "ничего нет", если накатить все патчи на базу, что есть в дистрибутиве, и структурировать нормально должна зацепится?
пока думаю так:
1. сделать установку с нуля на другом хосте
2. склонировать рабочую базу , и накатить патчи
3. протестировать, если все ок, перенести на рабочий хост
Интеграция с Яндекс.деньги
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</Cpp>
+ <Cpp>https://demomoney.yandex.ru/eshop.xml</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</Cpp>
+ <Cpp>https://demomoney.yandex.ru/eshop.xml</Cpp>
<Hash />
<ContractsTypes>
<Default>1</Default>
srv0#
Убей их всех! Бог потом рассортирует...
Интеграция с Яндекс.деньги
спасибо большое, буду пробовать
Отправлено спустя 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 присуствует,
но при это , как говорится, все работает
Отправлено спустя 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 присуствует,
но при это , как говорится, все работает
Интеграция с Яндекс.деньги
svyazist писал(а):Источник цитаты [!] [1024]-[comp/www/Merchant/Yandex]: проверка подлинности завершилась не удачей в линии 37 файла /home/svyazist/data/core/Load.php(148) : eval()'d code
смотрите проверку, её настройки
Убей их всех! Бог потом рассортирует...
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей