遅延決済オーダーへの新APIの導入

1. 技術的課題の定義

Shopifyストアで遅延決済を行う場合、大抵の場合、顧客の保存済みクレジットカードを使用して決済を実行する必要があります。しかし、これまでのAPIでは、顧客の保存済みカードを使用した遅延決済の取扱いが困難であり、オーダーの決済処理を効率的に行うことができませんでした。

2. 現状の技術スタックと問題分析

現状では、GraphQL Admin APIを使用した決済処理は、即時決済に対応していました。遅延決済を行う場合、手動での操作が必要となるため、決済処理の効率化や自動化が困難でした。

3. 技術的ソリューションの提案

この問題を解決するために、ShopifyはGraphQL Admin API version 2022-07で、遅延決済を行うための新APIを導入しました。これにより、顧客の保存済みカードを使用して遅延決済を実行することが可能になります。

4. 実装手順とコード例

具体的な実装手順は以下の通りです。

まず、遅延決済を行うためには、orderCreateMandatePayment mutationを使用します。これにより、保存済みクレジットカードに対する決済を行うことができます。


mutation {
  orderCreateMandatePayment(input: { orderId: "gid://shopify/Order/1" }) {
    payment {
      id
    }
    userErrors {
      field
      message
    }
  }
}

このAPIはGraphApi::JobとpaymentReferenceIdを返します。このpaymentReferenceIdは、orderPaymentStatusクエリを使用して決済のステータスをポーリングするために使用します。


query {
  orderPaymentStatus(id: "gid://shopify/OrderPayment/1") {
    status
    errorCode
  }
}

5. パフォーマンス・コスト分析

新しいAPIの導入により、保存済みカードを使用した遅延決済が可能になり、決済処理の自動化と効率化が図れます。これにより、手間とコストを大幅に削減できます。

6. 実装時の注意点・ベストプラクティス

実装する際には、新APIのバージョン(GraphQL Admin API version 2022-07)に対応していることを確認してください。また、決済ステータスのポーリングは、サーバーの負荷を考慮して適切な間隔で行うようにしましょう。

7. 次のステップ・発展案

今後は、この新APIを活用して、遅延決済を含むより複雑な決済シナリオを効率的に処理できるような仕組みの構築を検討していきましょう。

参考記事: New API for collecting deferred payments on orders