Saving Payment Methods / 支払い方法を保存する

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

カテゴリー: documentation  閲覧数:692 配信日:2019-04-25 09:17


docs


Payments > PREPARING FOR SCA > Payment Intents > Usage > Saving Payment Methods
Saving Payment Methods
支払い方法を保存する
・あとで顧客に請求できるようにPayment Methods APIを使用してStripeアカウントに支払い方法の詳細を保存する方法を学ぼう

Stripeを使用すると
・後で使用するために支払い情報を簡単に保存できるようにするCustomerオブジェクトを作成できる
・顧客オブジェクトを使用して、 subscriptions またはセッション外支払いを作成できる
・以前に収集された支払い情報を使用して、顧客の直接の関与なしに支払いが発生した場合、その支払いはセッション外と説明される

顧客の支払い情報を収集すると
・PaymentMethodが作成される
・このPaymentMethodは、最初に顧客に添付された場合を除き、1回しか使用できない

支払い中にクライアント側でPaymentMethodを保存する


PaymentMethodを顧客に保存
・支払い処理中に、save_payment_methodフラグを使用して、PaymentMethodをPaymentIntentに関連付けられた顧客に保存できる
・これは、チェックアウトプロセス中に顧客の支払い情報を保存するかどうかを選択するオプションを顧客に提供したい場合に役立つ
・支払いが成功したかどうかにかかわらず、PaymentMethodは顧客に添付される

PaymentIntentデモ10-1、10-2、10-3
・「関連付けられた顧客」という点が重要
・「関連付けられていない顧客」へ対して実行すると「message: "A valid `customer` must be provided when `save_payment_method=true`."」エラーが発生する
const stripe = Stripe('pk_test_xxxx');
const {paymentIntent, error} = await stripe.handleCardPayment(
 '{{PAYMENT_INTENT_CLIENT_SECRET}}',
 cardElement,
 {
   save_payment_method: true,
 }
);


save_payment_methodパラメータ
・指定された時点で現在のPaymentMethodとCustomerにのみ適用される
・顧客が支払い方法を変更した場合は、新しい支払い方法を保存するためにsave_payment_methodをもう一度渡す必要がある

PaymentIntentで支払を実装する場合の選択肢

サーバー側でPaymentMethodを保存する


支払い情報は顧客に関連付けることが出来る
・収集された支払い情報は保存され、後で再利用するために顧客に関連付けることが出来る
・PaymentIntentを作成するときに、save_payment_methodの値をtrueに設定し、希望の顧客とpayment_methodを指定する

次の例は、顧客の支払い情報を保存するPaymentIntentを作成する方法を示している
・PaymentIntentデモ11-1
・Customerオブジェクト作成。PaymentMethodオブジェクト作成。PaymentIntentオブジェクト作成する際、両者を関連付け。支払いは実行していない
・PaymentMethodをサーバで作成しているため、使用場面は限られると思われ
// 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',
]);

$paymentMethod = \Stripe\PaymentMethod::create([
 'type' => 'card',
 'card' => [
   'number' => '4000003920000003',
   'exp_month' => 4,
   'exp_year' => 2020,
   'cvc' => '314'
 ]
]);

$paymentintent = \Stripe\PaymentIntent::create([
 "amount" => 1099,
 "currency" => "jpy",
 "payment_method_types" => ["card"],
 "save_payment_method" => true,
 "customer" => $customer->id,
 "payment_method" => $paymentMethod['id'],
]);


支払いの外でPaymentMethodを保存する


PaymentIntentのコンテキスト外で(例えばcreatePaymentMethodを使用して )支払い情報を収集している場合は
・サーバーからPaymentMethodを顧客に添付できる
// 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");

$payment_method = StripePaymentMethod::retrieve('{{PAYMENT_METHOD_ID}}');
$payment_method->attach(['customer' => '{{CUSTOMER_ID}}']);


・後でこの顧客のPaymentIntentを作成するときに、顧客とPaymentMethodの両方を指定する
// 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");

StripePaymentIntent::create([
 "payment_method_types" => ["card"],
 "amount" => 1099,
 "currency" => "jpy",
 "customer" => "{{CUSTOMER_ID}}",
 "payment_method" => "{{PAYMENT_METHOD_ID}}",
]);


ストライプは、保存時にカード情報を検証する
・このプロセスの結果として、顧客は彼らの明細書に1ドルの一時的な承認を見るかもしれない
・これは、将来の請求が成功することを保証するものではない(例えば、カードに十分な資金がなくなった、紛失または盗難にあった、またはアカウントが閉鎖された場合など)
・このプロセスでは、実行された可能性がある、レーダーによる従来の銀行小切手(CVCや郵便番号など)を含むすべての小切手の結果も更新される

保存した支払い方法にアクセスする


顧客の以前に保存されたCards、Sources、およびPaymentMethodsを表示するには
・customerオブジェクトのsourcesプロパティを読み取る代わりに支払い方法を一覧表示する
・顧客に追加された新しいPaymentMethodsが顧客オブジェクトのsourcesプロパティに重複しないため、これが必要だ

BEFORE
customer->sources


AFTER
\Stripe\PaymentMethod::all(['customer' => '{{CUSTOMER_ID}}', 'type' => 'card']);


関連デモ
・PaymentMethod デモ「all-1」「all-2」「retrieve-1」
・Customer デモ 「src-6」「retrieve-1」
「PaymentMethodオブジェクト」と「Customerオブジェクト」の関係

週間人気ページランキング / 4-13 → 4-19
順位 ページタイトル抜粋 アクセス数
1 YouTube | 動画サービス(課金販売できるプラットフォーム) 8
2 Saving Payment Methods / 支払い方法を保存する 3
2 支払い 3
2 「払い戻し」と「チャージバック」の違い | 違い 3
2 EMVCo | クレジットカード仕様(仕様) 3
2 EMVレベル1 / EMVレベル2 / EMVCo とは? 3
3 IBAN | 海外送金(送金) 2
3 プリペイドカード | カード 2
3 ログイン 2
3 振込 | 送金 2
3 Stripe Q73.CheckoutのSessionオブジェクトをcreateする際、'payment_intent_data'内の'metadata'として渡したデータを、webhookで受け取る件について | QA(Stripe) 2
3 Stripe Q55.Checkout\Session::createする際の、'client_reference_id'パラメータと'payment_intent_data.metadata'パラメータの違いについて | QA(Stripe) 2
4 「支払」と「送金」の違い | 違い 1
4 Stripe Q13。決済成功時に、「請求に紐づけられたメールアドレス」に対して、メール送信したいのですが、 | QA(Stripe) 1
4 Stripe Payments > Quickstart / クイックスタート | documentation(Stripe) 1
4 資金決済に関する法律(資金決済法)とは?/(1)前払式支払手段 /(2)資金移動業 1
4 Visa Global Security Summits | セキュリティ 1
4 Stripe Q1。Stripeにおける個人事業主の定義 | QA(Stripe) 1
4 Stripeで"No such token: src"と表示されたら、最初にAPIキーを確認する | Stripe エラー(Stripe) 1
4 SHOWROOM | ライブ配信サービス(課金販売できるプラットフォーム) 1
2024/4/20 1:01 更新
指定期間人気ページランキング / 2020-5-28 → 2024-4-19
順位 ページタイトル抜粋 アクセス数
1 Stripeアカウントへログインする際、モバイル端末で受信したコード入力を求められる理由は? | その他エントリー(Stripe) 2009
2 EMVCo | クレジットカード仕様(仕様) 1263
3 Stripe Q13。決済成功時に、「請求に紐づけられたメールアドレス」に対して、メール送信したいのですが、 | QA(Stripe) 942
4 Stripe Q16。PaymentIntentの支払いで郵便番号入力を求められる。Radar rules の ZIP code を無効にしているのに | QA(Stripe) 899
5 Twitch | ゲーム実況配信サービス(課金販売できるプラットフォーム) 876
5 クレジットカード決済 | 課金 876
6 決済用語 855
7 Stripe Q50。 Connect 「Standardアカウント」で、自身に連結された子アカウントを、ダッシュボードから削除するには? | QA(Stripe) 824
8 Omise | 「支払」機能を有する決済系サービス(決済サービス) 767
9 Stripe Q1。Stripeにおける個人事業主の定義 | QA(Stripe) 761
10 Stripe Q31。ダッシュボードでの「支払い作成」の見方について | QA(Stripe) 738
10 pixivFANBOX | クリエイター支援プラットフォーム(課金販売できるプラットフォーム) 738
11 EMVレベル1 / EMVレベル2 / EMVCo とは? 722
12 YouTube | 動画サービス(課金販売できるプラットフォーム) 665
13 プリペイドカード | カード 643
14 EPUB | ファイルフォーマット(電子書籍) 587
15 サブスクリプション | 課金 563
16 Stripeで"No such token: src"と表示されたら、最初にAPIキーを確認する | Stripe エラー(Stripe) 544
17 Stripe Q74.「お客様のビジネスの詳細」とは何ですか? | Stripe 541
18 ファンティア | クリエイター支援プラットフォーム(課金販売できるプラットフォーム) 482
2024/4/20 1:01 更新