注文編集の新たなバリデーションと`userErrors`の取り扱い
技術的課題の定義と現状分析
Shopifyの注文編集機能は、ギフトカードの金額上限、注文あたりのアクティブなラインアイテム数、そしてラインアイテムの合計金額の範囲といった複数のバリデーションが必要です。これらのバリデーションが失敗すると、APIが関連するuserErrorsをレスポンスで返すようになりました。これらの変更は全てのサポートされているAPIバージョンに適用されます。
具体的な技術的ソリューションの提案
具体的には、以下の3つの新たなバリデーションが追加されました。
ギフトカードの金額上限
注文編集機能を利用して追加されたギフトカードは、最大値の制限が適用されるようになりました。制限は通貨によりますが、一般的な販売者のユースケースをカバーするほど十分に高く設定されています。
エラーメッセージ:Gift card amount exceeds the limit of {limit}
ラインアイテム数の上限
注文には、OrderEditAddVariantとOrderEditAddCustomItemの変異を使用する際のアクティブなラインアイテム数の最大数が制限されます。ほとんどのショップでは500個のラインアイテムが上限となります。
エラーメッセージ:The number of line items exceeds the limit of {limit}
ラインアイテムの小計上限
すべてのアクティブなラインアイテムの合計が小計の上限内に収まることを注文が検証するようになりました。この検証はすでにチェックアウト時に存在し、現在は注文編集にも適用されます。現行の上限は、通常の使用で正当な注文をブロックしないように十分に高く設定されています。
エラーメッセージ:Line item subtotal exceeds the limit of {limit}
実装手順とコード例
これらのバリデーションは、注文編集APIを介して自動的に適用されます。したがって、開発者はこれらの新しいバリデーションを明示的にコードに追加する必要はありません。しかし、これらのエラーメッセージを適切に処理するためには、次のようなコードが必要になります。
```js // 実装例 try { // ギフトカードの追加、ラインアイテムの追加などの操作 } catch (error) { if (error.message.includes('Gift card amount exceeds the limit of')) { // ギフトカードの金額上限超過時の処理 } else if (error.message.includes('The number of line items exceeds the limit of')) { // ラインアイテム数の上限超過時の処理 } else if (error.message.includes('Line item subtotal exceeds the limit of')) { // ラインアイテムの小計上限超過時の処理 } } ```パフォーマンス・コスト分析
これらの新たなバリデーションの導入により、注文編集の操作がより堅牢になります。不正な注文を防ぐことで、ショップのパフォーマンスとコスト効率を向上させることが可能となります。
実装時の注意点・ベストプラクティス
これらの新しいバリデーションを適切に取り扱うことで、ユーザーエラーの処理を改善し、ユーザーエクスペリエンスを向上させることができます。具体的には、エラーメッセージを適切に表示し、ユーザーが何が問題であるのかを理解できるようにすることが重要です。
次のステップ・発展案
今後、さらに多くのバリデーションが導入される可能性があるため、エラーハンドリングのロジックを柔軟に保つことが重要です。また、これらのバリデーションの変更を追跡し、ショップの運用に影響を及ぼさないようにするために、ShopifyのAPIの更新情報を定期的にチェックすることを推奨します。
参考記事: Order editing new validations and handled `userErrors`



AUTHOR
Share:
税金サマリーのWebhookと計算リクエストが、今後ショップと表示通貨額を含むようになりました