Ошибка обработки статуса заказа при успешной оплате через Paypal в Woocommerce - PullRequest
0 голосов
/ 05 декабря 2018

У меня странная проблема, и это иногда случается, когда пользователь платит за курс через PayPal, статус заказа изменяется с ожидающего на обработку вместо завершенного.

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

enter image description here

Вот информация о продукте:

  1. Продукт является виртуальным продуктом
  2. Запас отключен

enter image description here

1 Ответ

0 голосов
/ 06 декабря 2018

Если вы продаете только виртуальные продукты, вы можете сделать так, чтобы статус заказа для Paypal был «завершен» при завершении платежа, таким образом:

add_filter('woocommerce_payment_complete_order_status', 'paypal_payment_complete_order_status', 10, 2 );
function paypal_payment_complete_order_status( $status, $order_id, $order ){
    if( $order->get_payment_method() === 'paypal' )
        $status = 'completed';

    return $status;
}

Код помещается в файл function.php вашего активного ребенка.тема (или активная тема).Протестировано и работает.

Этот хук срабатывает только при успешной оплате и изначально имеет 2 возможных значения статуса заказа: «обработка» или «завершение» (в зависимости от того, требуется ли «обработка») .Таким образом, этот код ответа просто заставляет статус заказа «завершено», нацеливаясь на платежный шлюз Paypal (для виртуальных продуктов) . Этот хук расположен по методу WC_Order payment_complete().
Все платежные шлюзы используют метод payment_complete() для успешного платежа, а Paypal использует его для WC_Gateway_Paypal_Response Класс.

...