WooCommerce挂钩"付款完成后#34;行动

时间:2015-01-29 15:37:11

标签: php wordpress paypal woocommerce

我正在使用WooCommerce和Wordpress。我有一个自定义许可证密钥生成器,当有人通过WooCommerce成功购买我的插件时,我希望它能生成许可证密钥。

看起来非常简单:

  1. 用户在我的网站上完成结帐
  2. 用户被重定向到Paypal,他们在那里输入付款凭证
  3. Paypal告诉我的网站付款已完成
  4. 我加入某种"付款完成"或" order_complete" WooCommerce行动并生成许可证。
  5. 问题在于:我真的不确定哪种钩子适用于此。 Woocommerce在他们的网站上列出了他们的entire collection of hooks,但几乎没有关于哪些内容有用的文档。

    基于钩子名称,我认为woocommerce_payment_complete是一个很好的行动。不幸的是,它似乎根本没有被解雇;我读过的一些地方说它不会被解雇。

    我也读过一些关于Paypal IPN的内容,但我不明白我是如何能够从中获取通知的(连接到Woocommerce挂钩?)

    简而言之,我希望在付款验证后立即生成许可密钥。为了达到这个目的,我该怎么做?

3 个答案:

答案 0 :(得分:26)

好的,我已经提出了几种可能的解决方案。

处理付款验证

WooCommerce的Paypal标准网关实际上支持Paypal的内置IPN服务。无论“钩子”是什么,你都会想要使用它。你选择的路线。

如何设置PAYPAL IPN

Paypal IPN与资金接收方的任何帐户相关联。例如,如果您通过myemail@gmail.com获得付款,则需要使用该帐户设置IPN。所有的IPN都是,Paypal发出了#34;付款完成!" (各种)通知您选择的URL。为了选择您希望Paypal发送通知的网址,您需要执行以下步骤:

  1. 登录Paypal
  2. 点击右上角的小脸图标
  3. 点击"个人资料和设置"
  4. 点击"我的畅销工具"在左侧边栏
  5. 查找"即时付款通知"然后点击"更新"
  6. 启用它们并设置网址。您的WooCommerce Paypal付款标准网关网址为:http://yoursite.com/?wc-api=WC_Gateway_Paypal(在WooCommerce' s Paypal Standard documentation中注明)。
  7. 保存设置
  8. 付款完成后,您的WooCommerce安装现在将收到Paypal的通知。哦,顺便说一下,确保:

    • 您的接收者电子邮件"在您的Paypal设置中是正确的
    • 在您的服务器上启用了fsockopen(您可以在WooCommerce设置中查看此"系统状态")

    现在让我们在HOOKS上工作

    选项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 挂钩仅对具有以下状态之一的订单激活:

  • 待命
  • 待定
  • 失败
  • 已取消

钩子:woocommerce_valid_order_statuses_for_payment_complete

如果您更改订单状态 (具有自定义订单状态) 在付款完成之前(例如使用 {{1} } 钩子,在订单创建之后但在支付之前)您应该通过 woocommerce_valid_order_statuses_for_payment_complete 钩子添加新状态。

例如:

woocommerce_new_order

钩子:woocommerce_pre_payment_complete

或者,您可以使用 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 钩子将始终激活 无论订单状态如何,都已完成付款。