Shopify
Webhook
メタフェイズではShopifyを利用したストア構築を行っています。
今回はWebhookを設定する方法を紹介いたします。
1「設定」をクリックします。
2「通知」をクリックします。
3「Webhookを作成」をクリックします。
4 各入力欄へ入力し「保存」をクリックします。
※URLは「https」で始まるURLを入力して下さい。
付録
上記設定では「注文の支払い」時にURLにJSONで注文情報が送信されます。
送信される情報は下記のようなものです。
http header
Host : 送信先ドメイン X-Forwarded-Host : 送信先ドメイン X-Forwarded-For : xxx.xxx.xxx.xxx X-Forwarded-Proto : https X-Backend : xxx.xxx.xxx Content-Length : 6502 Content-Type : application/json X-Shopify-Topic : orders/paid X-Shopify-Shop-Domain : xxxxxx.myshopify.com X-Shopify-Order-Id : 123456789 X-Shopify-Test : true X-Shopify-Hmac-Sha256 : xxxxxxxxxxxxxx X-Shopify-Webhook-Id : xxxx-xxxx-xxxx-xxxx-xxxx X-Shopify-Api-Version : 2021-04 Accept-Encoding : gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept : */* User-Agent : Ruby
http body
{ "id": 820982911946154508, "email": "jon@doe.ca", "closed_at": null, "created_at": "2021-06-21T16:59:36+09:00", "updated_at": "2021-06-21T16:59:36+09:00", "number": 234, "note": null, "token": "123456abcd", "gateway": null, "test": true, "total_price": "1805", "subtotal_price": "1795", "total_weight": 0, "total_tax": "0", "taxes_included": false, "currency": "JPY", "financial_status": "voided", "confirmed": false, "total_discounts": "5", "total_line_items_price": "1800", "cart_token": null, "buyer_accepts_marketing": true, "name": "#9999", "referring_site": null, "landing_site": null, "cancelled_at": "2021-06-21T16:59:36+09:00", "cancel_reason": "customer", "total_price_usd": null, "checkout_token": null, "reference": null, "user_id": null, "location_id": null, "source_identifier": null, "source_url": null, "processed_at": null, "device_id": null, "phone": null, "customer_locale": "ja", "app_id": null, "browser_ip": null, "landing_site_ref": null, "order_number": 1234, "discount_applications": [ { "type": "manual", "value": "5.0", "value_type": "fixed_amount", "allocation_method": "across", "target_selection": "explicit", "target_type": "line_item", "description": "Discount", "title": "Discount" } ], "discount_codes": [], "note_attributes": [], "payment_gateway_names": [ "visa", "bogus" ], "processing_method": "", "checkout_id": null, "source_name": "web", "fulfillment_status": "pending", "tax_lines": [], "tags": "", "contact_email": "jon@doe.ca", "order_status_url": "https:\/\/xxxxxx.myshopify.com\/54097543337\/orders\/123456abcd\/authenticate?key=abcdefg", "presentment_currency": "JPY", "total_line_items_price_set": { "shop_money": { "amount": "1800", "currency_code": "JPY" }, "presentment_money": { "amount": "1800", "currency_code": "JPY" } }, "total_discounts_set": { "shop_money": { "amount": "5", "currency_code": "JPY" }, "presentment_money": { "amount": "5", "currency_code": "JPY" } }, "total_shipping_price_set": { "shop_money": { "amount": "10", "currency_code": "JPY" }, "presentment_money": { "amount": "10", "currency_code": "JPY" } }, "subtotal_price_set": { "shop_money": { "amount": "1795", "currency_code": "JPY" }, "presentment_money": { "amount": "1795", "currency_code": "JPY" } }, "total_price_set": { "shop_money": { "amount": "1805", "currency_code": "JPY" }, "presentment_money": { "amount": "1805", "currency_code": "JPY" } }, "total_tax_set": { "shop_money": { "amount": "0", "currency_code": "JPY" }, "presentment_money": { "amount": "0", "currency_code": "JPY" } }, "line_items": [ { "id": xxxxx, "variant_id": xxxxxx, "title": "アイテム1バリエーション無し", "quantity": 1, "sku": "", "variant_title": null, "vendor": null, "fulfillment_service": "manual", "product_id": xxxxxxx, "requires_shipping": true, "taxable": true, "gift_card": false, "name": "アイテム1バリエーション無し", "variant_inventory_management": "shopify", "properties": [], "product_exists": true, "fulfillable_quantity": 1, "grams": 0, "price": "900", "total_discount": "0", "fulfillment_status": null, "price_set": { "shop_money": { "amount": "900", "currency_code": "JPY" }, "presentment_money": { "amount": "900", "currency_code": "JPY" } }, "total_discount_set": { "shop_money": { "amount": "0", "currency_code": "JPY" }, "presentment_money": { "amount": "0", "currency_code": "JPY" } }, "discount_allocations": [], "duties": [], "admin_graphql_api_id": "gid:\/\/shopify\/LineItem\/xxxxxxxxxx", "tax_lines": [] }, { "id": xxxxxxx, "variant_id": xxxxxxxxxx, "title": "アイテム1バリエーション無し", "quantity": 1, "sku": "", "variant_title": null, "vendor": null, "fulfillment_service": "manual", "product_id": xxxxxxxx, "requires_shipping": true, "taxable": true, "gift_card": false, "name": "アイテム1バリエーション無し", "variant_inventory_management": "shopify", "properties": [], "product_exists": true, "fulfillable_quantity": 1, "grams": 0, "price": "900", "total_discount": "5", "fulfillment_status": null, "price_set": { "shop_money": { "amount": "900", "currency_code": "JPY" }, "presentment_money": { "amount": "900", "currency_code": "JPY" } }, "total_discount_set": { "shop_money": { "amount": "5", "currency_code": "JPY" }, "presentment_money": { "amount": "5", "currency_code": "JPY" } }, "discount_allocations": [ { "amount": "5", "discount_application_index": 0, "amount_set": { "shop_money": { "amount": "5", "currency_code": "JPY" }, "presentment_money": { "amount": "5", "currency_code": "JPY" } } } ], "duties": [], "admin_graphql_api_id": "gid:\/\/shopify\/LineItem\/xxxxxxx", "tax_lines": [] } ], "fulfillments": [], "refunds": [], "total_tip_received": "0.0", "original_total_duties_set": null, "current_total_duties_set": null, "admin_graphql_api_id": "gid:\/\/shopify\/Order\/xxxxxxxx", "shipping_lines": [ { "id": xxxxxxxx, "title": "Generic Shipping", "price": "10", "code": null, "source": "shopify", "phone": null, "requested_fulfillment_service_id": null, "delivery_category": null, "carrier_identifier": null, "discounted_price": "10", "price_set": { "shop_money": { "amount": "10", "currency_code": "JPY" }, "presentment_money": { "amount": "10", "currency_code": "JPY" } }, "discounted_price_set": { "shop_money": { "amount": "10", "currency_code": "JPY" }, "presentment_money": { "amount": "10", "currency_code": "JPY" } }, "discount_allocations": [], "tax_lines": [] } ], "billing_address": { "first_name": "太郎", "address1": "請求通り", "phone": "555-555-BILL", "city": "横浜市", "zip": "221-0054", "province": "Tokyo", "country": "Japan", "last_name": "山田", "address2": null, "company": "請求会社", "latitude": null, "longitude": null, "name": "山田太郎", "country_code": "JP", "province_code": "JP-13" }, "shipping_address": { "first_name": "太郎", "address1": "出荷通り", "phone": "555-555-SHIP", "city": "横浜市", "zip": "221-0054", "province": "Tokyo", "country": "Japan", "last_name": "山田", "address2": null, "company": "運送会社", "latitude": null, "longitude": null, "name": "山田太郎", "country_code": "JP", "province_code": "JP-13" }, "customer": { "id": xxxxxxxx, "email": "john@test.com", "accepts_marketing": false, "created_at": null, "updated_at": null, "first_name": "太郎", "last_name": "山田", "orders_count": 0, "state": "disabled", "total_spent": "0.00", "last_order_id": null, "note": null, "verified_email": true, "multipass_identifier": null, "tax_exempt": false, "phone": null, "tags": "", "last_order_name": null, "currency": "JPY", "accepts_marketing_updated_at": null, "marketing_opt_in_level": null, "admin_graphql_api_id": "gid:\/\/shopify\/Customer\/xxxxxxxx", "default_address": { "id": xxxxxxxx, "customer_id": xxxxxxxx, "first_name": null, "last_name": null, "company": null, "address1": "123 Elm St.", "address2": null, "city": "Ottawa", "province": "Ontario", "country": "Canada", "zip": "K2H7A8", "phone": "123-123-1234", "name": "", "province_code": "ON", "country_code": "CA", "country_name": "Canada", "default": true } } }
情報を受け取る側は受け取った情報の完全性を検証する処理を行って下さい。
参考サイト:https://shopify.dev/apps/webhooks
Shopifyを利用したストアの構築・運用のご相談はお問い合わせフォームより受け付けております。
お問い合わせ
Webサイト制作やWebビジネスに関するお悩みがある方はお気軽にご相談ください。