カテゴリー:
QA
閲覧数:347 配信日:2019-07-26 11:06
Q48
「Checkout\Session - server」「Charge」「PaymentIntent」の使い分け方
2019/7/26
Stripe Connect の「Standardアカウント」で「Direct Charge」を検討しています。
「Checkout\Session::create - server」で実装しようと思っているのですが、
「Charge::create」と「PaymentIntent::create」との違いが良く分かりません。
「Checkout\Session」を選択する場合は
・Stripe が用意した決済入力画面を使用したい時?
「Charge」を選択する場合は
・Stripe が用意した決済入力画面を使用したくない場合、かつ、1回限りの支払いの場合?
「PaymentIntent」を選択する場合は
・Stripe が用意した決済入力画面を使用したくない場合、かつ、1回限りの支払いの場合ではない場合?
・「PaymentIntent」は1回限りの支払いにも使用できるが、その用途ではオーバースペックという感じですか?
ところが「https://stripe.com/docs/payments/checkout」階層を見ると、CheckoutはPayment内の階層となっているため、上記考え方は当てはまらない??
「Checkout\Session」「Charge」「PaymentIntent」の使い分け方を教えてください
「Checkout\Session::create - server」で実装しようと思っているのですが、
「Charge::create」と「PaymentIntent::create」との違いが良く分かりません。
「Checkout\Session」を選択する場合は
・Stripe が用意した決済入力画面を使用したい時?
「Charge」を選択する場合は
・Stripe が用意した決済入力画面を使用したくない場合、かつ、1回限りの支払いの場合?
「PaymentIntent」を選択する場合は
・Stripe が用意した決済入力画面を使用したくない場合、かつ、1回限りの支払いの場合ではない場合?
・「PaymentIntent」は1回限りの支払いにも使用できるが、その用途ではオーバースペックという感じですか?
ところが「https://stripe.com/docs/payments/checkout」階層を見ると、CheckoutはPayment内の階層となっているため、上記考え方は当てはまらない??
「Checkout\Session」「Charge」「PaymentIntent」の使い分け方を教えてください
A
Checkout Serverをご利用いただく場合、決済は原則として自動的にpayment intentが活用されます。(payment intentsは単発の決済や定期支払いに使用できます)
これに対してchargeは単発の決済のみを示し、Elements + Stripe.jsや旧Checkoutを通して取得した決済情報のtokenで決済を行うことができるリクエストでもありますが、payment intentsの使用時は、単発の決済や定期支払いに関わらずpayment intentsで決済を行う結果として自動でchargeが生成されます。
これを踏まえ、下記のとおりいただいているご質問について順番にお答え致します。
「Checkout\Session」を選択する場合は
・Stripe が用意した決済入力画面を使用したい時?
ご認識のとおりです。Checkoutを活用することでStripe仕様の決済ページを使用できます。・Stripe が用意した決済入力画面を使用したい時?
「Charge」を選択する場合は
・Stripe が用意した決済入力画面を使用したくない場合、かつ、1回限りの支払いの場合?
ご認識のとおり、新Checkout(Server CheckoutまたはClient Checkout)ではcreate.chargeは用いませんが、Elements+Stripe.jsや旧Checkout(レガシーバージョンとも言います)から取得した決済情報で単発の決済を行う場合、chargeが基本となります。・Stripe が用意した決済入力画面を使用したくない場合、かつ、1回限りの支払いの場合?
create.charge:
https://stripe.com/docs/api/charges/create
決済ページにリダイレクトせず、ポップアップ決済画面が表示される旧Checkoutについてはコチラ:
https://stripe.com/docs/checkout
決済フォームをカスタマイズ可能なElements+Stripe.jsについてはコチラ:
https://stripe.com/docs/stripe-js
「PaymentIntent」を選択する場合は
・Stripe が用意した決済入力画面を使用したくない場合、かつ、1回限りの支払いの場合ではない場合?
・「PaymentIntent」は1回限りの支払いにも使用できるが、その用途ではオーバースペックという感じですか?
新Checkoutでpayment intentが自動で生成されるのに対し、create.chargeと同じように、単発の決済のために独立してcreate.payment.intentをすることも可能です。・Stripe が用意した決済入力画面を使用したくない場合、かつ、1回限りの支払いの場合ではない場合?
・「PaymentIntent」は1回限りの支払いにも使用できるが、その用途ではオーバースペックという感じですか?
create.payment_intents:
https://stripe.com/docs/api/payment_intents/create
ところが「https://stripe.com/docs/payments/checkout」階層を見ると、CheckoutはPayment内の階層となっているため、上記考え方は当てはまらない??
ご覧いただいている弊社の開発ドキュメントの、「Payments」はAPI上の具体的なオブジェクトを指すものではなく、「決済にまつわる」項目であるとご理解いただけましたらと存じます。