我在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指南:
用法:
-
复制wp-content/plugins目录下的完整文件夹WPStripeWebhook。去转到网站管理页面。
-
激活WP Stripe webhook插件插件部分。
- 之后,设置将开始显示条纹Webhook设置部分。点击它。在页面中填充条纹键和检查测试模式选项,如果你想测试插件。
- 在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.