Похоже, вы пытаетесь проверить веб-крючок вместо его создания.Пожалуйста, пройдите ниже процесс
Создайте веб-крючок, используя простой запрос:
POST /admin/webhooks.json
{
"webhook": {
"topic": "customers/create",
"address": "https://whatever.hostname.com/",
"format": "json"
}
}
конечно, вы должны будете передать токен аутентификации shopify в заголовках.
Если вы хотите использоватьпакет для упрощения процесса, который вы можете использовать: https://github.com/oseintow/laravel-shopify
ваш rout.php / web.php
Route::get('/register-webhook', 'WebhooksController@registerCustomerWebhook')->name('customer');
Route::get('/webhooks/customer-created', 'WebhooksController@customerCreated')->name('customerCreated');
, а затемимпортировать и использовать его ->
use Oseintow\Shopify\Facades\Shopify;
.
.
// create a webhook
public function registerCustomerWebhook(...){
Shopify::setShopUrl($shopUrl)->setAccessToken($accessToken)->post("admin/webhooks.json", ['webhook' =>
['topic' => 'customers/create',
'address' => 'https://whatever.hostname.com/path',
'format' => 'json'
]
]);
.}
Проверка webhook:
public function customerCreated(...) {
if (Shopify::verifyWebHook($data, $hmacHeader)) {
// do your stuffs here in background
return response('Hello World', 200)
->header('Content-Type', 'text/plain');
} else {
return response('UnAuthorized', 401)
->header('Content-Type', 'text/plain');
}
.
.
}
Примечание:
- На вашей конечной точке должны быть установлены соответствующие сертификаты ssl
- Вам необходимо ответить наwebhook как можно быстрее.Лучше выполнять свои задачи в фоновом режиме.
Дайте мне знать, если есть какая-то путаница.