Skip to content

Ошибка в работе модуля при оплате со второй попытки #28

Open
ntym4ek opened this issue Feb 5, 2019 · 3 comments

Comments

@ntym4ek
Copy link

ntym4ek commented Feb 5, 2019

Если для заказа в силу разных причин создаётся 2 и более транзакций и удачной становится не первая, то возврат на сайт после оплаты приводит к выводу сообщения о неудачной оплате.

Причина в следующем коде, проверяющем только первую транзакцию:
$transaction = !empty($transactions) ? array_shift($transactions) : null;

@popovtv
Copy link

popovtv commented Feb 28, 2019

Для себя временно решил эту проблему, перевернув массив, чтобы всегда брать последнюю транзакцию:
$transactions = array_reverse(commerce_payment_transaction_load_multiple(array(), array('order_id' => $order->order_id))); $transaction = !empty($transactions) ? array_shift($transactions) : null;

@ntym4ek
Copy link
Author

ntym4ek commented Feb 28, 2019

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

@ntym4ek
Copy link
Author

ntym4ek commented Apr 9, 2019

Сам еле вспомнил, о чём это и где. После обновления модуля до последней версии пришлось опять вносить правки, так как разработчики не исправили критические ошибки.

В функции yamoney_api_commerce_return_page() берётся первая транзакция вместо перебора всех транзакций заказа.
Нужно вместо
$transaction = !empty($transactions) ? array_shift($transactions) : null; ...
сделать перебор
foreach ($transactions as $transaction) { ... }

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests

2 participants