"after payment complete" 操作的 WooCommerce 挂钩
WooCommerce hook for "after payment complete" actions
我正在使用 WooCommerce 和 Wordpress。我有一个自定义许可证密钥生成器,我希望它能在有人通过 WooCommerce 成功购买我的插件时生成一个许可证密钥。
看起来很简单:
- 用户在我的网站上完成结帐
- 用户被重定向到 Paypal,他们在那里输入他们的支付凭据
- Paypal 告诉我的网站付款已完成
- 我连接到某种 "payment complete" 或 "order_complete" WooCommerce 操作并生成许可证。
问题是:我真的不确定哪个钩子适合这个。 Woocommerce 在他们的网站上列出了他们的 entire collection of hooks,但几乎没有关于哪个有用的文档。
仅根据挂钩名称,我认为 woocommerce_payment_complete
会是一个很好的操作。不幸的是,它似乎根本没有被解雇;我读过的一些地方说它从未被解雇过。
我也读过一些有关 Paypal IPN 的内容,但我不明白我如何才能从中连接到通知(它是否连接到 Woocommerce 挂钩?)
简而言之,我想在验证付款后立即生成许可证密钥。为了实现这一点,我需要连接什么?
好的,我想出了几个可能的解决方案。
处理付款验证
WooCommerce 的 Paypal 标准网关实际上内置了对 Paypal 的 IPN 服务的支持。无论您选择 'hook' 路线如何,您都需要使用它。
如何设置 PAYPAL IPN
Paypal IPN 连接到收款账户。例如,如果您通过 myemail@gmail.com 收到付款,则您需要使用该帐户设置 IPN。所有 IPN 都是 Paypal 向您选择的 URL 发送 "Payment Complete!"(某种)通知。为了选择您希望 Paypal 将通知发送到的 url,您需要执行以下步骤:
- 登录贝宝
- 点击右上角的小脸图标
- 点击"Profile and settings"
- 点击左侧边栏中的"My selling tools"
- 找到 "Instant payment notifications" 并单击 "Update"
- 启用它们并设置 url。您的 WooCommerce Paypal 支付标准网关 url 是:http://yoursite.com/?wc-api=WC_Gateway_Paypal (which is noted in WooCommerce's Paypal Standard documentation).
- 保存您的设置
付款完成后,您的 WooCommerce 安装现在会收到来自 Paypal 的消息。哦,顺便说一下,确保:
- 您在 Paypal 设置中的 "Receiver E-mail" 是正确的
- fsockopen 在您的服务器上启用(您可以在您的 WooCommerce 设置中检查 "System Status")
现在让我们开始处理钩子
选项 1:自动完成已完成付款的订单并挂接到 woocommerce_order_status_completed
以获得您的特价 actions/functions
为了让您的产品在验证付款后自动完成,您只需安装 Mirko Grewing 的精彩 WooCommerce Autocomplete Order 插件即可。请务必设置正确的设置(将显示在您的 WooCommerce 设置中的 "Woo Extra Options" 选项卡下)。
既然您的订单在验证付款时会自动完成,您只需连接到您的完成挂钩,`woocommerce_order_status_completed,以获得您的特殊功能。
该方法的好处是,如果允许您挂钩任何已完成的订单——无论您是手动完成还是自动完成。换句话说,它非常通用。
选项 2:连接到 woocommerce_payment_complete_order_status
过滤器,表示支付成功。
我想其中一个是不言自明的。这种方法的好处是它几乎是整个过程的第一步,并且发生在上面的完成挂钩之前(如果您适当地设置了优先级)。
我不知道一个是否比另一个更好,但它们似乎都实现了我的目标:验证付款后执行操作。
woocommerce_payment_complete_order_status
也会在付款被取消时触发。我刚刚在 Woocommerce 3.1.2 上使用 Paypal 作为网关进行了测试。
操作 woocommerce_payment_complete
似乎只有在付款成功时才会触发。
woocommerce_payment_complete
挂钩仅对具有以下状态之一的订单激活:
- 暂停
- 待定
- 失败
- 已取消
钩子:woocommerce_valid_order_statuses_for_payment_complete
如果您更改订单状态 (自定义订单状态) 付款完成前(例如,使用 woocommerce_new_order
挂钩,在创建订单之后但在付款之前)您应该通过 woocommerce_valid_order_statuses_for_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_pre_payment_complete
或者,您可以使用 woocommerce_pre_payment_complete
挂钩,该挂钩在付款完成但订单保存之前激活 (不同于 woocommerce_payment_complete
在保存订单后激活顺序).
The woocommerce_pre_payment_complete
hook will always activate after
a completed payment regardless of the order status.
我正在使用 WooCommerce 和 Wordpress。我有一个自定义许可证密钥生成器,我希望它能在有人通过 WooCommerce 成功购买我的插件时生成一个许可证密钥。
看起来很简单:
- 用户在我的网站上完成结帐
- 用户被重定向到 Paypal,他们在那里输入他们的支付凭据
- Paypal 告诉我的网站付款已完成
- 我连接到某种 "payment complete" 或 "order_complete" WooCommerce 操作并生成许可证。
问题是:我真的不确定哪个钩子适合这个。 Woocommerce 在他们的网站上列出了他们的 entire collection of hooks,但几乎没有关于哪个有用的文档。
仅根据挂钩名称,我认为 woocommerce_payment_complete
会是一个很好的操作。不幸的是,它似乎根本没有被解雇;我读过的一些地方说它从未被解雇过。
我也读过一些有关 Paypal IPN 的内容,但我不明白我如何才能从中连接到通知(它是否连接到 Woocommerce 挂钩?)
简而言之,我想在验证付款后立即生成许可证密钥。为了实现这一点,我需要连接什么?
好的,我想出了几个可能的解决方案。
处理付款验证
WooCommerce 的 Paypal 标准网关实际上内置了对 Paypal 的 IPN 服务的支持。无论您选择 'hook' 路线如何,您都需要使用它。
如何设置 PAYPAL IPN
Paypal IPN 连接到收款账户。例如,如果您通过 myemail@gmail.com 收到付款,则您需要使用该帐户设置 IPN。所有 IPN 都是 Paypal 向您选择的 URL 发送 "Payment Complete!"(某种)通知。为了选择您希望 Paypal 将通知发送到的 url,您需要执行以下步骤:
- 登录贝宝
- 点击右上角的小脸图标
- 点击"Profile and settings"
- 点击左侧边栏中的"My selling tools"
- 找到 "Instant payment notifications" 并单击 "Update"
- 启用它们并设置 url。您的 WooCommerce Paypal 支付标准网关 url 是:http://yoursite.com/?wc-api=WC_Gateway_Paypal (which is noted in WooCommerce's Paypal Standard documentation).
- 保存您的设置
付款完成后,您的 WooCommerce 安装现在会收到来自 Paypal 的消息。哦,顺便说一下,确保:
- 您在 Paypal 设置中的 "Receiver E-mail" 是正确的
- fsockopen 在您的服务器上启用(您可以在您的 WooCommerce 设置中检查 "System Status")
现在让我们开始处理钩子
选项 1:自动完成已完成付款的订单并挂接到 woocommerce_order_status_completed
以获得您的特价 actions/functions
为了让您的产品在验证付款后自动完成,您只需安装 Mirko Grewing 的精彩 WooCommerce Autocomplete Order 插件即可。请务必设置正确的设置(将显示在您的 WooCommerce 设置中的 "Woo Extra Options" 选项卡下)。
既然您的订单在验证付款时会自动完成,您只需连接到您的完成挂钩,`woocommerce_order_status_completed,以获得您的特殊功能。
该方法的好处是,如果允许您挂钩任何已完成的订单——无论您是手动完成还是自动完成。换句话说,它非常通用。
选项 2:连接到 woocommerce_payment_complete_order_status
过滤器,表示支付成功。
我想其中一个是不言自明的。这种方法的好处是它几乎是整个过程的第一步,并且发生在上面的完成挂钩之前(如果您适当地设置了优先级)。
我不知道一个是否比另一个更好,但它们似乎都实现了我的目标:验证付款后执行操作。
woocommerce_payment_complete_order_status
也会在付款被取消时触发。我刚刚在 Woocommerce 3.1.2 上使用 Paypal 作为网关进行了测试。
操作 woocommerce_payment_complete
似乎只有在付款成功时才会触发。
woocommerce_payment_complete
挂钩仅对具有以下状态之一的订单激活:
- 暂停
- 待定
- 失败
- 已取消
钩子:woocommerce_valid_order_statuses_for_payment_complete
如果您更改订单状态 (自定义订单状态) 付款完成前(例如,使用 woocommerce_new_order
挂钩,在创建订单之后但在付款之前)您应该通过 woocommerce_valid_order_statuses_for_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_pre_payment_complete
或者,您可以使用 woocommerce_pre_payment_complete
挂钩,该挂钩在付款完成但订单保存之前激活 (不同于 woocommerce_payment_complete
在保存订单后激活顺序).
The
woocommerce_pre_payment_complete
hook will always activate after a completed payment regardless of the order status.