【Shopify.dev和訳】Apps/Payments/Transaction requirements
Shopify アプリのご紹介
Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。
Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。
一般的なトランザクション要件
ペイメントアプリは、テストモードのサポートを含め、トランザクションに関する以下の一般的な要件に従って動作する必要があります。
mTLS の構成
ペイメントアプリは、mTLS を実装する必要があります。mTLS を使用することで、Shopify とペイメントアプリ間のトラフィックが信頼でき、安全であることを保証します。
サーバー証明書には、Shopify の自己署名 CA ではなく、Trusted CA Signed SSL 証明書を使用する必要があります。Shopify の自己署名付き CA を使って Shopify のクライアント証明書を検証する必要があります。
Shopify のペイメントプラットフォームのルート CA
-----BEGIN CERTIFICATE-----
MIICQTCCAeigAwIBAgIUe+t5Y8PXvczEIT25w+VFTeKQUn4wCgYIKoZIzj0EAwIw
bTELMAkGA1UEBhMCQ0ExEDAOBgNVBAgTB09udGFyaW8xDzANBgNVBAcTBk90dGF3
YTEQMA4GA1UEChMHU2hvcGlmeTEpMCcGA1UEAxMgU2hvcGlmeSBQYXltZW50IFBs
YXRmb3JtIFJvb3QgQ0EwHhcNMjEwMjI1MTk0OTQ5WhcNMjkwMjIzMTk1MDE5WjBt
MQswCQYDVQQGEwJDQTEQMA4GA1UECBMHT250YXJpbzEPMA0GA1UEBxMGT3R0YXdh
MRAwDgYDVQQKEwdTaG9waWZ5MSkwJwYDVQQDEyBTaG9waWZ5IFBheW1lbnQgUGxh
dGZvcm0gUm9vdCBDQTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABE2tRNrL28gM
eD6cVH1Evn40gTzoy+aH47QnAhs6oHBZ+pgN1iCK9G6u/Va1BdWqsbmmZMZfZkY4
x+kqHRjw29GjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgED
MB0GA1UdDgQWBBRVqavxvOa9K9SKEuHz4ZmXcCyy5DAfBgNVHSMEGDAWgBRVqavx
vOa9K9SKEuHz4ZmXcCyy5DAKBggqhkjOPQQDAgNHADBEAiB+pPrzREg+NpenROMY
n5IH3OrORXERggd0+YLI5HhL/wIgcAo70tOV/0Vv9oGFjNbI9TpkeFUgb8Rc5Gh6
65LHwoQ=
-----END CERTIFICATE-----
Shopify のペイメントプラットフォームセカンダリ CA プロダクション
-----BEGIN CERTIFICATE-----
MIICUjCCAfigAwIBAgIUXLkjZ6s/S+FzEbQABn9FmC3vCD8wCgYIKoZIzj0EAwIw
bTELMAkGA1UEBhMCQ0ExEDAOBgNVBAgTB09udGFyaW8xDzANBgNVBAcTBk90dGF3
YTEQMA4GA1UEChMHU2hvcGlmeTEpMCcGA1UEAxMgU2hvcGlmeSBQYXltZW50IFBs
YXRmb3JtIFJvb3QgQ0EwHhcNMjEwMjI1MTk0OTU1WhcNMjQwMjI1MTk1MDI1WjB9
MQswCQYDVQQGEwJDQTEQMA4GA1UECBMHT250YXJpbzEPMA0GA1UEBxMGT3R0YXdh
MRAwDgYDVQQKEwdTaG9waWZ5MTkwNwYDVQQDEzBTaG9waWZ5IFBheW1lbnQgUGxh
dGZvcm0gU2Vjb25kYXJ5IENBIFByb2R1Y3Rpb24wWTATBgcqhkjOPQIBBggqhkjO
PQMBBwNCAASB/PJiqXjVxmdKWsAjg8ljtdB6th71ZuiSjyMIHfUqe1zUGkNlGfhc
Wdxb/XSY1RiO0uZZJUTGsr37Aj42mPgDo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYD
VR0TAQH/BAgwBgEB/wIBATAdBgNVHQ4EFgQU9PLeHDNrctw7CkA6UhSNOZU8uVEw
HwYDVR0jBBgwFoAUVamr8bzmvSvUihLh8+GZl3AssuQwCgYIKoZIzj0EAwIDSAAw
RQIhAJkeNxYqCCPo115sgd20SN/87olMagNZqlJa8GZbo4oDAiB9S88ga4jsZCvA
ciExpaKrSSFdl4TTxpfLiNZX0OFU5w==
-----END CERTIFICATE-----
アイデンティフィケーション
Payments Apps APIs (Shopify からあなたのアプリへの HTTP リクエスト)
Payments Apps API では、idempotency リクエストをサポートする必要があります。同じ idempotency キーを持つリクエストがどれだけ送信されても、結果は同じでなければなりません。
idempotency をサポートすることで、Shopify は誤って同じ操作を 2 回行うことなく、安全にリクエストを再試行することができます。これは、同じ支払いに対する複数の請求など、防ぐべきネットワーク エラーがある場合に重要です。
idempotency のキーとなる属性は、API ごとに定義されています。
GraphQL ミューテーション(Shopify へのリクエスト)
idempotency は、与えられた id
に対して、オペレーション名ごとのレベルで実装されます。同じ名前のミューテーションリクエストが複数送信された場合、操作は一度だけ実行され、同じレスポンスが返されます。例えば、同じ id
で複数の PaymentSessionResolve リクエストが送信された場合がこれに該当します。
異なる名前のリクエストが同じ ID で送信された場合は、最初のリクエストのみが処理されます。例えば、PaymentSessionResolveリクエストと PaymentSessionReject リクエストの両方が同じ支払い id
で送信された場合、PaymentSessionResolve リクエストが処理され、PaymentSessionReject リクエストは失敗して user_error
が返されます。
再試行ポリシー
Shopify の Payments Apps API には非同期の性質があるため、支払いや払い戻しのリクエストの結果を Shopify に通知するために、GraphQL リクエストを送信する必要があります。リトライポリシーは、マーチャント、パートナー、Shopify の間でデータの一貫性を提供するのに役立ちます。
GraphQL リクエストの確認応答(HTTP 200 ステータスコード)を受信しなかった場合、以下の段階的なストラテジーに従ってリクエストを再試行する必要があります(24 時間で合計 18 回まで)。
パラメータ | 説明 | 値 |
---|---|---|
Number of recommended retries | 推奨再試行回数の最大値です。 | 18 |
Base delay interval | 最初の再試行を行うまでの時間間隔。 | 5 秒 |
Exponential backoff factor | パートナーは、リクエストをすぐに再試行し、次に 5 秒後に再試行し、その後は、リクエストが承認されるか 24 時間が経過するまで、時間間隔を長くして再試行することが期待されます。 | 例を見る |
例
[0 秒、5 秒、10 秒、30 秒、45 秒、1 分、2 分、5 分、12 分、38 分、1 時間、2 時間] + [4 時間] * 5
Payments Apps API のミューテーションには、リトライポリシーを実装する必要があります。
レートの制限
プラットフォームの安定性を守るため、Payments Apps はレート制限されています。詳細については、Shopify API rate limits を参照してください。
テストモード
ペイメントアプリは、テストモードをサポートする必要があります。ストアがテストモードになっている場合、Shopify からのリクエストには test
属性が含まれます。この属性が true
に設定されている場合、支払いはテスト用の支払いとして処理され、お金は動きません。テストモードは、ペイメントアプリの構築プロセスを簡素化し、マーチャントはライブトランザクションの処理を開始する前に統合をテストすることができます。
開発ストアでの注意点
開発ストアを使用する場合、ペイメントゲートウェイがテストモードを有効にしていないと、支払いを処理できません。そうでない場合、Shopify は支払いの試みをブロックします。
次のステップ
その他の情報
Shopify アプリのご紹介
Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。
Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。
Discussion