无法验证 Shopify Webhook
Cannot Verify Shopify Webhook
我已经通过设置 > 通知 > webhooks 在 shopify 中设置了一个 webhook,并输入了一个 heroku 应用 URL。我的 heroku 应用程序在 php 中,我 运行 在此处找到验证功能:https://shopify.dev/tutorials/manage-webhooks,当我打开我的应用程序时,我得到一个空白响应。我不确定这是否是我在我的 heroku 应用程序上做错了什么,或者我是否遗漏了什么。这里的目标是在我选择的事件 运行 之后获取 json 数据,然后将该数据发送给第三方 api。但首先我只想验证我的 heroku 应用程序是否正在接收负载。是否需要向我的 php 文件中添加更多内容以进行验证? (php 这里是菜鸟)。下面是我 运行 在我的 php 文件中使用的代码,是的,我正在使用在 webhooks 部分中找到的共享密钥。
<?php
define('SHOPIFY_APP_SECRET', 'my_shared_secret');
function verify_webhook($data, $hmac_header)
{
$calculated_hmac = base64_encode(hash_hmac('sha256', $data, SHOPIFY_APP_SECRET, true));
return hash_equals($hmac_header, $calculated_hmac);
}
$hmac_header = $_SERVER['HTTP_X_SHOPIFY_HMAC_SHA256'];
$data = file_get_contents('php://input');
$verified = verify_webhook($data, $hmac_header);
error_log('Webhook verified: '.var_export($verified, true)); //check error.log to see the result
?>
如果我没记错的话,您不能以这种方式测试 webhook,因为管理员不会使用您的 API 密钥,因为它不知道您在管理员中的身份。因此,如果您有一个 heroku 应用程序并且它有一个 API 键,请使用该 API 键首先建立 webhook,验证您使用 API 创建它,然后坐下来使用 Shopify Admin 本身测试您的实际端点。这就是它的工作原理 AFAIK。
管理员中的另一个验证是 mickey mouse,意味着只在任何旧端点上抛出数据而不进行验证。
我已经通过设置 > 通知 > webhooks 在 shopify 中设置了一个 webhook,并输入了一个 heroku 应用 URL。我的 heroku 应用程序在 php 中,我 运行 在此处找到验证功能:https://shopify.dev/tutorials/manage-webhooks,当我打开我的应用程序时,我得到一个空白响应。我不确定这是否是我在我的 heroku 应用程序上做错了什么,或者我是否遗漏了什么。这里的目标是在我选择的事件 运行 之后获取 json 数据,然后将该数据发送给第三方 api。但首先我只想验证我的 heroku 应用程序是否正在接收负载。是否需要向我的 php 文件中添加更多内容以进行验证? (php 这里是菜鸟)。下面是我 运行 在我的 php 文件中使用的代码,是的,我正在使用在 webhooks 部分中找到的共享密钥。
<?php
define('SHOPIFY_APP_SECRET', 'my_shared_secret');
function verify_webhook($data, $hmac_header)
{
$calculated_hmac = base64_encode(hash_hmac('sha256', $data, SHOPIFY_APP_SECRET, true));
return hash_equals($hmac_header, $calculated_hmac);
}
$hmac_header = $_SERVER['HTTP_X_SHOPIFY_HMAC_SHA256'];
$data = file_get_contents('php://input');
$verified = verify_webhook($data, $hmac_header);
error_log('Webhook verified: '.var_export($verified, true)); //check error.log to see the result
?>
如果我没记错的话,您不能以这种方式测试 webhook,因为管理员不会使用您的 API 密钥,因为它不知道您在管理员中的身份。因此,如果您有一个 heroku 应用程序并且它有一个 API 键,请使用该 API 键首先建立 webhook,验证您使用 API 创建它,然后坐下来使用 Shopify Admin 本身测试您的实际端点。这就是它的工作原理 AFAIK。
管理员中的另一个验证是 mickey mouse,意味着只在任何旧端点上抛出数据而不进行验证。