yoomoney / cms-drupal8

YooKassa payment module for Drupal 8.x
https://yookassa.ru/developers
3 stars 6 forks source link

Drupal 8: После оплаты платежу не устанавливается Completed #19

Closed superromeo closed 2 years ago

superromeo commented 3 years ago

После оплаты платежу не устанавливается Completed и, соответственно, заказу тоже не устанавливается Completed. А устанавливается только после нажатия кнопки "Вернуться в магазин". А если пользователь просто закроет эту вкладку, то в системе заказ останется в состоянии Draft. Считаю данную ошибку критической.

ostulov commented 3 years ago

Добрый день!

Статус заказа после оплаты меняется благодаря получению уведомления со стороны ЮKassa (вариант смены статуса при возвращении на сайт является дополнительным). В первую очередь проверьте, что адрес для уведомлений в ЮKassa установлен именно тот, на который модуль ожидает получения уведомлений.

superromeo commented 3 years ago

проверьте, что адрес для уведомлений в ЮKassa установлен именно тот, на который модуль ожидает получения уведомлений.

А где это смотреть?

В Интеграция\HTTP-уведомления написано:

Вы выбрали платёжный модуль для Drupal 8.x (Commerce). Настройки для него заданы автоматически.

ostulov commented 3 years ago

Нажмите на кнопку "Задать вручную", чтобы появилась возможность редактирования. Адрес должен быть прописан с доменом. Если в пути модуля на сайте есть дополнительные каталоги, они должны быть добавлены в урл. 2021-10-14_19-32-29

superromeo commented 3 years ago

Адрес по-умолчанию прописан верно, если у платежного шлюза ID = yookassa. У меня ID = yookassa_ru и с адресом по-умолчанию /payment/notify/yookassa не работало. Изменил на /payment/notify/yookassa_ru - на работает.

Решил создать шлюз с ID по умолчанию = yookassa. Теперь вызывается без ошибки.

77.75.153.76 - - [15/Oct/2021:13:49:40 +0300] "POST /payment/notify/yookassa HTTP/1.1" 200 627 "-" "AHC/2.1" "-"

Но заказу установился статус Completed, а у платежа остался New.

ostulov commented 3 years ago

Пришлите, пожалуйста, скриншот, где у Вас не изменился статус.

superromeo commented 3 years ago

screenshot screenshot_2

superromeo commented 3 years ago

screenshot_3 Drupal 9.2.7

superromeo commented 2 years ago

Очень хочется пользоваться Юкассой. Как бы нам продвинуть процесс?

ostulov commented 2 years ago

Добрый день!

Где именно в Drupal у Вас не меняется статус после успешной оплаты?

superromeo commented 2 years ago

В нескольких предыдущих сообщениях я это уже показывал. И скиншоты делал

ostulov commented 2 years ago

Если имеется в виду значение в столбце "Состояние", то оно не изменяется.

superromeo commented 2 years ago

Оно должно изменяться на completed. Можно посмотреть, например, как у модуля commerce_robokassa:

  public function onNotify(Request $request) {
    /** @var PaymentInterface $payment */
    $payment = $this->doValidatePost($request);

    if (!$payment) {
      return FALSE;
    }

    $payment->setState('completed');
    $payment->save();

    $data = $request->request->all();
    return new Response('OK' . $data['InvId'], 200);
  }
ostulov commented 2 years ago

В последнем обновлении добавили обновление статуса у Платежа.

superromeo commented 2 years ago

Спасибо. Поставил последний релиз. Итого:

А оба устанавливается в Completed только после нажатия кнопки "Вернуться в магазин". Идентификатор платежа: 294d1058-000f-5000-9000-12db5eb8ab1b

ostulov commented 2 years ago

Отправка уведомления об успешной оплате платежа с меткой 294d1058-000f-5000-9000-12db5eb8ab1b завершилась кодом 404 на тот адрес, который сейчас указан.

Скопируйте адрес для уведомлений, который показывается на сайте внутри модуля, и установите его через личный кабинет ЮKassa для отправки уведомлений.

superromeo commented 2 years ago

Прошу прощения. Неправильно задал адрес HTTP-ответа. Итого:

После нажатия кнопки "Вернуться в магазин" тоже ничего не меняется.

В логе 3 записи:

Место | https://xn----7sblvlgns.xn--p1ai/payment/notify/yookassa_ru Notification: { "type" : "notification", "event" : "payment.succeeded", "object" : { "id" : "294e4d51-000f-5000-9000-11d60f4d0c17", "status" : "succeeded", "amount" : @ "value" : "10.00", "currency" : "RUB" , "income_amount" : @ "value" : "9.65", "currency" : "RUB" , "description" : "Оплата заказа №12194", "recipient" : @ "account_id" : "790264", "gateway_id" : "1828824" , "payment_method" : { "type" : "bank_card", "id" : "294e4d51-000f-5000-9000-11d60f4d0c17", "saved" : false, "title" : "Bank card *7230", "card" : @ "first6" : "555949", "last4" : "7230", "expiry_year" : "2026", "expiry_month" : "07", "card_type" : "MasterCard", "issuer_country" : "RU", "issuer_name" : "Joint Stock Company \"Alfa-Bank\"" }, "captured_at" : "2021-12-17T07:18:04.741Z", "created_at" : "2021-12-17T07:17:37.298Z", "test" : false, "refunded_amount" : @ "value" : "0.00", "currency" : "RUB" , "paid" : true, "refundable" : true, "metadata" : @ "module_version" : "2.1.0", "cms_name" : "yoo_api_drupal8" , "authorization_details" : { "rrn" : "33100578120", "auth_code" : "2V05RS", "three_d_secure" : @ "applied" : true } } }

Место | https://xn----7sblvlgns.xn--p1ai/payment/notify/yookassa_ru Payment info: {"id":"294e4d51-000f-5000-9000-11d60f4d0c17","status":"succeeded","recipient":@"account_id":"790264","gateway_id":"1828824","amount":@"value":"10.00","currency":"RUB","description":"\u041e\u043f\u043b\u0430\u0442\u0430 \u0437\u0430\u043a\u0430\u0437\u0430 \u211612194","payment_method":@"last4":"7230","first6":"555949","expiry_year":"2026","expiry_month":"07","card_type":"MasterCard","issuer_country":"RU","issuer_name":"Joint Stock Company \"Alfa-Bank\"","type":"bank_card","id":"294e4d51-000f-5000-9000-11d60f4d0c17","saved":false,"title":"Bank card *7230","created_at":"2021-12-17T07:17:37.298+00:00","captured_at":"2021-12-17T07:18:04.741+00:00","refunded_amount":@"value":"0.00","currency":"RUB","paid":true,"refundable":true,"metadata":@"module_version":"2.1.0","cms_name":"yoo_api_drupal8","authorization_details":{"rrn":"33100578120","auth_code":"2V05RS","three_d_secure":@"applied":true},"transfers":[],"income_amount":@"value":"9.65","currency":"RUB"}

Место | https://xn----7sblvlgns.xn--p1ai/payment/notify/yookassa_ru Payment complete

ostulov commented 2 years ago

Похоже, что файлы модуля на сайте не обновились. Последняя версия - v2.2.1, в ней как раз добавили выставление статуса для Payment, а в логе платежа указано "module_version":"2.1.0"

superromeo commented 2 years ago

Обновлено. Видно забыли заменить в тексте модуля.

wodby@php.container:/var/www/lom $ composer info yoomoney/yookassa-sdk-php name : yoomoney/yookassa-sdk-php descrip. : This is a developer tool for integration with YooMoney. keywords : api, payments, sdk, yookassa, yoomoney versions : * 2.2.4

ostulov commented 2 years ago

В коде модуля указано верно. Версия внутренней библиотеки yookassa-sdk-php - да, используется 2.2.4

superromeo commented 2 years ago

Обновил drupal/commerce_yookassa до сегодняшней версии 2.2.0. Без изменений.

Вот access.log. Без ошибки.

77.75.154.206 - - [17/Dec/2021:16:46:15 +0300] "POST /payment/notify/yookassa_ru HTTP/1.1" 200 627 "-" "AHC/2.1" "-"

46.147.208.5 - - [17/Dec/2021:16:47:09 +0300] "GET /checkout/12197/payment/return HTTP/2.0" 302 781 "https://yoomoney.ru/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36" "-"

Место | https://xn----7sblvlgns.xn--p1ai/payment/notify/yookassa_ru Notification: { "type" : "notification", "event" : "payment.succeeded", "object" : { "id" : "294ea82f-000f-5000-8000-15c0a65430e4", "status" : "succeeded", "amount" : @ "value" : "10.00", "currency" : "RUB" , "income_amount" : @ "value" : "9.65", "currency" : "RUB" , "description" : "Оплата заказа №12197", "recipient" : @ "account_id" : "790264", "gateway_id" : "1828824" , "payment_method" : { "type" : "bank_card", "id" : "294ea82f-000f-5000-8000-15c0a65430e4", "saved" : false, "title" : "Bank card *7230", "card" : @ "first6" : "555949", "last4" : "7230", "expiry_year" : "2026", "expiry_month" : "07", "card_type" : "MasterCard", "issuer_country" : "RU", "issuer_name" : "Joint Stock Company \"Alfa-Bank\"" }, "captured_at" : "2021-12-17T13:46:12.615Z", "created_at" : "2021-12-17T13:45:19.418Z", "test" : false, "refunded_amount" : @ "value" : "0.00", "currency" : "RUB" , "paid" : true, "refundable" : true, "metadata" : @ "module_version" : "2.2.0", "cms_name" : "yoo_api_drupal8" , "authorization_details" : { "rrn" : "33114105268", "auth_code" : "2VB5AY", "three_d_secure" : @ "applied" : true } } }

Более того. В логе нет строки: Payment completed

  | Type | Date | Message | User | Operations   | yookassa | 17.12.2021 - 16:46 | Payment complete | Гость (не проверено) |     | yookassa | 17.12.2021 - 16:46 | Payment info: {"id":"294ea82f-000f-5000-8000-… | Гость (не проверено) |     | yookassa | 17.12.2021 - 16:46 | Notification: { "type" : "notification", "event…

Следовательно часть кода:

$this->log('Payment completed');

вообще не вызывается.

ostulov commented 2 years ago

Попробуйте еще раз обновить модуль, должно сработать до версии 2.2.1. В ней как раз было добавлено обновление статуса у Payment.

superromeo commented 2 years ago

Вот теперь работает. Спасибо!