首页 文章

WooCommerce勾选“付款后完成”操作

提问于
浏览
32

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

看起来很简单:

  • 用户在我的网站上完成结帐

  • 用户被重定向到Paypal,他们在那里输入付款凭据

  • Paypal告诉我的网站付款已完成

  • 我挂钩了某种"payment complete"或"order_complete" WooCommerce动作并生成许可证 .

在这里's the problem: I'我真的不确定哪个钩子适合这个 . Woocommerce在他们的网站上列出了他们的entire collection of hooks,但几乎没有关于哪个有利于什么的文档 .

基于钩子名称,我认为 woocommerce_payment_complete 将是一个很好的行动 . 不幸的是,它并没有读到它说它永远不会被解雇 .

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

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

2 回答

  • 26

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

    处理付款验证

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

    HOW TO SET UP PAYPAL IPN

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

    • 登录Paypal

    • 点击右上角的小脸图标

    • 点击"Profile and settings"

    • 单击左侧栏中的"My selling tools"

    • 查找"Instant payment notifications"并单击"Update"

    • 启用它们并设置URL . 您的WooCommerce Paypal Payments标准网关网址是:http://yoursite.com/?wc-api=WC_Gateway_Paypal(在WooCommerce的Paypal Standard documentation中注明) .

    • 保存设置

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

    • 您的Paypal设置中的"Receiver E-mail"是正确的

    • 在您的服务器上启用了fsockopen(您可以在WooCommerce设置中查看"System Status")

    现在让我们在钩子上工作

    OPTION 1: Auto-complete orders that have completed payment and hook in to woocommerce_order_status_completed for your special actions/functions

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

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

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

    OPTION 2: Hook in to the woocommerce_payment_complete_order_status filter, which denotes a successful payment.

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

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

  • 11

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

    仅当付款成功时,操作 woocommerce_payment_complete 似乎才会触发 .

相关问题