WooCommerce

WooCommerce自动完成订单(2022)

虚拟下载产品订单付款成功后,WooCommerce会自动完成订单,而对于实体产品或虚拟产品,订单不会自动完成。本文就来介绍WooCommerce自动完成订单的方法。

为什么要自动完成订单

WooCommerce会将虚拟下载类产品的订单自动完成,这样客户付款成功后能立刻访问电子产品。但对于虚拟产品,WooCommerce会将状态设置为处理中,可能有些虚拟产品没有自动发货功能,需要人工干预,所以WooCommerce没有将这个逻辑写死。

某些情况下自动完成更合理,比如:

  • 类似会员费这样的虚拟产品,买完一般就不需要后续处理,订单应该自动转为完成状态。
  • 如果你的产品是序列号、优惠码、电影票等等,网站具备自动发货能力,比如直接通过邮件发送,或显示在订单里,这样也无需人工干预,可以自动完成订单。
  • 单纯的不需要处理中这个状态,就想直接完成,节省时间。

使用插件自动完成订单

插件Autocomplete WooCommerce Orders可以实现这个功能,在后台搜索安装后,找到位于WooCommerce > Settings > AutoComplete Orders下的选项,简单直白,就四个选项,分别是:

  1. 关闭
  2. 自动完成已付款的虚拟产品订单
  3. 自动完成已付款的所有订单
  4. 自动完成所有订单(无论付款与否)
Autocomplete WooCommerce Order插件的设置界面
Autocomplete WooCommerce Orders设置界面

插件安装后,默认状态是关闭,一定记得来设置里选择自己需要的选项。

针对PayPal的特殊处理

该插件专门说明,针对PayPal付款,需要做到以下两点才能正常工作:

  • 确保PayPal Standard付款方式里设置的邮箱是你PayPal账户的主邮箱
  • 开启PDT(Payment Data Transfer)

什么是PDT,和IPN有什么区别

PDT(Payment Data Transfer)和IPN(Instant Payment Notification)比较类似,主要区别是时效性:

  • PDT一般和Auto Return同时使用,用户付款后可以自动返回你的站点,立即告知站点付款是否成功,这样你可以在thank you页面根据付款状态显示信息。
  • IPN是服务器发器的异步通知,即使用户付款后立刻关闭浏览器,不返回站点,IPN也能确保把付款状态通知给站点,只是有时快,有时慢,不一定是即时的。

一般可以选择同时使用PDT和IPN。回到该插件,即使不开启PDT,订单最终也会自动完成,但时效性不能保证,如果你需要用户立刻能访问所购买的服务,就要开启PDT。

如何开启PDT

1)登录PayPal账户,打开账户设置(Account Settings),在左侧的菜单栏底部“PRODUCTS & SERVICES”区域里,找到Website payments,打开。

PayPal sandbox下的website payments界面
图片来自PayPal Sandbox

2)从右侧区域找到Website preferences,点击Update按钮打开。

PayPal Sandbox打开Website preference

3)先在Auto Return里填写返回地址,例如:

https://www.solagirl.net/checkout/order-received/

4)点击Save后,Token就会显示出来,再选择On打开PDT即可。

开启Auto Return和PDT

5)在WooCommerce的PayPal设置里填写Token。

填写PayPal identity token

结束语

本文介绍的内容都是基于PayPal Standard,这是WooCommerce插件源代码里带的PayPal支付功能,如果你使用的是第三方插件,设置方式可能不同。另外,如果对PayPal设置有疑问,可以参考WooCommerce的官方文档,写的很详细。

如果想测试付款,可以使用PayPal Sandbox,用虚拟账户买卖,查看流水,获取API。

另外,WooCommerce从2021年7月份就不再支持PayPal Standard功能了,新安装的站点也会自动隐藏这个支付接口,取而代之的是WooCommerce PayPal Payments插件,需要自己安装,设置方式和功能与PayPal Standard有很大差异,写次文时尚未测试该插件。