サブスクリプション契約の配送要件が製品バリエーションと同期するようになりました
Shopify Plusのサブスクリプション契約に関する配送要件の取り扱いが改善され、税金の計算、配送の詳細、注文合計の正確性が確保されるようになりました。これらの変更は、subscriptionBillingAttemptCreate ミューテーションを使用する場合に適用されます。
課題と現状分析
これまで、サブスクリプション契約の配送要件は、契約ラインが追加された時点での静的な値が保存されていました。これは製品バリエーションを更新するたびに配送要件が最新の状態に保たれるとは限らないため、税金の計算や配送詳細などに誤りが生じる可能性がありました。
技術的ソリューションの提案
この問題を解決するために、サブスクリプション契約は現在、各契約ラインに対して製品バリエーションから「配送が必要」の値を動的に取得するようになります。これにより、製品バリエーションを更新するたびに配送要件が常に最新の状態に保たれます。この変更はSubscriptionDraft.fields.deliveryOptionsにも適用されます。
実装手順とコード例
この変更はAPIの呼び出し方に影響します。具体的には、subscriptionBillingAttemptCreate ミューテーションを呼び出す際に、製品バリエーションから「配送が必要」の値を取得するようにコードを修正する必要があります。以下に実装例を示します。
mutation {
subscriptionBillingAttemptCreate(contractId: "gid://shopify/SubscriptionContract/1", billingAttempt: {lineItems: [{variantId: "gid://shopify/ProductVariant/1", quantity: 1}]}) {
userErrors {
field
message
}
billingAttempt {
id
status
invoice {
id
url
status
}
}
}
}
パフォーマンス・コスト分析
この変更により、注文合計が正確な配送費用を反映し、税金が現在の配送要件に基づいて正しく計算されます。また、注文処理前に配送設定の問題が検出され、不必要な配送費用が発生することがなくなります。これにより、システムのパフォーマンスが向上し、コストが削減されます。
実装時の注意点・ベストプラクティス
この変更を実装する際には、以下の点に注意してください。
- サブスクリプション契約の各ラインに対して「配送が必要」の値を動的に取得するようにコードを修正します。
- サブスクリプション契約内のラインが配送を必要としない場合、注文に配送ラインを追加しないようにします。
次のステップ・発展案
この変更により、サブスクリプション契約が製品カタログの変更と同期をとることが可能になります。今後は、製品バリエーションの変更を即座に反映し、顧客体験を向上させるための新たな手法を検討することが可能になります。
参考記事: Subscription contract shipping requirements now sync with product variants



AUTHOR
Share:
Polaris統合Webコンポーネントがついに安定版に
`InventoryShipmentReceive` ミューテーションが、今や冪等性をサポートします