ここでWebhookを作成しようとしています:
curl --header "X-Shopify-Access-Token: <token>" -d '{"webhook": {"topic": "orders/create", "address": "http://www.google.com/", "format": "json"}}' https://test-store-402.myshopify.com/admin/webhooks.json
読みやすくするためにきれいに印刷された JSON を次に示します。
{
"webhook": {
"topic": "orders/create",
"address": "http://www.google.com/",
"format": "json"
}
}
このエラーが返されます:
{"errors":{"topic":["can't be blank","Invalid topic specified. Topics allowed: orders/create, orders/updated, orders/paid, orders/cancelled, orders/fulfilled, orders/partially_fulfilled, app/uninstalled, customer_groups/create, customer_groups/update, customer_groups/delete, products/create, products/update, products/delete, collections/create, collections/update, collections/delete, carts/create, carts/update"],"address":["can't be blank"]}}
私は確認しました:
- トピックのスペルが正しい
- ドキュメントに従って、JSON リクエストのペイロードは "webhook" (単数形) で正しくラップされています。
- JSON をコピーして jsonlint.com に貼り付け、JSON が有効であることを確認しました。
混乱しています...特にこれに関連するSOに関する他の質問は見られませんでした.私は何かひどく明白な間違ったことをしているに違いありません.
更新Content-type: application/json
:ヘッダーを渡すことで、コマンドラインで動作するようになりました。しかし今、私はcurl_exec
PHPで問題を抱えています。次の CURLOPT のセットがあります。
CURLOPT_RETURNTRANSFER: true
CURLOPT_SSL_VERIFYPEER: false
CURLOPT_FOLLOWLOCATION: true
CURLOPT_MAXREDIRS: 10
CURLOPT_CUSTOMREQUEST: 'POST'
CURLOPT_HTTPHEADER: array {
0 => string 'X-Shopify-Access-Token: <token>'
1 => string 'Content-type: application-json' (length=30)
GET をうまく実行できることに注意してくださいcurl
。この紛らわしい応答を返す POST のみです。