如何获取WOOCOMMERCE虚拟卡密自动发货订单的状态

导语:当客户付款后,跳转到虚拟卡密自动取货页面,我们需要知道订单的状态来判断用户是否支付成功,那么,在WOOCOMMERCE中怎么样获取订单的状态?

WOOCOMMERCE的订单逻辑

叶子在获取订单的状态上卡了好久,因为网络上对这个获取状态的方法好像不怎么感冒,总是搜索不到正确的资料,可能跟大家搭建的都是实物商店有关。

没有办法,我们只能进入数据库来看数据表中的每个字段的关联关系,以期待能够找出其中的逻辑,发现怎么样取出订单的状态。最后,叶子发现,原来WOOCOMMERCE把它的订单都存放在POSTS表的post_status字段中,然后文章的状态就是订单的状态。那么就简单了。

WOOCOMMERCE的订单状态

WOOCOMMERCE提供7种订单状态,请见下面:

  1. wc-pending 待付款
  2. wc-processing 正在处理
  3. wc-on-hold 保留
  4. wc-completed 完成
  5. wc-cancelled 取消
  6. wc-refunded 退款
  7. wc-failed 失败

然后,订单状态变化逻辑:保留|待付款->正在处理->完成。

一般来说,保留是针对线下付款的方式,对于线上付款的方式,一般是待付款开始。正在处理意味着客户已经付款成功,那么你就要给他发货了,最后客户收到货,就完成订单了。

对于虚拟卡密自动发货来说,当订单变成正在处理的时候,意味着客户已经付款成功,这时候就应该将卡密让客户看到。

所以虚拟卡密自动发货程序发现订单状态等于正在处理和完成的时候,就将卡密发给用户。

获取WOOCOMMERCE的订单状态

要获取WOOCOMMERCE的订单状态,前面说到文章的状态就是订单的状态,只要取出文章的状态,和上面的状态标识比对就可以了,那么应该利用下面的函数:

$post=get_post($order_id);
$post->post_status;

这样,你就能获取订单的状态了。

但是,后来叶子发现,根本不用那么复杂,WOOCOMMERCE也提供了一个函数来获取订单的信息,里面就包含了订单的状态。

$order= wc_get_order( $order_id );
$order->post_status;

所以,你喜欢哪种就用哪种来获取好了。

结束

两种获取WOOCOMMERCE订单状态的方法,叶子倾向于用wc_get_order(),因为在搭建WOOCOMMERCE商店的时候,wc_get_order()能一下取出所有的订单信息,就不用在单独用get_post()。

发表评论

邮箱地址不会被公开。 必填项已用*标注