Off-session Payments with Payment Intents / Payment Intents を使用したオフセッション支払

「決済」及び「開発」関連用語集

カテゴリー: documentation  閲覧数:496 配信日:2019-04-24 09:45


docs


Payments > PREPARING FOR SCA > Payment Intents > Usage > Off-session Payments
Off-session Payments with Payment Intents
Payment Intents を使用したオフセッション支払

後で支払いを作成する方法
・顧客が3Dセキュアなどの認証手順を完了できないときに、顧客の支払い情報を保存して後で支払いを作成する方法を学ぶ

顧客からの支払いを受け取るためにPaymentIntentを使用する場合
・最後のステップは支払いの確認だ
・シナリオによっては、顧客がアプリケーションを積極的に使用している間にこれが発生する
・但し、それ以外の場合は、顧客がアプリケーションを積極的に使用していないときに顧客に請求する必要がある
・これは「セッション外」支払いと呼ばれる

システムがセッション外支払いを使用する場合
・アプリケーションは、プロセスを完了するために必要な追加のステップを顧客が確実に実行するようにする責任がある
・これは、ヨーロッパで今後予定されている強力な顧客認証規則に準拠する必要があるシステムにとって重要な考慮事項だ
・3Dセキュア認証などの一部の手順は、クライアント上で実行する必要がある
・このような場合は、電子メールまたはプッシュ通知で顧客に通知し、認証を完了するためにアプリケーションに戻るよう依頼する方法を構築する必要がある

アプリケーションで定期的な支払いが必要な場合は
・Stripe BillingのSubscriptions APIを使用してくれ
・どの subscription に認証が必要かを識別し、追加の認証が必要なときにカスタマイズ可能な電子メールを購読者に送信する

Payment Intents APIを使用してセッション外の支払いを集めるには、次の手順を実行する
・1.支払い情報を収集して顧客に添付する
・2.後で、PaymentIntentを作成し、支払い方法を添付する
・3.PaymentIntentのステータスを確認する
・4.必要に応じて支払いを完了するように顧客に通知する

ステップ1:支払い情報を収集して顧客に添付する


支払い情報を収集
・Stripe.js ElementsまたはモバイルSDKを使用して 、顧客の支払い情報を安全に収集することから始める

支払い情報を入手したら
・顧客を作成して支払い方法を添付する

// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("sk_test_xxxx");

// Create a Customer:
$customer = \Stripe\Customer::create([
   'email' => 'paying.user@example.com',
]);

// Attach payment method to the customer:
StripePaymentMethod::attach("pm_123456789", [
 "customer" => $customer->id,
]);

// YOUR CODE: Save the customer ID and other info in a database for later.


ステップ2:後で、支払い方法を指定してPaymentIntentを作成する


PaymentIntentを作成するときは
・顧客のIDと以前に保存したCard、Source、またはPaymentMethodのIDの両方を指定する
・また、PaymentIntentのconfirmプロパティの値をtrueに設定する必要がある
・これにより、PaymentIntentが作成されるとすぐに確認が行われる
・すでに作成されているPaymentIntentをプログラムで確認することもできる

次のコード例は、customerとpayment_methodを使用してPaymentIntentを作成および確認する方法を示している
// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("sk_test_xxxx");

\Stripe\PaymentIntent::create([
 "amount" => 1099,
 "currency" => "jpy",
 "payment_method_types" => ["card"],
 "customer" => "{{CUSTOMER_ID}}",
 "payment_method" => "{{PAYMENT_METHOD_ID}}",
 "confirm" => true,
]);


ステップ3: PaymentIntentのステータスを確認する


この時点で、要求は402 HTTPステータスコードで失敗する可能性がある
・これは、支払いが失敗したことを意味する
・last_payment_errorプロパティを確認して再試行し、必要に応じて顧客に通知して新しい支払い情報を収集する

それ以外の場合は
・新しく作成されたPaymentIntentのstatusプロパティを調べて、支払いが正常に完了したかどうかを確認する
・以下のリストは、考えられるstatus値とその意味を説明している

requires_action :支払いを完了するためにアプリケーションに戻るように顧客に通知する
succeeded :支払いが完了し、提供された支払い方法を使用して料金が作成された。 それ以上の手順は必要ない

ステップ4:必要に応じて支払いを完了するように顧客に通知する


支払いが失敗した場合(require_payment_method)またはさらに認証が必要な場合(require_action)は
・支払いを完了するためにアプリケーションに戻るように顧客に通知する必要がある
・このような場合に顧客に送信できる支払いフォームを使用してWebページまたはモバイルアプリの画面を作成することをお勧めする

このページで、PaymentIntentのクライアントシークレットを使用可能にし、Stripe.jsまたはモバイルSDKを使用して認証を表示する

テスト中は
・このフローを強制するために、3D Secureの必須テストカード番号(4000000000003063)を使用できる
・認証不要の3D Secure not requiredカード(4242424242424242)を使用すると、フローのこの部分をスキップして手順3で完了する

自動確認
・Stripe.jsと自動確認のシステムでは、クライアントシークレットをhandleCardPayment関数へ渡す
・この関数は、認証プロセスを通じて顧客を自動的に案内し、支払いの完了を開始する
・モバイルアプリケーションの次のステップを処理する方法の詳細については、AndroidおよびiOS SDKの資料を参照することができる
async () => {
 const {paymentIntent, error} = await stripe.handleCardPayment({{CLIENT_SECRET}});
 if (error) {
   // Display error.message in your UI.
 } else {
   // The payment has succeeded. Display a success message.
 }
})();


週間人気ページランキング / 9-20 → 9-26
順位 ページタイトル抜粋 アクセス数
1 EMVCo | クレジットカード仕様(仕様) 13
2 決済用語 9
3 EMVレベル1 / EMVレベル2 / EMVCo とは? 7
3 Stripe Q1。Stripeにおける個人事業主の定義 | QA(Stripe) 7
4 既存提供機能を一部終了した決済系サービス 6
4 普通送金 | 為替取引 6
4 Payment Methods Supported by the Sources API / Sources APIでサポートされている支払い方法 6
4 Best Practices Using Sources / ソースを使用したベストプラクティス 6
4 Checkout (new) はどこで実行するかにより2種類に分かれる 6
4 決済。どういう方法でどこから支払うか | 課金 6
4 クリエイター支援プラットフォーム(課金販売できるプラットフォーム) カテゴリー 6
4 Stripe Q67.Can only apply an application_fee when the request is made on behalf of another account (using an OAuth key, the Stripe-Account header, or the destination parameter). | QA(Stripe) 6
4 資金決済に関する法律(資金決済法)とは?/(1)前払式支払手段 /(2)資金移動業 6
5 機能一覧表 / Q.アカウント複数作成 / Stripeアカウント登録 5
6 Stripe 変更履歴 | その他エントリー(Stripe) 4
6 PAY.JP アカウント登録後の自動返信メール / PAY.JP Platform / PAY.JP Platform 用語の整理 4
6 Stripeで"No such token: src"と表示されたら、最初にAPIキーを確認する | Stripe エラー(Stripe) 4
6 Stripe Q45。「Direct Charges」と「Destination Charges」の書き方の違いについて | QA(Stripe) 4
7 Stripe Q14。Customerオブジェクトをcreateする際の"source"パラメータについて | QA(Stripe) 3
7 Off-session Payments with Payment Intents / Payment Intents を使用したオフセッション支払 3
2022/9/27 1:01 更新
指定期間人気ページランキング / 2020-5-28 → 2022-9-26
順位 ページタイトル抜粋 アクセス数
1 Stripeアカウントへログインする際、モバイル端末で受信したコード入力を求められる理由は? | その他エントリー(Stripe) 1889
2 Stripe Q13。決済成功時に、「請求に紐づけられたメールアドレス」に対して、メール送信したいのですが、 | QA(Stripe) 876
3 Stripe Q16。PaymentIntentの支払いで郵便番号入力を求められる。Radar rules の ZIP code を無効にしているのに | QA(Stripe) 736
4 Stripe Q50。 Connect 「Standardアカウント」で、自身に連結された子アカウントを、ダッシュボードから削除するには? | QA(Stripe) 666
5 Stripe Q31。ダッシュボードでの「支払い作成」の見方について | QA(Stripe) 610
6 EMVCo | クレジットカード仕様(仕様) 603
7 クレジットカード決済 | 課金 483
8 Stripe Q1。Stripeにおける個人事業主の定義 | QA(Stripe) 431
9 Stripeで"No such token: src"と表示されたら、最初にAPIキーを確認する | Stripe エラー(Stripe) 426
10 「Gumroad」は、決済サービス「PayPal」を利用したオンラインコンテンツ販売サービス | デジタルコンテンツ販売可能なサービス(課金販売できるプラットフォーム) 391
11 Stripe Payments > PREPARING FOR SCA > Payment Intents | documentation(Stripe) 352
12 決済用語 348
13 プリペイドカード | カード 325
14 documentation(Stripe) カテゴリー 322
15 Stripe webhook 配信の問題 | その他エントリー(Stripe) 318
16 ファンティア | クリエイター支援プラットフォーム(課金販売できるプラットフォーム) 317
17 Payment Intents Usage Guide / Payment Intents 使用ガイド 313
17 Stripe エラー(Stripe) カテゴリー 313
17 Stripe。Stripeアカウントを持っていない人でもクレジットカード決済が出来る | その他エントリー(Stripe) 313
18 PaymentIntentで支払を実装する場合の選択肢 /「Payment Intents API」使用によるカードの支払確認方法は2種類 / PaymentMethodオブジェクトは歴史的経緯により3種類ある 307
2022/9/27 1:01 更新