我正在使用WooCommerce和Wordpress。我有一个自定义许可证密钥生成器,当有人通过WooCommerce成功购买我的插件时,我希望它能生成许可证密钥。
看起来非常简单:
问题在于:我真的不确定哪种钩子适用于此。 Woocommerce在他们的网站上列出了他们的entire collection of hooks,但几乎没有关于哪些内容有用的文档。
基于钩子名称,我认为woocommerce_payment_complete
是一个很好的行动。不幸的是,它似乎根本没有被解雇;我读过的一些地方说它不会被解雇。
我也读过一些关于Paypal IPN的内容,但我不明白我是如何能够从中获取通知的(连接到Woocommerce挂钩?)
简而言之,我希望在付款验证后立即生成许可密钥。为了达到这个目的,我该怎么做?
答案 0 :(得分:26)
好的,我已经提出了几种可能的解决方案。
WooCommerce的Paypal标准网关实际上支持Paypal的内置IPN服务。无论“钩子”是什么,你都会想要使用它。你选择的路线。
如何设置PAYPAL IPN
Paypal IPN与资金接收方的任何帐户相关联。例如,如果您通过myemail@gmail.com获得付款,则需要使用该帐户设置IPN。所有的IPN都是,Paypal发出了#34;付款完成!" (各种)通知您选择的URL。为了选择您希望Paypal发送通知的网址,您需要执行以下步骤:
付款完成后,您的WooCommerce安装现在将收到Paypal的通知。哦,顺便说一下,确保:
选项1:自动完成已完成付款的订单并挂钩woocommerce_order_status_completed
以执行您的特殊操作/功能
为了让您的产品在付款验证后自动完成,您只需安装Mirko Grewing的精彩WooCommerce Autocomplete Order插件即可。请务必设置正确的设置(将显示在WooCommerce设置中的" Woo Extra Options"标签下)。
现在,在验证付款后,您的订单已自动完成,您只需加入完成挂钩,即woocommerce_order_status_completed,即可获得特殊功能。
该方法的好处是,如果允许您挂钩任何已完成的顺序 - 无论您是否手动完成它或自动完成它。换句话说,它非常通用。
选项2:进入woocommerce_payment_complete_order_status
过滤器,表示付款成功。
我想这一点非常明显。这种方法的好处在于它几乎是整个过程的第一步,并且发生在上面的完成钩子之前(如果你的优先级设置得当)。
我不知道一个人是否比另一个好,但他们似乎都达到了我的目标:在付款验证后执行一项行动。
答案 1 :(得分:11)
woocommerce_payment_complete_order_status
也会触发。我刚刚使用Paypal作为Woocommerce 3.1.2的网关进行了测试。
仅当付款成功时,操作woocommerce_payment_complete
才会启动。
答案 2 :(得分:2)
woocommerce_payment_complete
挂钩仅对具有以下状态之一的订单激活:
如果您更改订单状态 (具有自定义订单状态) 在付款完成之前(例如使用 {{1} } 钩子,在订单创建之后但在支付之前)您应该通过 woocommerce_valid_order_statuses_for_payment_complete
钩子添加新状态。
例如:
woocommerce_new_order
或者,您可以使用 woocommerce_pre_payment_complete
钩子,它在付款完成后但在保存订单之前激活(与保存订单后激活的 add_filter( 'woocommerce_valid_order_statuses_for_payment_complete', 'add_woocommerce_valid_order_statuses_for_payment_complete', 10, 2 );
function add_woocommerce_valid_order_statuses_for_payment_complete( $statuses, $order ) {
$statuses[] = 'processing';
return $statuses;
}
不同).
woocommerce_payment_complete
钩子将始终激活
无论订单状态如何,都已完成付款。