目次一覧
状態:-
閲覧数:1,073
投稿日:2019-08-26
更新日:2019-09-03
Q70 / A / A5
Q70 / A / A5
Q70
「checkout.session.completed イベント」と「charge.succeeded イベント」と「application_fee.created イベント」の違いについて
2019/8/26
< checkout.session.completed イベント >
Stripe sends the checkout.session.completed event when a Checkout payment is successful.
https://stripe.com/docs/payments/checkout/fulfillment
< charge.succeeded イベント>
when a charge succeeds, we create a charge.succeeded
https://stripe.com/docs/api/events
< application_fee.created イベント>
ドキュメントの場所が分かりませんでした
--------------------------------------------
例えば下記コードの場合、
・Q1.charge.succeeded イベントは発生しますか?
・Q2.chargeがよく分かっていないのですが、subscriptionでなければ全てchargeという認識で合っていますか? それとも明示的にChargeオブジェクトを作成しなければ、chargeイベントは発生しない?
・Q3.application_fee.created イベントが発生するのは、checkout.session.completed イベントと同じタイミングですか? それともcreateなので、checkout.sessionがcreateしたタイミングと同じですか?
・Q4.application_fee.created イベントは、checkout.sessionの支払い成功とは無関係ですか?
・Q5.checkout.sessionに関して、completedイベントしか用意されていないのはなぜですか? createがないのはなぜ? 作成から完了までほとんどタイムラグなく終わるからですか?
--------------------------------------------
< PHPコード抜粋 >
Stripe sends the checkout.session.completed event when a Checkout payment is successful.
https://stripe.com/docs/payments/checkout/fulfillment
< charge.succeeded イベント>
when a charge succeeds, we create a charge.succeeded
https://stripe.com/docs/api/events
< application_fee.created イベント>
ドキュメントの場所が分かりませんでした
--------------------------------------------
例えば下記コードの場合、
・Q1.charge.succeeded イベントは発生しますか?
・Q2.chargeがよく分かっていないのですが、subscriptionでなければ全てchargeという認識で合っていますか? それとも明示的にChargeオブジェクトを作成しなければ、chargeイベントは発生しない?
・Q3.application_fee.created イベントが発生するのは、checkout.session.completed イベントと同じタイミングですか? それともcreateなので、checkout.sessionがcreateしたタイミングと同じですか?
・Q4.application_fee.created イベントは、checkout.sessionの支払い成功とは無関係ですか?
・Q5.checkout.sessionに関して、completedイベントしか用意されていないのはなぜですか? createがないのはなぜ? 作成から完了までほとんどタイムラグなく終わるからですか?
--------------------------------------------
< PHPコード抜粋 >
\Stripe\Checkout\Session::create([
'payment_method_types' => ['card'],
'line_items' => [[
'name' => "デモ",
'amount' => 200,
]],
'payment_intent_data' => [
'application_fee_amount' => 20,
],
], [
'stripe_account' => 'acct_xxxx', //子
]);
A
Q1.charge.succeeded イベントは発生しますか?
該当の子アカウント上でcharge.succeeded イベントが発生します。Q2.chargeがよく分かっていないのですが、subscriptionでなければ全てchargeという認識で合っていますか? それとも明示的にChargeオブジェクトを作成しなければ、chargeイベントは発生しない?
Chargeオブジェクトが作成されますと、Chargeに関するイベントが発生します。ご存知かと思いますが、Checkout sessionによる決済を行われた際に、PaymentIntentが作成されます。お客さまがお支払いしますと、該当のPaymentIntentがconfirmされ、chargeが行われます。
定期支払いにCheckout sessionを作成する場合(payment_intent_dataではなくsubscription_dataが利用される場合)におきましても、初期決済が行われましたらchargeが作成されます。
・Q3.application_fee.created イベントが発生するのは、checkout.session.completed イベントと同じタイミングですか? それともcreateなので、checkout.sessionがcreateしたタイミングと同じですか?
application_fee.createdイベントはお客さまがお支払いして、決済が完了した際に発生します。そのため、application_fee.created イベントはcheckout.session.completed イベントと同じタイミングに発生します。application_fee.createdイベントにつきましてはこちらでご参照いただけます。
https://stripe.com/docs/api/events/types#event_types-application_fee.created
・Q4.application_fee.created イベントは、checkout.sessionの支払い成功とは無関係ですか?
application_fee.created はcheckout.sessionによるchargeが成功し、その決済に適用されたプラットフォーム手数料を徴収する際に発生するイベントとなります。A5
・Q5.checkout.sessionに関して、completedイベントしか用意されていないのはなぜですか? createがないのはなぜ?
ご認識の通り、checkout.sessionに関してcompletedイベントのみが用意されております。'checkout.session.completed' は決済を完了させることをトリガーするために用意されておりますが、 'checkout.session.created' に関しては、 POST /v1/checkout/sessionsがコールされた際に 'payment_intent.created'または 'setup_intent.created' が発生するため用意されておりません。
作成から完了までほとんどタイムラグなく終わるからですか?
Checkout sessionが作成した後に必ずしも 'checkout.session.completed'イベントが即時に発生するとは限りません。Checkout sessionオブジェクトは POST /v1/checkout/sessionsへのAPI call が行われた時点に作成されます。その後、顧客がCheckoutページにアクセスし、カード情報を入力して決済(またはカード情報の保存)を行っていただきます。そのため、 'checkout.session.completed' が 'payment_intent.created' または 'setup_intent.created' イベントが発生した後にすぐ発生しない場合がございます。Stripe Q69.Stripe ダッシュボードのバージョン確認及びアップデートについて
Stripe Q71.CheckoutSessionで、success_urlに指定したURLでzipダウンロードすると、success_urlへ遷移しない