WooCommerce Проверьте, если заказ оплачен / обрабатывается или завершен - PullRequest
0 голосов
/ 27 ноября 2018

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

Я не уверен, достаточно ли он безопасен, чтобы вставить «paid => 1» сразу после того, как покупатель достиг страницы спасибо.Вот почему я хотел проверить, был ли заказ действительно оплачен, выполнен или обрабатывается.

Теперь я решил, что некоторые способы оплаты являются медленными?Когда я делаю заказ с Klarna, мой метод работает, и он вставляет paid = 1, но когда я выбираю Paypal, мой метод умирает и возвращает: «WASNT PAID».Но когда я обновляю страницу спасибо через 30 секунд, она работает.Итак, я пришел к выводу, что order_status не устанавливается достаточно быстро?Есть ли способ чище, чем мой?

add_action('woocommerce_thankyou', 'ceb_order_complete', 10, 1);
function ceb_order_complete( $order_id ) {

    if ( ! $order_id )
        return;

    // Getting an instance of the order object
    $order = wc_get_order( $order_id );

    if($order->is_paid() || $order->has_status('processing') || $order->has_status('completed')) {
        global $wpdb;
        $payID = WC()->session->get( 'payID' );
        if(!empty($payID)) {
            if(!$wpdb->update($wpdb->prefix."ceb_registrations", array("paid"=>1), array("payID"=>$payID))) {
                die("ERROR IN PAYMENT COMPLETE");
            }
        }
    } else {
        die("WASNT PAID");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...