WooCommerce检查订单是否已付款/正在处理或已完成

时间:2018-11-27 00:11:36

标签: php wordpress woocommerce

当付款成功/客户被重定向到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");
    }
}

0 个答案:

没有答案