WooCommerce勾选"付款后完成"操作

Pet*_*ete 34 php wordpress paypal woocommerce

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

看起来很简单:

  1. 用户在我的网站上完成结帐
  2. 用户被重定向到Paypal,他们在那里输入他们的付款凭证
  3. Paypal告诉我的网站付款已完成
  4. 我勾选到某种"付款完成"或"order_complete"WooCommerce操作并生成许可证.

这就是问题所在:我真的不确定哪个钩子可以很好地用于此.Woocommerce 在他们的网站上列出了他们的整个钩子集合,但几乎没有关于哪个有利于什么的文档.

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

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

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

Pet*_*ete 28

好的,我想出了几个可能的解决方案.

处理付款验证

WooCommerce的Paypal标准网关实际上支持Paypal建立的IPN服务.无论您选择哪种"钩子"路线,您都会想要使用它.

如何设置PAYPAL IPN

Paypal IPN连接到钱的接收者的任何帐户.例如,如果您通过myemail@gmail.com获得付款,则需要使用该帐户设置IPN.所有IPN都是,Paypal发出"付款完成!" (各种)通知您选择的URL.要选择您希望Paypal发送通知的网址,您需要执行以下步骤:

  1. 登录Paypal
  2. 单击右上角的小脸图标
  3. 点击"个人资料和设置"
  4. 点击左侧边栏中的"我的销售工具"
  5. 找到"即时付款通知",然后点击"更新"
  6. 启用它们并设置URL.你WooCommerce PayPal付款标准网关地址是:http://yoursite.com/?wc-api=WC_Gateway_Paypal(这是WooCommerce在指出贝宝标准的文档).
  7. 保存您的设置

现在,您的WooCommerce安装将在付款完成后收到Paypal的通知.哦,顺便说一下,确保:

  • 您的Paypal设置中的"Receiver E-mail"是正确的
  • 在您的服务器上启用了fsockopen(您可以在WooCommerce设置中检查此"系统状态")

现在让我们在钩子上工作

选项1:自动完成已完成付款的订单,并woocommerce_order_status_completed为您的特殊操作/功能挂钩

为了让您的产品在验证付款后自动完成,您只需安装Mirko Grewing的精彩WooCommerce自动完成订单插件即可.请务必设置正确的设置(将显示在WooCommerce设置中的"Woo Extra Options"选项卡下).

现在您的订单在付款验证后自动完成,您可以简单地连接到您的完成挂钩,`woocommerce_order_status_completed,以获取您的特殊功能.

该方法的好处是,如果允许您挂钩任何已完成的顺序 - 无论您是否手动完成它或它是否自动完成.换句话说,它非常通用.

选项2:挂钩到woocommerce_payment_complete_order_status过滤器,表示付款成功.

我猜这个是不言自明的.这种方法的好处在于它几乎是整个过程的第一步,并且在上面的完成钩子之前发生(如果您正确设置了优先级).

我不知道一个人是否比另一个好,但他们似乎都达到了我的目标:在付款验证后执行一项行动.

  • @PonSaravanan:`woocommerce_payment_complete_order_status`过滤器有两个参数.第一个是订单状态,第二个是订单ID.或者,您可以使用`woocommerce_payment_complete`操作,该操作仅提供订单ID. (3认同)

Dan*_*l T 16

woocommerce_payment_complete_order_status付款被取消时也会触发.我刚刚使用Paypal作为Woocommerce 3.1.2的网关进行了测试.

woocommerce_payment_complete只有在付款成功时,此操作才会启动.