Php Shopify Webhook在测试中起作用,但在实践中不起作用

Php Shopify Webhook在测试中起作用,但在实践中不起作用,php,http-headers,shopify,webhooks,shopify-app,Php,Http Headers,Shopify,Webhooks,Shopify App,我的Shopify“orders/paid”webhook有一些问题,我通过Shopify SDK(使用PHP包装器:)安装到用户商店。无论如何,我创建webhook的方式如下: $shop = $this->request->getVar('shop'); // Get Shopify store URL // Get access token for store $config = array('ShopUrl' => $shop, 'ApiKey' => 'xx

我的Shopify“orders/paid”webhook有一些问题,我通过Shopify SDK(使用PHP包装器:)安装到用户商店。无论如何,我创建webhook的方式如下:

$shop = $this->request->getVar('shop');  // Get Shopify store URL

// Get access token for store
$config = array('ShopUrl' => $shop, 'ApiKey' => 'xxx', 'SharedSecret' => 'xxx');
\PHPShopify\ShopifySDK::config($config);
$accessToken = \PHPShopify\AuthHelper::getAccessToken();

// Keep track of access_token for SDK calls and authenticate to store for webhook creation
$addToken = $this->Stores->addAccessToken($shop, $accessToken);
$config = array('AccessToken' => $accessToken, 'ShopUrl' => $shop);
$shopify = new \PHPShopify\ShopifySDK($config);

// Create orders/paid webhook
$orderPaidHook = array('topic' => 'orders/paid', 'address' => 'https://api.autoloapp.com/webhook/create', 'format' => 'json');

try {
    $webhooks = $shopify->Webhook->post($orderPaidHook);
 }
据我所知,这段代码是有效的,使用
print\r($webhooks)
可以为我提供一个有效的Webhook,它(理论上)已经安装到商店中。然而,当一个订单在商店里实际付款时,我没有收到任何信息

在Shopify管理员my webhook中使用“通知”下的“”设置可以完美地工作。使用PostMan模拟webhook调用非常有效

处理webhook的代码如下所示:

$headers = getallheaders();
$topic = $headers['X-Shopify-Topic'];
$storeName = $headers['X-Shopify-Shop-Domain'];

if ($topic == 'orders/paid') {
     // Do some stuff, insert row into database
}
同样,当我为Shopify使用PostMan或内置的“testwebhook”设置时,我的数据库中的行创建得很好。当我使用真正的webhook时,什么都不会发生。我不知道为什么会发生这种情况,据我所知,所有的标题都应该是相同的。我需要以某种方式验证webhook吗

作为参考,我正在使用CodeIgniter 4.0、PHP7.0和Shopify SDK的最新版本


我在Shopify的文档中发现了这样一条注释:“请注意,如果您使用的是基于框架的框架,如Ruby on Rails或Sinatra,那么您要查找的标题是HTTP_X_Shopify_HMAC_SHA256”。根据我目前的设置,我应该仍然使用X-Shopify-Shop-Domain而不是HTTP\u X\u Shopify\u Shop\u Domain,对吗?非常感谢您的帮助

因此,我最终发现,出于某种原因,“订单/付费”webhook在“生产环境”中不适合我,尽管在我的测试环境中工作得很好。只需将主题更改为“订单/创建”即可解决我的问题