カテゴリー:
documentation
閲覧数:364 配信日:2019-04-08 08:42
docs
Payments > PREPARING FOR SCA > Payment Intents > Migration Guide
・Payment Intents Migration Guide
・Payment Intents 移行ガイド
・既存システムをPayment Intents APIへ移行する方法を学ぶ
・手動確認を使用して、既存のカードとCharges APIのシステムをPayment Intents APIへ移行する方法を学ぶ
既存のカードとCharges API システム から移行する場合
・「手動で確認する」ことをお勧めする。これが移行するための最速の方法だ
ウェブフックに慣れている場合
・自動確認を使用することをお勧めする
・自動確認は、支払いの収集に必要な操作を自動的に処理する
注意事項
手動確認を使用する予定はないため、
・以下の日本語訳は最新へアップデートしていない
→ 以前(2019/4/8時点)に掲載されていた情報に基づく日本語訳のため、注意が必要
新しいフロー
Payment Intents APIは、Stripeによる支払いを受け入れるための新しいフローを導入した
・トークン化された支払い情報をサーバーに送信して手動で請求オブジェクトを作成する代わりに、まずサーバー上にPaymentIntentを作成してから、Stripe.jsまたはStripeのモバイルSDKの1つを使用してクライアント側で支払いプロセスの完了を開始する
・このアプローチは前のモデルを逆にするので、あなたはこのAPIを採用するためにあなたの既存のトークンまたはソースベースのStripeシステムの重要な部分を並べ替える必要があるかもしれない
Payment Intents APIフローを従来のシステムと比較する
Elementsを使用してクレジットカードでの支払いを受け付ける従来のトークンベースのStripeシステムには、通常次の手順が含まれる
・Elementsを使用してブラウザで顧客の支払い情報を集める
・Stripe.jsで支払い情報をトークン化する
・サーバーにトークンを送信するためのリクエストを実行する
・トークンを使用して、希望する金額と通貨でサーバーに請求を作成する
・支払いが成功したら、顧客の注文を履行する
比較すると、同等のPayment Intents APIシステムには通常、次の手順が含まれる
・希望する金額と通貨であなたのサーバーにPaymentIntentを作成する
・PaymentIntentのクライアントシークレットをクライアントサイドに送信する
・Elementsを使用してブラウザで顧客の支払い情報を集める
・Stripe.jsまたはモバイルSDKを使用してダイナミック3Dセキュアを実行し、クライアント側で支払いを完了する
・支払いが成功した場合は、サーバーのWebフックを使用して顧客の注文を処理する
移行のための戦略
あなたの支払いフローを移行するのは大変なことだ
・Payment Intents APIをCharges APIと並行して使用することは安全だ
・私たちの目標は、できるだけ段階的に移行できるようにすることだ
・この目的のために、私たちはあなたの変更を以下のステップに分割することを勧める
課金から読み取るコードを移行する
システムを移行する
・アップグレードされたシステムが3D Secure認証を処理することを確認するために3D Secureテストカードで各支払いフローを必ずテストしてくれ
課金から読み取るコードの移行
chargeオブジェクトには2つの新しいプロパティpayment_method_detailsとbilling_detailsがある
・これらは、課金に使用された支払い方法の詳細を読み取るための一貫したインターフェースを提供する
・これらのフィールドは、すべてのAPIバージョンと、 charges APIとPayment Intents APIの両方で作成されたchargeオブジェクトで使用できる
次の表は、課金でよく使用されるプロパティと、新しいプロパティを使用して同じ情報にアクセスする方法を示している
・省略
Webシステムを移行する / Elements
Stripe.js&Elementsを使用して構築されたシステムは、以下のステップで構成されている
・サーバー側で支払いを回収するintentを登録する
・クライアント側で支払いの詳細を集める
・支払いの作成を開始
・サーバー側で顧客の注文を処理する
ステップ | 処理内容 | BEFORE | AFTER |
---|---|---|---|
1 | サーバー側で支払いを回収するintentを登録する 顧客の支払いを処理するには、まずサーバーにPaymentIntentを作成し、それをクライアント側からアクセスできるようにする必要がある |
Not possible before | Stripe::PaymentIntent.create({ |
2 | クライアント側で支払い詳細を収集する handleCardPayment関数を使用して、支払い情報を収集し、それをStripeに直接送信する |
const {token} = |
const {paymentIntent, error} = |
3 | 支払いの作成を開始する 既存のシステムでは、最後のステップはトークン化された支払い情報を使用してサーバーに課金を作成することだ。前の手順で呼び出されたhandleCardPayment関数によって課金の作成が開始されるため、これは不要になった |
charge = Stripe::Charge.create( |
Completed in previous step |
4 | 顧客の注文を処理する StripeはPayment Intents APIシステムで非同期に料金を発生させるため、Webフックを使用して支払いがいつ正常に完了したかを判断する必要がある。 顧客の支払いが成功した後で注文の履行などの手順を実行するには、Webhookのサポートを実装し、payment_intent.succeededイベントを監視する |
課金が成功したら、履行してくれ | payment_intent.succeeded Webhookイベントを監視し、Webhookハンドラーを実行する |
Webシステムを移行する / 支払いリクエストボタン
Stripe.js paymentRequest API
・従来のPaymentRequestシステムで取得されたトークンを使用してそれをPaymentIntentに添付することによって、Payment Intents APIと連携する
PaymentRequestを使用して構築されたシステムは、以下のステップで構成されている
・サーバー側で支払いを回収するintentを登録する
・クライアント側で支払いの詳細を集める
・支払いの作成を開始
・サーバー側で顧客の注文を処理する
ステップ | 処理内容 | BEFORE | AFTER |
---|---|---|---|
1 | サーバー側で支払いを回収するintentを登録する 顧客の支払いを処理するには、まずサーバーにPaymentIntentを作成し、それをクライアント側からアクセスできるようにする必要がある |
Not possible before | Stripe::PaymentIntent.create({ |
2 | クライアント側で支払い詳細を収集する PaymentRequestオブジェクトのtokenイベントをリッスンする。これは、支払いプロセスがいつ完了したかを示すために使用できるトークンとコールバック関数を提供する。 このシステムをPayment Intents APIをサポートするように調整するには、サーバーにトークンを送信するのではなく、handleCardPayment関数を使用してトークンIDを渡す。 handleCardPayment関数によって返されたpromiseが解決したら、完了コールバックを呼び出す |
paymentRequest.on( |
paymentRequest.on( |
3 | 支払いの作成を開始する 既存のシステムでは、最後のステップはトークン化された支払い情報を使用してサーバーに課金を作成することだ。前の手順で呼び出されたhandleCardPayment関数によって課金の作成が開始されるため、これは不要になった |
charge = Stripe::Charge.create( |
Completed in previous step |
4 | 顧客の注文を処理する StripeはPayment Intents APIシステムで非同期に料金を発生させるため、Webフックを使用して支払いがいつ正常に完了したかを判断する必要がある。 顧客の支払いが成功した後で注文の履行などの手順を実行するには、Webhookのサポートを実装し、payment_intent.succeededイベントを監視する |
課金が成功したら、履行してくれ | payment_intent.succeeded Webhookイベントを監視し、Webhookハンドラーを実行する |
Webシステムを移行する / Legacy Checkout
従来のCheckoutを使用している場合
・新しいCheckoutにアップグレードする
・これは、Stripeで支払いを受け取る最も早い方法だ
・それを使うと、あなたは一度限りの支払いと購読を受け入れることができる
・サーバーでStripe APIを使用せずにCheckoutを使用することもできる
代わりに独自のチェックアウトフローを作成したい場合
・Elementsに切り替えてくれ
Elementsにアップグレードしたと仮定すると、次の手順で構成されるPayment Intents APIシステムを構築できる
・サーバー側で支払いを回収するintentを登録する
・クライアント側で支払いの詳細を集める
・支払いの作成を開始
・サーバー側で顧客の注文を処理する
ステップ | 処理内容 | BEFORE | AFTER |
---|---|---|---|
1 | サーバー側で支払いを回収するintentを登録する 顧客の支払いを処理するには、まずサーバーにPaymentIntentを作成し、それをクライアント側からアクセスできるようにする必要がある |
Not possible before | Stripe::PaymentIntent.create({ |
2 | クライアント側で支払い詳細を収集する 返されたソースをサーバーに送信する代わりに、handleCardPayment関数を使用する。この関数は支払い情報を収集してそれをStripeに直接送信する |
StripeCheckout.configure({ |
const {paymentIntent, error} = |
3 | 支払いの作成を開始する 既存のシステムでは、最後のステップはトークン化された支払い情報を使用してサーバーに課金を作成することだ。前の手順で呼び出されたhandleCardPayment関数によって課金の作成が開始されるため、これは不要になった |
charge = Stripe::Charge.create( |
Completed in previous step |
4 | 顧客の注文を処理する StripeはPayment Intents APIシステムで非同期に料金を発生させるため、Webフックを使用して支払いがいつ正常に完了したかを判断する必要がある。 顧客の支払いが成功した後で注文の履行などの手順を実行するには、Webhookのサポートを実装し、payment_intent.succeededイベントを監視する |
課金が成功したら、履行してくれ | payment_intent.succeeded Webhookイベントを監視し、Webhookハンドラーを実行する |