gpt4 book ai didi

php - WooCommerce 检查订单是否已支付/处理或完成

转载 作者:行者123 更新时间:2023-12-04 17:43:12 26 4
gpt4 key购买 nike

当付款成功/客户被重定向到谢谢页面时,我试图在我的自定义表中设置一个值“已付款”。

我不确定它是否足够安全以在买家到达谢谢页面时插入“已付款 => 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");
}
}

最佳答案

每次您看到/刷新感谢页面时,“woocommerce_thankyou” Hook 都会运行。
最合适的方式是在收到付款后处理数据。为此,您可以使用“woocommerce_payment_complete”。

add_action('woocommerce_payment_complete', 'payment_complete_callback');
function payment_complete_callback($order_id)
{
$order = wc_get_order($order_id);
$user = $order->get_user();
// do what ever you want to do using $order object of the WC_Order class
providing many functions
}

关于php - WooCommerce 检查订单是否已支付/处理或完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53490957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com