Я пытаюсь установить значение «оплачено» в моей пользовательской таблице, когда платеж был успешным / клиент перенаправляется на страницу «Спасибо».
Я не уверен, достаточно ли он безопасен, чтобы вставить «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");
}
}