Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Добрый день!

 

Подключаю модуль оплаты «Яндекс.Деньги для юрлиц». При проведении тестовых платежей всё выглядит хорошо, но специалисты Яндекса сообщают о некорректном ответе магазина:

 

<?xml version="1.0" encoding="UTF-8"?>    <checkOrderResponse performedDatetime="2014-05-07T15:44:08+04:00"  code="200" invoiceId="2000000156442"     message="Этот заказ уже оплачен" shopId="тутидмагазинабыл"/>
 

И вот «Этот заказ уже оплачен» это ошибка.

 

Подскажите, пожалуйста, как это можно устранить? При этом, те же специалисты Яндеса говорят, что я не первый с такой ошибкой на Симпле.

Ссылка на сообщение
Поделиться на другие сайты

А вы проверьте стоит ли у этого заказа в админке галочка "Оплачен".

Да, стоит. Внешне, со стороны Симплы всё ок. Как покупатель вижу что заказа оплачен, пришло письмо. Как админ вижу что сменился статус на «оплачен» и каким способом.

Ссылка на сообщение
Поделиться на другие сайты

Да, стоит. Внешне, со стороны Симплы всё ок. Как покупатель вижу что заказа оплачен, пришло письмо. Как админ вижу что сменился статус на «оплачен» и каким способом.

Ну вот заказ оплачен и выдает вам ошибку что заказ оплачен и повторная оплата не требуется.

Что тут не понятного?

Ссылка на сообщение
Поделиться на другие сайты

Ну вот заказ оплачен и выдает вам ошибку что заказ оплачен и повторная оплата не требуется.

Что тут не понятного?

Так ведь это не вторичный запрос. Ответ невпопад. Да и в Яндексе говорят, что такая ошибка не в первый раз и такое уже исправляли.

 

 К слову, вот аналогичная ситуация — http://forum.simplacms.ru/topic/7337-%D0%BA%D0%BE%D0%B4%D1%8B-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%BE%D0%B2-%D0%BF%D1%80%D0%B8-%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5-%D1%8F%D0%BD%D0%B4%D0%B5%D0%BA%D1%81-%D0%B4%D0%B5%D0%BD%D1%8C%D0%B3%D0%B0%D0%BC%D0%B8-%D0%B8-qiwi/

Ссылка на сообщение
Поделиться на другие сайты

Так ведь это не вторичный запрос. Ответ невпопад. Да и в Яндексе говорят, что такая ошибка не в первый раз и такое уже исправляли.

 

 К слову, вот аналогичная ситуация — http://forum.simplacms.ru/topic/7337-%D0%BA%D0%BE%D0%B4%D1%8B-%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%BE%D0%B2-%D0%BF%D1%80%D0%B8-%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5-%D1%8F%D0%BD%D0%B4%D0%B5%D0%BA%D1%81-%D0%B4%D0%B5%D0%BD%D1%8C%D0%B3%D0%B0%D0%BC%D0%B8-%D0%B8-qiwi/

Если попытаться оплатить заказ у которого статус стоит "Оплачен" то выдаст ошибку и это правильно.

Ссылка на сообщение
Поделиться на другие сайты

Если попытаться оплатить заказ у которого статус стоит "Оплачен" то выдаст ошибку и это правильно.

Так ведь никто этого не пытается делать. 

Ссылка на сообщение
Поделиться на другие сайты

Чуток подробностей от Яндекса:

«на пеймент фазе ответ должен быть в формате

<?xml version="1.0" encoding="UTF-8"?> <paymentAvisoResponse performedDatetime="2014-05-08T00:00:15+04:00" code="0" invoiceId="2000149493529" shopId="14557"/>
 

Далее, отбивать повторные запросы на пеймент также нельзя. Если есть повторный запрос – значит ответы на пейменте до сих пор были некорректны.»

Ссылка на сообщение
Поделиться на другие сайты

У меня подобная проблема. Настраиваю сейчас Яндекс деньги для юридических лиц.


Внешне платёж на тест проходит. Со стороны покупателя пишется, что успешно.


В админке платёж показывается что в статусе оплачен.


Но специалисты Яндекса говорят следущее:


 


===============================================


Добрый день!


Вообще, у вас ни одного успешного платежа нет.


Ошибка в том, что вы успешно отвечаете нам на чек-запрос, а на пеймент отвечаете вот этим:


<br /> <b>Parse error</b>:  syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in <b>/home/cp966810/public_html/api/Simpla.php</b> on line <b>40</b><br />


 


Т.о. система повторяет запрос на пеймент-урл еще 6 раз. Если ни разу успешный ответ не получили, то платеж помечается неуспехом и возвращается на счет пользователя.


==================================================


 


Ещё один ответ от Яндекса:


==================================================


Пока не успешен, т.к. вы на пейменте отвечаете «чеком»:


<?xml version="1.0" encoding="UTF-8"?>          <checkOrderResponse performedDatetime="2014-05-14T09:27:10+00:00"        code="200" invoiceId="2000000158993"              message="Этот заказ уже оплачен" shopId="15929"/>


На пейменте надо отвечать соответственно checkOrderResponse. Всегда с code=0 на все повторные запросы.


==================================================


 


Есть ли решение?


Ссылка на сообщение
Поделиться на другие сайты

Я не программист, за кривость не ругайте. Но путём переговоров с сотрудниками яндекса работает только такой вариант в тестовом режиме.

 

в файле callback.php поправлено в блоке кода функции (стр.108):

 

 
function print_error($text)
 
========================================
 
    <checkOrderResponse performedDatetime="'.$performedDatetime.'" 
    code="200" invoiceId="'.$invoice_id.'" 
 
заменёт на :
 
    <paymentAvisoResponse performedDatetime="'.$performedDatetime.'" 
    code="0" invoiceId="'.$invoice_id.'" 
Ссылка на сообщение
Поделиться на другие сайты

 

Я не программист, за кривость не ругайте. Но путём переговоров с сотрудниками яндекса работает только такой вариант в тестовом режиме.

 

в файле callback.php поправлено в блоке кода функции (стр.108):

 

 
function print_error($text)
 
========================================
 
    <checkOrderResponse performedDatetime="'.$performedDatetime.'" 
    code="200" invoiceId="'.$invoice_id.'" 
 
заменёт на :
 
    <paymentAvisoResponse performedDatetime="'.$performedDatetime.'" 
    code="0" invoiceId="'.$invoice_id.'" 

 

 

То есть они сами такое принимают к работе? Магазин проходит проверку?

Ссылка на сообщение
Поделиться на другие сайты

Платёж проходит. Проблем нет. Я посылал полностью исправленный скрипт в Яндекс.

 

Вот ответ специалиста:

=========================================

Сам скрипт вполне рабочий и не видно криминала в нем.

Процесс оплаты такой:

1) запрос на чек урл

2) ваш ответ checkOrderResponse (если неверный, то процесс прерывается полностью)

3) запрос на пеймент урл

4) ваш ответ paymentAvisoResponse (если ответ корректный, все платеж успешен; если ответ не корректный, то повторяем запрос еще до 6 раз.)

 

Почему у вас в мессадж засовывается о уже совершенной оплате – сложно сказать.

 --------------------------------------------------------------------------------

 

Яндекс просит удалить в этом скрипте строку

print '<?xml version="1.0" encoding="UTF-8"?> 

    <paymentAvisoResponse performedDatetime="'.$performedDatetime.'" 
    code="0" invoiceId="'.$invoice_id.'" 
    message="'.$text.'" shopId="'.$shop_id.'"/>';
 
================================================
строку message="'.$text.'"
за ненадобностью, чтобы при ответе не плодились сбойные сообщения о повторной оплате
Ссылка на сообщение
Поделиться на другие сайты

но без мессаджа платёж проходит. 

 

У вас магазин прошёл проверку? У меня с этими изменениями не прошёл. Пишут что всё равно не правильные ответы шлёт магазин:

 

«По прежнему ответы на пейменте некорректные:

<?xml version="1.0" encoding="UTF-8"?>    <checkOrderResponse performedDatetime="2014-05-15T08:35:48+04:00"  code="0" invoiceId="2000000159435"         shopId="15817"/>
 

Обращаю внимание на  «checkOrderResponse»

Ссылка на сообщение
Поделиться на другие сайты

И вообще, урлы корректные?

 

<checkUrl>https://***/payment/YandexMoney/callback.php</checkUrl>

<payUrl>https://***/payment/YandexMoney/callback.php</payUrl>

 

Они точно должны быть одинаковыми?

Ссылка на сообщение
Поделиться на другие сайты

выкладываю конец своего файла callback.php

=====================================

$datetime = new DateTime();
$performedDatetime = $datetime->format('c');
print '<?xml version="1.0" encoding="UTF-8"?> 
<checkOrderResponse performedDatetime="'.$performedDatetime.'" 
code="0" invoiceId="'.$invoice_id.'" 
shopId="'.$shop_id.'"/>';
 
 
function print_error($text)
{
    $datetime = new DateTime();
    $performedDatetime = $datetime->format('c');
    $shop_id = intval($_POST['shopId']);
    $invoice_id = intval($_POST['invoiceId']);
 
    print '<?xml version="1.0" encoding="UTF-8"?> 
    <paymentAvisoResponse performedDatetime="'.$performedDatetime.'" 
    code="0" invoiceId="'.$invoice_id.'" 
    shopId="'.$shop_id.'"/>';
 
    exit();
}
=====================================================
 
Сравните со своим. Платежи проходят.
И давайте сравним  версии SIMPLA у меня 2.3.3
Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

подскажите а ssl тоже включаете ? Самоподписной или покупаете.. проясните данный момент 

Сертификат обязателен, но достаточно самоподписанного.

Ссылка на сообщение
Поделиться на другие сайты

вышла еще одна проблема , теперь пишет при платеже через Яндекс деньги : 

 

При оформлении платежа были указаны неверные данные. Уточните данные, введенные в форму оплаты, и повторите платеж.

 

У вас не было такого?

Ссылка на сообщение
Поделиться на другие сайты

вышла еще одна проблема , теперь пишет при платеже через Яндекс деньги : 

 

При оформлении платежа были указаны неверные данные. Уточните данные, введенные в форму оплаты, и повторите платеж.

 

У вас не было такого?

У меня тоже самое, не пойму что и как

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...