Jump to content

Ошибка «заказ уже оплачен»


Recommended Posts

Добрый день!

 

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

 

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

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

 

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

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

Link to post
Share on other sites

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

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

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

 

 К слову, вот аналогичная ситуация — 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/

Link to post
Share on other sites

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

 

 К слову, вот аналогичная ситуация — 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/

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

Link to post
Share on other sites

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

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

Link to post
Share on other sites

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

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

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

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

Link to post
Share on other sites

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


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


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


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


 


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


Добрый день!


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


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


<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 на все повторные запросы.


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


 


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


Link to post
Share on other sites

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

 

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

 

 
function print_error($text)
 
========================================
 
    <checkOrderResponse performedDatetime="'.$performedDatetime.'" 
    code="200" invoiceId="'.$invoice_id.'" 
 
заменёт на :
 
    <paymentAvisoResponse performedDatetime="'.$performedDatetime.'" 
    code="0" invoiceId="'.$invoice_id.'" 
Link to post
Share on other sites

 

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

 

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

 

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

 

 

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

Link to post
Share on other sites

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

 

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

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

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

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

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.'"
за ненадобностью, чтобы при ответе не плодились сбойные сообщения о повторной оплате
Link to post
Share on other sites

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

 

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

 

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

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

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

Link to post
Share on other sites

выкладываю конец своего файла 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
Link to post
Share on other sites
  • 2 months later...

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

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

Link to post
Share on other sites

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

 

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

 

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

Link to post
Share on other sites

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

 

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

 

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

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

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...