新 Stripe 内の選択肢

Stripeその他エントリー

目次一覧

 状態:-  閲覧数:619  投稿日:2019-04-13  更新日:2019-04-27  
初めに / 支払いは「回数」や「タイミング」の違いだけでこんなにたくさんある / PaymentIntentによる「1回限りの支払」は2種類

PaymentIntentで支払を実装する場合の選択肢 /「Payment Intents API」使用によるカードの支払確認方法は2種類 / PaymentMethodオブジェクトは歴史的経緯により3種類ある

Checkout (new) はどこで実行するかにより2種類に分かれる

初めに / 支払いは「回数」や「タイミング」の違いだけでこんなにたくさんある / PaymentIntentによる「1回限りの支払」は2種類

 閲覧数:217 投稿日:2019-04-13 更新日:2019-04-26 

初めに


このページでは
・「SCA(Strong Consumer Authentication)に対応した実装」における選択肢の違いを提示している
・旧仕様も含んだ「選択肢の一覧」については「旧 Stripe 内の選択肢」を参考にしてくれ

※違いを一目で確認することが目的なので、詳細解説を行っていない

支払いは「回数」や「タイミング」の違いだけでこんなにたくさんある


1回限りの支払
・1回限りの支払いであれば、通常Customerオブジェクトを作成する必要はない
※(本来は不要だが、)Customerオブジェクトを作成して、1回限りの支払いを実行することも出来る

結果的に「1回限りの支払い」
・今後の支払のため、購入時にカード情報を登録したが、結局1回しか購入しなかったケース
※カード情報を登録するためには、Customerオブジェクト作成が必要

複数回の支払
・不定期タイミングで何回か購入するケース
・「1回限りの支払」ではないし、「定期支払い」でもない
・対応としては、(カード情報を登録しない)1回限りの支払を繰り返しても良いし、不定期タイミングで「登録したカード情報」から支払いを選択しても良い

定期支払い(継続的に決まった周期で支払いが発生する)

PaymentIntentによる「1回限りの支払」は2種類


A.Customerオブジェクトを作成せずに、1回限りの支払いを実行
・推奨
※1回限りの支払いであれば、Customerオブジェクトを作成する必要はない

B.Customerオブジェクトを作成して、1回限りの支払いを実行
・本来は不要だが、Customerオブジェクトを作成して、1回限りの支払いを実行できる
・考えられるケースとしては、結果的に「1回限りの支払い」となるケースなど

PaymentIntentで支払を実装する場合の選択肢 /「Payment Intents API」使用によるカードの支払確認方法は2種類 / PaymentMethodオブジェクトは歴史的経緯により3種類ある

 閲覧数:1,435 投稿日:2019-04-26 更新日:2019-04-27 

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


A.Customerオブジェクトを作成せずに、支払いを実行
・「1回限りの支払」では推奨される

B.Customerオブジェクトを作成して、PaymentIntentオブジェクトに関連付け、支払いを実行
・ダッシュボードで該当顧客のカード欄に、カード情報は表示されない
・「1回限りの支払」でも使用可
・https://dashboard.stripe.com/test/customers/cus_ExCvsa7yW5YEZ3

C.Customerオブジェクトを作成して、PaymentIntentオブジェクトに関連付け、支払い方法も関連付け、支払いを実行
・PaymentIntentの支払い方法(sourceまたはpayment_method)を関連する顧客に保存する
・ダッシュボードで該当顧客のカード欄に、カード情報が表示される
→ Customerオブジェクトの「sourcesプロパティ」内にある「dataプロパティ」内に、Cardオブジェクトがリスト構造化されて配置される
・「1回限りの支払」でも使用可
・https://dashboard.stripe.com/test/customers/cus_ExBtKF9cWBjqFV

「Payment Intents API」使用によるカードの支払確認方法は2種類


「Payment Intents API」を使用してカードの支払いを受け取る方法は、大きく2種類に分かれる

自動確認フロー
・支払いの収集に必要な操作を自動的に処理する
・Payment Intents API を使用するための最も早い方法だ
・クライアントでの支払いを確認し、支払いが成功したときにWebフックを使用して通知する
・カードの3Dセキュア認証など、一部の支払い方法には非同期フローがあるため、自動確認システムでは、支払い後ロジックを処理するためにWebフックを使用する必要がある

手動確認フロー
・サーバーでの支払いが確認され、支払いが成功した直後にサーバーで支払いを実行できる

比較一覧表
- 自動確認フロー 手動確認フロー
支払いを確認する場所 クライアント サーバ
支払いが成功した後の処理 非同期 同期
Webhook 使用 未使用
この方式が推奨されるケース Webhookに慣れている場合 既存のカードとCharges API システム から移行する場合

PaymentMethodオブジェクトは歴史的経緯により3種類ある


PaymentMethod オブジェクトとして作成した内容
・idプロパティの値が'pm_xxxx'
※下記はただ作成しただけのPaymentMethod オブジェクト。customerに関連付けていないため意味がない
Stripe\PaymentMethod Object
(
   [id] => pm_xxxx
   [object] => payment_method
   [billing_details] => Stripe\StripeObject Object
       (
           [address] => Stripe\StripeObject Object
               (
                   [city] =>
                   [country] =>
                   [line1] =>
                   [line2] =>
                   [postal_code] =>
                   [state] =>
               )

           [email] =>
           [name] =>
           [phone] =>
       )

   [card] => Stripe\StripeObject Object
       (
           [brand] => visa
           [checks] => Stripe\StripeObject Object
               (
                   [address_line1_check] =>
                   [address_postal_code_check] =>
                   [cvc_check] => unchecked
               )

           [country] => JP
           [exp_month] => 4
           [exp_year] => 2020
           [fingerprint] => sNhI3DvKnpKlOtqH
           [funding] => credit
           [generated_from] =>
           [last4] => 0003
           [three_d_secure_usage] => Stripe\StripeObject Object
               (
                   [supported] => 1
               )

           [wallet] =>
       )

   [created] => 1556325087
   [customer] =>
   [livemode] =>
   [metadata] => Stripe\StripeObject Object
       (
       )

   [type] => card
)


PaymentMethod APIを介して取得したカード
・idプロパティの値が'card_xxxx'
Stripe\PaymentMethod Object
(
   [id] => card_xxxx
   [object] => payment_method
   [billing_details] => Stripe\StripeObject Object
       (
           [address] => Stripe\StripeObject Object
               (
                   [city] =>
                   [country] =>
                   [line1] =>
                   [line2] =>
                   [postal_code] =>
                   [state] =>
               )

           [email] =>
           [name] =>
           [phone] =>
       )

   [card] => Stripe\StripeObject Object
       (
           [brand] => mastercard
           [checks] => Stripe\StripeObject Object
               (
                   [address_line1_check] =>
                   [address_postal_code_check] =>
                   [cvc_check] =>
               )

           [country] => US
           [exp_month] => 3
           [exp_year] => 2020
           [fingerprint] => nVED1M937tLxoMHR
           [funding] => credit
           [generated_from] =>
           [last4] => 4444
           [three_d_secure_usage] => Stripe\StripeObject Object
               (
                   [supported] => 1
               )

           [wallet] =>
       )

   [created] => 1552873331
   [customer] => cus_EhrAhwK7W4OB41
   [livemode] =>
   [metadata] => Stripe\StripeObject Object
       (
       )

   [type] => card
)


・idプロパティの値が'src_xxxx'
Stripe\PaymentMethod Object
(
   [id] => src_xxxx
   [object] => payment_method
   [billing_details] => Stripe\StripeObject Object
       (
           [address] => Stripe\StripeObject Object
               (
                   [city] =>
                   [country] =>
                   [line1] =>
                   [line2] =>
                   [postal_code] => 22222
                   [state] =>
               )

           [email] =>
           [name] =>
           [phone] =>
       )

   [card] => Stripe\StripeObject Object
       (
           [brand] => visa
           [checks] => Stripe\StripeObject Object
               (
                   [address_line1_check] =>
                   [address_postal_code_check] => pass
                   [cvc_check] => pass
               )

           [country] => US
           [exp_month] => 4
           [exp_year] => 2024
           [fingerprint] => LMqocVHP8RNDkMLj
           [funding] => credit
           [generated_from] =>
           [last4] => 4242
           [three_d_secure_usage] => Stripe\StripeObject Object
               (
                   [supported] => 1
               )

           [wallet] =>
       )

   [created] => 1552701396
   [customer] => cus_EhrAhwK7W4OB41
   [livemode] =>
   [metadata] => Stripe\StripeObject Object
       (
       )

   [type] => card
)


Checkout (new) はどこで実行するかにより2種類に分かれる

 閲覧数:246 投稿日:2019-04-27 更新日:2019-04-27 

Checkout (new) はどこで実行するかにより2種類に分かれる


Checkout (new)の方法は、大きく2種類に分かれる
・client
・server

比較一覧表
- client server
一言で言うと? Stripe.js で処理する Checkout Sessions API で処理する
「https://js.stripe.com/v3」読込が必要か ×
課金対象や金額をどこで設定するか Stripeダッシュボードで生成する プログラムで生成する
「支払い」を「既存の顧客」に関連付けすることが出来るか? ×
支払の「作成」と「完了」を分離できるか? ×
支払いが成功しました
4月12日 午後1:37
支払いが作成されました
4月12日 午後1:37

支払いが作成されました
4月13日 午前9:15
支払完了判定 Webhook使用。「checkout.session.completed」イベントを監視 Webhook使用。「checkout.session.completed」イベントを監視
Connectサポート ×
カスタマイズ性 低。決済画面はStripe.jsに依存 高。決済画面を自前で構築する必要がある
2019/4/13 時点の バージョン指定書式 betas: ['checkout_beta_4'] stripe_version' => '2018-11-08; checkout_sessions_beta=v1'



新 Stripe 学習の流れを体系化

Stripe webhook 配信の問題

コメント投稿(ログインが必要)



週間人気ページランキング / 2-2 → 2-8
順位 ページタイトル抜粋 アクセス数
1 EMVレベル1 / EMVレベル2 / EMVCo とは? 19
2 Stripe Q1。Stripeにおける個人事業主の定義 | QA(Stripe) 10
3 PAY.JP | 「支払」機能を有する決済系サービス(決済サービス) 8
3 ICクレジットカード | クレジットカード仕様(仕様) 8
4 PayPal.me | 「支払、送金、出金」機能を有する決済系サービス(決済サービス) 7
5 決済用語 6
6 Stripeアカウントへログインする際、モバイル端末で受信したコード入力を求められる理由は? | その他エントリー(Stripe) 5
7 Gumroadとは?/ 特徴 / Link 4
7 Stripe Q43。payouts スケジュールについて | QA(Stripe) 4
7 Stripe Q15。PaymentIntent でエラー。カード番号に不備があります。 | QA(Stripe) 4
8 「支払」と「送金」の違い | 違い 3
8 Stripe エラー(Stripe) カテゴリー 3
8 Stripe公式サイト上で「クレジット決済のみの画面遷移」を確認してみる | その他エントリー(Stripe) 3
8 ファンティア | クリエイター支援プラットフォーム(課金販売できるプラットフォーム) 3
9 「支払」機能を有する決済系サービス比較 2
9 Cardオブジェクト / \Stripe\Chargeオブジェクト / \Stripe\Productオブジェクト 2
9 その他エントリー(Stripe) カテゴリー 2
9 プリペイドカードとは?/ 現金として出金できるの?/ プリペイドカードの具体例 2
9 Stripe Q36。What is the difference between “stripe.handleCardPayment (clientSecret)” and “stripe.retrievePaymentIntent (clientSecret)”? | QA(Stripe) 2
9 Stripe Q18。PHP使用する場合、オブジェクト形式で配列形式でもアクセスできる | QA(Stripe) 2
2023/2/9 1:01 更新