Здравствуйте.
Автоматически не меняются статусы заказа при его оплате.
Настройки Commerce следующие:
1)
2)
3)
Перехожу на страницу любого товара:
Нажимаю "Оформить заказ". Сразу прилетает письмо на почту.
Как для админа с указанием всех данных (заказ номер 12):
Нажимаю "Оплатить через Яндекс.Касса" (к слову, Яндекс.Касса настроена на боевой режим, все работает):
Перекидывает на страницу оплаты:
Заполняю все данные карты, нажимаю "Оплатить". Открывается страница, куда ввожу код из смс:
После ввода кода открывается страница об успешно выполненном платеже:
Но вот письмо на почту о том, что статус заказа сменился на "Оплачен" не приходит.
Если заглянуть в ЛК, то в разделе "Заказы" напротив того самого заказа под номером 12 стоит статус "Неоплачен":
Приходится переходить в админку и там менять статус на "Оплачен":
И только после этих шагов товар становится доступен для покупателя:
Уважаемые админы, прошу помочь сделать так, чтобы статусы менялись автоматически.
Настраивал именно так, как указано в инструкции.
В настройках дополнения указывал все страницы RESULT, SUCCESS, для успешной оплаты, для неудачной оплаты:
Однако, сейчас проверил в личном кабинете Яндекс.Кассы, что страницы успеха successUrl и ошибки shopFailUrl
установлены с динамическими адресами.
Скажите, данное обстоятельство может влиять на корректность прохождения платежей?
Следуя инструкции, сделал такие шаги:
1. Создал пустую страницу result вида site.ru/result
2. Создал пустую страницу success вида site.ru/success
3. Создал страницу с текстом о неудачной оплате (fail) вида site.ru/fail
4. Создал страницу с текстом об удачной оплате вида site.ru/paid
5. В настройках плагина "Настройки магазина"->"Платежные системы"->"Сервисные страницы платежных систем" через выпадающий список указал созданные страницы
6. Интерфейс ЛК Яндекс.Кассы немного отличается интерфейса, указанного на скриншотах в инструкции.
1) Способ подключения к Яндекс.Кассе: CMS модуль «Другое (старый протокол)» - только в данном варианте можно было указать successURL и failURL (теперь данную опцию не сменить)
2) checkUrl и avisoUrl указаны вида site.ru/result
3) successUrl и shopFailUrl были ранее выставлены как динамические, я поменял на следующие:
successUrl вида site.ru/paid
shopFailUrl вида site.ru/fail
7. Указал в настройках плагина "Настройки магазина"->"Платежные системы" платежный агрегатор - Яндекс.Касса, прописал настройки подключения те же, что и в ЛК Яндекс.Кассы
Теперь после того, как в ЛК Яндекс.Кассы сменил динамические successUrl и shopFailUrl на те, что указаны выше, после оплаты товара на сайте и нажатии на кнопку "Вернуться в магазин" меня перекидывает на страницу об успешной оплате. То есть по идее, всё правильно настроено
Однако при переходе в ЛК в раздел "Заказы" статус оплаченного заказа всё равно не меняется на "Оплачен". И приходится снова вручную менять статус в админке сайта
Что в данной ситуации может быть преградой для автоматического проставления статуса заказа?
Описал проблему службе поддержки Яндекс.Касса.
От них пришел ответ:
Уточните, пожалуйста, правильно ли я понимаю, что у Вас модуль WP-Recall?
Если да, то в данной ситуации рекомендуем Вам обратится в службу поддержки данного модуля, так как ошибка возникает именно на запросе paymentAviso.
Во вложении прикладываю лог запросов и ответ на них по последнему платежу. С данным логом Вам необходимо обратится в их службу поддержки.
Лог запросов и ответов:
Request ----------------------------------------------------------------- idempotence-key: '5ec1d85e-9083-4e37-a33f-0e952acab6db' content-type: 'application/json' { "id": "00000000-0000-0000-0000-000000000000", "status": "0", "paid": false, "amount": { "value": "10.00", "currency": "RUB" }, "created_at": "0001-01-01T00:00:00", "refundable": false, "capture": false, "test": false, "save_payment_method": false, "payment_method_id": "2538e062-000f-5000-9000-125d65aea356" } ----------------------------------------------------------------- Response ----------------------------------------------------------------- { "id": "2538e75a-000f-5000-9000-1c9ee30c6899", "status": "pending", "paid": false, "amount": { "value": "10.00", "currency": "RUB" }, "confirmation": { "type": "redirect", "confirmation_url": "https://money.yandex.ru/api-pages/v3/3ds?acsUri=https%3A%2F%2Fkassa.yandex.ru%2Fsandbox%2Fbank-card%2F3ds&MD=157121*******-*******8972755854null&PaReq=Q1VSUkVOQ1k9UlVSJlRFUk1JTkFMPTk5OTk5OCZFWFBfWUVBUj0yMiZDVkMyX1JDPTAmUF9TSUdOPTNhNzhkYmFhNDNiMDUzYTg5ZDIzOThmYTQ4Zjg5NjhlYzM5YjEwOTMmRU1BSUw9bm9yZXBseSU0MG1vbmV5LnlhbmRleC5ydSZNRVJDSF9OQU1FPVlNJkRFU0M9MjUzOGU3NWEtMDAwZi01MDAwLTkwMDAtMWM5ZWUzMGM2ODk5Jk1FUkNIQU5UPTc5MDM2NzY4NjIxOTk5OSZDQVJEPTU1NTU1NTU1NTU1NTQ0NzcmTkFNRT0mT1JERVI9NTU2Mzc3ODg0NiZNRVJDSF9VUkw9bW9uZXkueWFuZGV4LnJ1JkFNT1VOVD0xMC4wMCZCQUNLUkVGPWh0dHBzJTNBJTJGJTJGbW9uZXkueWFuZGV4LnJ1JlRJTUVTVEFNUD0yMDE5MTAxNjA4MjM1NSZUUlRZUEU9MCZFWFA9MDImTk9OQ0U9MTIzNDU2Nzg5MEFCQ0RFRjE5NzhiMmQ5N2YyMWM0&TermUrl=https%3A%2F%2Fpaymentcard.yamoney.ru%3A443%2Fgates%2Fmb3dsdemoprovider" }, "created_at": "2019-10-16T08:23:54.826Z", "metadata": {}, "payment_method": { "type": "bank_card", "id": "2538e062-000f-5000-9000-125d65aea356", "saved": true }, "recipient": { "account_id": "620348", "gateway_id": "1602332" }, "refundable": false, "test": true } -----------------------------------------------------------------
romber сказал(а)
То есть по идее, всё правильно настроено
Не факт, что все верно настроено.
Проверяйте не на оплате заказа, а на пополнении личного баланса пользователя.
На этом сайте также настроена оплата через Яндекс.Кассу и все работает нормально, проблема не в коде подключения, а в настройках.
В присланных логах я не вижу ошибку, если она есть, то пусть пояснят какая именно.
Проверил. При пополнении личного счета пользователя происходит аналогичное - после ввода данных карты и списании с нее денежных средств баланс пользователя не увеличивается на оплаченную сумму.
Я уже даже не представляю, в чем может быть причина. Все возможные варианты рассмотрели, все данные указаны верно, все страницы созданы и настроены правильно как в настройках дополнения, так и в настройках ЛК Яндекс.Кассы - подтверждение на скриншотах.
Скажите, какие варианты еще можно проверить?
Уже просто руки опускаются.
romber сказал(а)
Проверил. При пополнении личного счета пользователя происходит аналогичное - после ввода данных карты и списании с нее денежных средств баланс пользователя не увеличивается на оплаченную сумму.
Было что то похожее с пополнением от других дополнений, блокировал плагин безопасности а имено блокировка редактора плагинов и тем.
А почему не настраиваете в тестовом режиме?
Данные высылаются в xml-формате, уточните у поддержки в каком формате они должны приходить, если в каком то другом, значит порядок подключения не соответствует требуемому.
вот такое тело ответа должно быть:
<?xml version="1.0" encoding="UTF-8"?> <paymentAvisoResponse performedDatetime="2019-10-15T08:49:36+00:00" code="0" invoiceId="2002050449649" shopId="******" />
Это пример ответа с этого сайта, если у вас формат такой же, то выясняйте у поддержки ЯК почему этот ответ не нравиться.
Здравствуйте еще раз.
Общался со службой поддержки Яндекс.Касса по телефону, описал им всю проблему. Они проверили все логи, настройки в личном кабинете Яндекс.Кассы. Кроме того, я им переслал всю информацию от вас.
Их ответ был следующим:
Здравствуйте.
Все верно, ответ на запрос paymentAviso должен быть присланного формата:
<?xml version="1.0" encoding="UTF-8"?> <paymentAvisoResponse performedDatetime="2019-10-15T08:49:36+00:00" code="0" invoiceId="2002050449649" shopId="******" />Но с вашей стороны приходит пустой ответ на наши запросы:
[2019-10-17T14:17:20.341+03:00] WARN [AvisoQueue-0-49] [QUEUE/AvisoQueue/2213459232] [25f8d18b2dcfa3f4] [] [CommonHttpClient] Response is not XML: response= [2019-10-17T14:17:20.341+03:00] INFO [AvisoQueue-0-49] [QUEUE/AvisoQueue/2213459232] [25f8d18b2dcfa3f4] [] [CommonHttpClient] resolveErrorType(): ru.yamoney.calypso.shops.adapters.ShopErrorException: Response is not XML Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog at [row,col {unknown-source}]: [1,0] at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:687) at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2220) at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2126) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1181) at ru.yamoney.calypso.shops.Util.checkXmlNestedLevel(Util.java:228) at ru.yamoney.calypso.shops.common.http.CommonHttpClient.preprocessResponse(CommonHttpClient.java:331) ... 11 moreВам нужно обратиться в поддержку вашего модуля.
Андрей, Владимир, очень прошу вас помочь мне разобраться с проблемой..
В настройках Яндекс.Кассы прописано:
Сайт магазина
Вы не можете просматривать опубликованные ссылки
То бишь прописан основной домен.
Сам магазин расположен на поддомене
shop.mysite.ru
На этом же поддомене добавляю товар в корзину и пытаюсь произвести оплату.
Добрый вечер.
Общался с поддержкой Яндекс.Кассы, мне активировали новый shopId и scid, где в настройках сайт уже верно указан - магазин.мойсайт.ру.
В Rcl Commerce в настройках магазина сменил shopId, scid и ShopPassword на новые, остальное не поменялось.
Однако, сейчас проблема повторяется..
После успешной оплаты товара его статус не изменяется, он остается как и был "Неоплачен".
В ЛК Яндекс.Кассы в логе событий отразилось следующее:
Статус уведомления: Ошибка Причина: Сервер вашего магазина прислал ответ в неверном формате. URL https://магазин.мойсайт.ru/result/ Тип уведомления: paymentAviso
В теле уведомления следующий код:
Это аналогично тому, что было до этого.
В теле ответа пусто - так и раньше было.
После этого снова позвонил в поддержку ЯК, всё описал.
Они сказали, что avisoUrl возвращает 200 ошибку на сервер - в avisoUrl указана пустая страница на сайте мойсайт.ру/result/
Скажите, как можно попробовать решить проблему?
Если учесть, что основная загвоздка всё же была не в том, что в настройках ЯК был указан неправильный сайт.
И еще есть одно недопонимание, которое меня очень долго терзает.
Судя по вашему скриншоту,
для плагина мы создаем 4 страницы:
- пустую для success
- пустую для result
- одну с текстом о неудачной оплате (fail)
- одну с текстом об удачной оплате
В настройках Яндекс.Кассы мы указываем:
checkUrl = пустая для result
avisoUrl = тоже пустая для result
successUrl = с текстом об удачной оплате - именно такую, а не пустую для success (мне это подтвердили в ЯК)
shopFailUrl = с текстом о неудачной оплате (fail)
А где в настройках Яндекс.Кассы мы указываем пустую для success?
romber сказал(а)
Они сказали, что avisoUrl возвращает 200 ошибку на сервер
200-ой ошибки не существует, это код успешного ответа, а не ошибки.
Я еще раз призываю осуществлять настройку и тестовые платежи НЕ НА ЗАКАЗАХ, а пополнении баланса пользователя.
где в настройках Яндекс.Кассы мы указываем пустую для success?
Созданную пустую success страницу указываем для successURL в настройках ЯК.
проблема у вас связана с тем, что вы пытаетесь использовать функционал на мультисайте, для внесения платежа запрашивается таблица wp_3_rmag_pay_results, а ее не существует, тк дополнение баланса было активировано на основном домене и для платежей была создана таблица с другим именем.