当付款成功/客户被重定向到thankyou页面时,我试图在我的自定义表中设置一个“已付款”值。
我不确定买方是否刚好在买家到达thankyou页面时插入“ paid => 1”的安全性。这就是为什么我要检查订单是否真正付款,完成或处理的原因。
现在我发现某些付款方式很慢?当我使用Klarna结帐时,我的方法有效,并且插入pay = 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");
}
}