在wordpress网站上接收Stripe Webhooks



我在GoDaddy上有一个wordpress网站。

我是一个高级的stripe用户,并且已经将stripe与许多Ruby on Rails应用程序集成,以及与Rails的stripe-webhook集成。我也很精通如何网钩工作。但最近我成为了一个托管在GoDaddy上的wordpress网站的所有者,在这个网站上,我应该收到条纹支付失败的webhook,然后根据这个webhook事件触发一封电子邮件。我无法从在线资源中与wordpress和stripe进行太多连接,需要帮助如何在wordpress网站中接收stripe-webhooks,即在哪里放置代码以实现此目标等。

我最近遇到了同样的问题,pippins的条纹集成插件似乎回答了这个问题,但它有很多我不需要的额外代码,所以我删除了它,并为webhook集成做了一个简洁的版本:WPStripeWebhook。README是自解释的。基本上为您的事件更改include/stripe_listener.php。也附上自述在这里按照stackoverflow指南:

用法:

  1. 复制wp-content/plugins目录下的完整文件夹WPStripeWebhook。去转到网站管理页面。

  2. 激活WP Stripe webhook插件插件部分。

  3. 之后,设置将开始显示条纹Webhook设置部分。点击它。在页面中填充条纹键和检查测试模式选项,如果你想测试插件。
  4. 在WPStripeWebhook/includes/stripe_listener.php中,为你的事件类型和电子邮件或者任何你想做的
    响应一个事件。当前发送一封电子邮件。

重要提示和建议对于活动模式,添加条带webhook端点(条带帐户->设置->帐户设置-> webhook),如下所示

https://yourdomain.com?webhook-listener=stripe

如果要在机器上进行本地测试,可以使用Ultrahook。它太棒了!设置您的密钥和用户名,并在您的机器上启动ultrahook:

ultrahook -k your_ultrahook_key stripe 8888

在你的stripe账户中添加一个webhook端点url,如下所示:

http://stripe.your_ultrahook_username.ultrahook.com/your_wp_website_folder_name/stripe-listener.php?webhook-listener=stripe

它应该开始为你工作了。此外,您可能会在ultrahook控制台看到404。忽略它。我建议设置调试。这真的很有帮助。为了进行调试,将这些添加到wp_config.php

define('WP_DEBUG', true); 
define( 'WP_DEBUG_LOG', true ); 
define('WP_DEBUG_DISPLAY', false ); 
@ini_set( 'display_errors', 0 ); 
define('SCRIPT_DEBUG', true );

在此之后,您应该在wp-content文件夹中看到一个debug.log文件,它将显示错误和警告以及使用error_log()

打印的任何内容。

这是我的两点意见。为了子孙后代,也因为公认的答案不适合我。

我们可以使用WordPress REST api

通过register_rest_route函数扩展REST API和添加自定义端点。

<?php
add_action( 'rest_api_init', 'wpso40015091' );
function wpso40015091() {
    $routes = array(
        array(
            'namespace' => 'wpso40015091/listener/v1',
            'route' => 'endpoint',
            //www.example.com/index.php/wp-json/wpso40015091/listener/v1/endpoint
            //This is the endpoint to add in your Stripe dashboard webhook section.
            //From time to time, depending on your host, the "index.php" might be omitted.
            //You can use "get_rest_url()" to Retrieves the URL to a REST endpoint on a site.
            //https://developer.wordpress.org/reference/functions/get_rest_url/
           
            'args' => array(
                'methods' => 'POST',
                'callback' => function () {
                    //...
                },
                'permission_callback' => '__return_true',
            ),
            'override' => true,
        ),
    );
    foreach ( $routes as $route ) {
        register_rest_route( $route['namespace'], $route['route'], $route['args'], $route['override'] );
    };
};

回调函数是事件监听器。Stripe有一个内置的生成器,参考https://stripe.com/docs/webhooks/quickstart.

最新更新