`FulfillmentOrdersMove` webhook payload に `source_location` フィールドが追加されました
1. 技術的課題の定義と現状分析
ShopifyのAPIバージョン2023-04では、`FulfillmentOrdersMove` webhook payloadに新たに`source_location`フィールドが追加されました。これまでは、`original_fulfillment_order`の`assignedLocation`が移動操作により変更されることがあり、元々割り当てられていた場所を特定するのが困難でした。
2. 具体的な技術的ソリューションの提案
この課題を解決するために、`FulfillmentOrdersMove` webhook payloadに`source_location`フィールドが追加されました。これにより、元々の場所を特定するための参照点が明確になり、フルフィルメントオーダーの管理がより容易になります。
3. 実装手順とコード例
具体的な使用例を以下に示します。この例では、フルフィルメントオーダーが移動した場合のwebhookを受け取り、その`source_location`をログに記録します。
```ruby ShopifyAPI::Webhook.create({ topic: 'fulfillment_orders/moved', address: 'https://yourapp.com/webhooks/fulfillment_orders_moved', format: 'json' }) post '/webhooks/fulfillment_orders_moved' do hmac_header = request.env['HTTP_X_SHOPIFY_HMAC_SHA256'] data = request.body.read verified = ShopifyAPI::Security.verify_webhook(hmac_header, data) if verified webhook = JSON.parse(data) puts "Fulfillment order was moved from #{webhook['source_location']}" else return [403, "Authentication failed. The webhook cannot be verified."] end end ```4. パフォーマンス・コスト分析
この変更により、フルフィルメントオーダーの移動元の場所を追跡するための追加的なAPI呼び出しが不要となり、リソースの節約が期待できます。さらに、移動先の場所と元の場所の情報が一元化されることで、データの一貫性が向上し、エラーの発生リスクが低減します。
5. 実装時の注意点・ベストプラクティス
`source_location`フィールドを使用する際には、webhookの認証が正しく行われていることを確認してください。上記のコード例では、ShopifyAPI::Security.verify_webhookを使用してwebhookのHMACヘッダーを検証しています。
6. 次のステップ・発展案
フルフィルメントオーダーの管理をさらに効率化するためには、`source_location`フィールドだけでなく、他のフィールドやエンドポイントも活用することを検討してみてください。例えば、`FulfillmentOrdersMove` GraphQL mutationや新しい場所へのフルフィルメントオーダーの移動RESTエンドポイントなどがあります。
参考記事: Added `source_location` field to `FulfillmentOrdersMove` webhook payload






Share:
`PublishedTranslation` GraphQL型の非推奨化について
productVariantsBulkUpdate mutation returns data along with errors