#php #api #heroku #shopify #webhooks
#php #API #heroku #Shopify #webhooks
Вопрос:
Я настроил webhook в Shopify через настройки> уведомления> webhooks и ввел URL-адрес приложения heroku. Мое приложение 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
?>
Комментарии:
1. Здесь следует использовать секрет webhook. Не общий секрет.
2. правильно, это то, что я использовал.
Ответ №1:
Если я не ошибаюсь, вы не можете тестировать webhooks таким образом, поскольку администратор не использует ваш ключ API, поскольку он понятия не имеет, кто вы, когда находитесь в качестве администратора. Итак, если у вас есть приложение heroku и у него есть ключ API, используйте этот ключ API, чтобы сначала установить webhook, убедиться, что вы создали его с помощью API, а затем посидеть и протестировать свою фактическую конечную точку с помощью Shopify Admin. Вот как это работает AFAIK.
Другая проверка в admin — это mickey mouse, предназначенная для того, чтобы просто передавать данные в любую старую конечную точку без проверки.
Комментарии:
1. Именно здесь Shopify не хочет признавать свою ошибку в документах. Созданные вручную веб-ходы подписываются секретом webhook вместо общего секрета.
2. Я не настолько разбираюсь в подтверждении, поскольку писать о платформе, состоящей из миллиона движущихся частей, явно непростая задача. Я действительно думал, что проблема тестирования webhooks с помощью кнопок администратора была четко объяснена много лет назад… поэтому странно, что люди все еще сталкиваются с этой проблемой.
3. @DavidLazar Я согласен, именно поэтому мне показалось странным, что он не проверялся, но я смог запустить его