【Shopify.dev和訳】Apps/Fulfillment/FulfillmentOrder migration


この記事について

この記事は、Apps/Fulfillment/FulfillmentOrder migrationの記事を和訳したものです。

記事内で使用する画像は、公式ドキュメント内の画像を引用して使用させていただいております。

Shopify アプリのご紹介

Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。

https://apps.shopify.com/shopify-application-314?locale=ja&from=daniel

Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。

https://apps.shopify.com/font-picker-1?locale=ja&from=daniel

フルフィルメントオーダー移行ガイド

Fulfillment リソースと Order リソースを別々に使用するのではなく、FulfillmentOrder リソースを使用すると、フルフィルメントを管理する方法をより細かく制御することができます。Fulfillment リソースと Order リソースを使用して注文を処理することは、従来の動作であり、最新のワークフローとは互換性がありません。すべてのお客様は、フルフィルメントを管理するために FulfillmentOrder を使用する必要があります。フルフィルメント注文には、次のような利点もあります。

  • フルフィルメントを行うべき場所を決定するために、未達成のラインアイテムのグループの割り当てられた場所を取得することができます。
  • フルフィルメントが必要なアイテムを決定する前に、SKU を照合したり、該当しないオーダーのアイテムをフィルタリングしたりする必要がなくなります。
  • 販売者とアプリは、フルフィルメントプロセス全体のコミュニケーションを向上させるために、要求にメモを追加することができます。
  • フルフィルメントとキャンセルの要求のプロセスが正式になりました。

FulfillmentOrder リソースでフルフィルメントを管理するようにアプリを移行するには、いくつかの追加権限を要求する必要があります。要求する必要のある権限は、構築するアプリの種類によって異なります。

既存のインストールでは、販売者がアプリを再インストールすることなく、追加の許可を要求できます。


アプリの許可の更新

  1. 要求する必要のある追加許可を決定します。これらは、お客様が構築するアプリのタイプによって異なります。
  • フルフィルメントサービスアプリの許可

    • 自分のロケーションに割り当てられたフルフィルメント注文を管理するための write_assigned_fulfillment_orders の読み取りおよび書き込み許可
  • 注文管理アプリのための許可。

    • 販売者管理されたロケーションに割り当てられたフルフィルメントオーダーを管理するための merchant_managed_fulfillment_orders に対する読み取りまたは書き込みの許可
    • 販売者の代わりにサードパーティのフルフィルメント注文を管理するためのthird_party_fulfillment_ordersに対する読み取りまたは書き込み権限
  1. 新規インストールの場合は、OAuth プロセスの一部としてアプリが要求する許可に追加のスコープを含めます。
  2. 既存のインストールでは、以下で説明する/admin/request_granular_access_scopesエンドポイントを使用して、販売者がアプリを再インストールすることなく、追加のスコープを要求します。

既存のインストールへの追加スコープの要求

アプリの既存のインストールでは、販売者がすでにread_fulfillmentsまたはwrite_fulfillmentsを付与している場合は、新しい許可への同意を求める必要はありません。代わりに、以下のエンドポイントを使用して、個々のショップのインストールに対して、きめ細かいアクセススコープのサブセットを要求することができます。

read_fulfillmentsは持っているがwrite_fulfillmentsは持っていない場合は、read_*スコープのみを要求することができます。

POST /admin/request_granular_access_scopes.json
既存のインストールに、既存のアクセススコープの粒度の高いバージョンを追加します。要求の本文には、以下のリストにあるスコープの配列を含める必要があります。

  • read_assigned_fulfillment_orders
  • read_merchant_managed_fulfillment_orders
  • read_third_party_fulfillment_orders
  • write_assigned_fulfillment_orders
  • write_merchant_managed_fulfillment_orders
  • write_third_party_fulfillment_orders

Note
このエンドポイントを使って追加できるのは、上記のスコープのみです。それ以外のスコープを要求するとエラーになります。


既存のインストールに単一の粒度の高いアクセススコープを追加する

POST /admin/request_granular_access_scopes.json

{
  "requested_scopes": ["write_assigned_fulfillment_orders"]
}
View Response
HTTP/1.1 200 OK
{
  "access_scopes": [
    {
      "handle": "write_fulfillments"
    },
    {
      "handle": "write_assigned_fulfillment_orders"
    }
  ]
}

適切なスコープにアクセスできるようになると、Fulfillment Orders を注文管理アプリフルフィルメントサービスアプリとして使用してフルフィルメントの管理を開始できます。


フルフィルメントサービスの移行

従来のフルフィルメントサービスと、フルフィルメントオーダーを利用したフルフィルメントサービスには、いくつかの違いがあります。これらの違いは以下の通りです。

  • フルフィルメントが要求された場合、Shopify はフルフィルメントサービスのために保留中のフルフィルメントを自動的に作成しません。
  • フルフィルメントオーダーがインポートされた場合、Shopify はフルフィルメントサービスに対して保留中のフルフィルメントではなく、成功したフルフィルメントを作成します。

Shopify とアプリの間の通信パターンは変更され、もはや fulfillment/create webhook に依存せず、コールバック URL への明示的な POST に依存します。このコールバック URL は、すべてのフルフィルメントおよびキャンセル要求を処理します。この URL は、GraphQL で fulfillmentServiceUpdate 変異を使用して登録できます。

mutation {
  fulfillmentServiceUpdate(
    id: "gid://shopify/FulfillmentService/5",
    fulfillmentOrdersOptIn: true,
    callbackUrl: "https://www.myapp.com/callback_url",
  ) {
    fulfillmentService {
      fulfillmentOrdersOptIn
  }
}

FulfillmentOrder ベースのフルフィルメントを選択する前に、お客様のアプリは以下の要件を満たす必要があります。

  • 割り当てられたすべてのフルフィルメントが完了していること(PENDINGまたはOPENの状態のものがないこと)。

緊急時のロールバック措置として、オプトインした後に FulfillmentOrder ベースのフルフィルメントをオプトアウトすることができます。しかし、これを行う前に、お客様のアプリが以下の要件を満たす必要があります。

  • すべてのフルフィルメント要求が拒否されていること
  • すべてのキャンセル要求が受け入れられること
  • 以前に受理されたすべての進行中のフルフィルメント注文は、そのフルフィルメント注文を閉じるか、そのフルフィルメントを作成する必要があります。

assignedFulfillmentOrders クエリが何の結果も返さない場合、FulfillmentOrder ベースのフルフィルメントから脱退することができるはずです。FulfillmentOrder ベースのフルフィルメントからの脱退は、一時的にしかお勧めできません。


Shopify アプリのご紹介

Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。

https://apps.shopify.com/shopify-application-314?locale=ja&from=daniel

Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。

https://apps.shopify.com/font-picker-1?locale=ja&from=daniel