Stripe Q53.Checkout\Sessionの1回限りの支払いで、決済完了したユーザにだけページ表示させたい

StripeQA

目次一覧

 状態:-  閲覧数:1,190  投稿日:2019-08-03  更新日:2019-08-12  
Q53 / A

Q53-2.追加質問 / A-2 / A-2-1


Q53 / A

 閲覧数:196 投稿日:2019-08-03 更新日:2019-08-09 

Q53


Checkout\Sessionの1回限りの支払いで、決済完了したユーザにだけページ表示させたい
2019/8/3
Q1.'success_url'へ遷移する前に変数を渡し、その変数を'success_url'で受け取ることができますか?


Q2.決済完了したユーザにだけ確実に指定ページ表示させるためには、WEBHOOK ENDPOINT を使用するべきですか?


Q3.「checkout.session.completed」イベントを受け取るWebhookのURLを複数登録した場合について
「checkout.session.completed」イベントが発生したら、同設定の全URLで処理が実行されますか?


Q4.特定のリクエスト先からの「checkout.session.completed」イベントの場合は、という紐づけは出来ない?
下記で動的にエンドポイント作成できるようですが、例えば、特定のリクエスト先からの「checkout.session.completed」イベントの場合だけ特定のWebhookのURLへアクセスすることは出来ますか?
https://stripe.com/docs/api/webhook_endpoints/object


Q5.WebhookのURL登録を、「プログラムで設定する場合」と「ダッシュボードで設定する場合」について
・何か違いはありますか?
・方法が違うだけで結果は同じ?


Q6.https://dashboard.stripe.com/test/webhooks
下記は何が異なりますか?
・アカウントからイベントを受信するエンドポイント
・Connect アプリケーションからイベントを受信するエンドポイント
・Connect決済かどうかで、入力場所が異なるということですか?
・パラメータ('stripe_account')を送信すれば、Connect決済という判断?

<参考 使用予定のコードのイメージ。PHP+JavaScript>
\Stripe\Stripe::setApiKey("sk_test_xxxx"); //プラットフォーム提供である親アカウントのシークレットキー
$checkoutSession = \Stripe\Checkout\Session::create([
 'payment_method_types' => ['card'],
 'line_items' => [[
   'name' => "デモ",
   'amount' => 200,
   'currency' => 'jpy',
   'quantity' => 10,
 ]],
 'payment_intent_data' => [
   'application_fee_amount' => 200,
 ],
 'success_url' => 'https://xxxx/thanks.php',
 'cancel_url' => 'https://xxxx/cancel.php',
], [
 'stripe_account' => 'acct_xxxx', //販売者である子アカウントの「Accountオブジェクトのidプロパティ値」を入力
]);
?>
<button id="checkout-button" role="link">Pay</button>
<script src="https://js.stripe.com/v3"></script>
<script>
const stripe = Stripe('pk_test_xxxx', { //プラットフォーム提供である親アカウントの公開可能キー
 stripeAccount: 'acct_xxxx', //販売者である子アカウントの「Accountオブジェクトのidプロパティ値」を入力
});
const checkoutButton = document.getElementById('checkout-button');
checkoutButton.addEventListener('click', function () {
 stripe.redirectToCheckout({
   sessionId: '<?php echo $checkoutSession->id; ?>'
 })
 .then(function (result) {
 });
});
</script>



Q7.決済完了したユーザにだけページ表示したい
・WebhookのURLへ直接アクセスされたくないのですが、
if ($event->type == 'checkout.session.completed') {
だけではダメで、下記も必要ですか?
$endpoint_secret


Q8.PHPのWebhookエンドポイント
$sig_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];
・上記箇所で「Undefined index: HTTP_STRIPE_SIGNATURE 」エラーが表示されるのですが、気にする必要はありますか?
・何らかのサーバの設定がもし必要ならばと思い質問しました
・動作自体は期待した通り動作しています


Q9.Webhookエンドポイントに対するイベント指定について
・「Customerとして存在しているならば」というイベント指定はできますか?
・イベントなので、Customer「作成時」や「更新時」といった指定しか用意されていない?

A


Q1.'success_url'へ遷移する前に変数を渡し、その変数を'success_url'で受け取ることができますか?
変数を'success_url'で受け取ることは可能でございます。

“success_url”については、下記にも記載がございます:https://stripe.com/docs/payments/checkout/fulfillment#webhooks

Q2.決済完了したユーザにだけ確実に指定ページ表示させるためには、WEBHOOK ENDPOINT を使用するべきですか?
Stripeでは、”checkout.session.completed”のイベントが送信された(ステータス:2xx)後に、'success_url'へ遷移をさせます。
また、もし上記イベントが10秒以内に送信されなかった際には、自動的に'success_url'へ遷移されます。

そのため、一つの方法として、”checkout.session.completed”をWebhookイベントとしてご設定いただくことをご検討いただけるかと存じます。

Q3.「checkout.session.completed」イベントを受け取るWebhookのURLを複数登録した場合について 「checkout.session.completed」イベントが発生したら、同設定の全URLで処理が実行されますか?
はい、ご認識の通りでございます。

Q4.特定のリクエスト先からの「checkout.session.completed」イベントの場合は、という紐づけは出来ない?
ご存知かとは存じますが、Webhookのご設定をされることで、アカウント上で発生するイベントについて通知を受け取ることが可能です。
また、作成されたイベントが発生しますと、該当のリクエスト先に関してのイベントが送信されます。

Q5.WebhookのURL登録を、「プログラムで設定する場合」と「ダッシュボードで設定する場合」について
ご設定の結果に違いはございませんが、プログラムでWebhookの設定を行う方法でのみ、Connectアカウントでのイベントを受け取るかをご設定いただけます。
Connectアカウントでのイベントを受信されたい場合には、”connect”というパラメータをtrueにしていただければと存じます。

Webhookの設定方法の違いについては、下記に記載がございます:https://stripe.com/docs/webhooks/setup#configure-webhook-settings

Q6.https://dashboard.stripe.com/test/webhooks
下記は何が異なりますか?
・アカウントからイベントを受信するエンドポイント
・Connect アプリケーションからイベントを受信するエンドポイント
・Connect決済かどうかで、入力場所が異なるということですか?
・パラメータ('stripe_account')を送信すれば、Connect決済という判断?
Q5でご案内しました通り、Connectアカウントからのイベントを受信されるには、プログラム(API)にてご設定いただきますようお願い申し上げます。
また、Connectアカウントからのイベントを受信された際には、”account”オブジェクトにて、該当のConnectアカウントIDを取得していただけます。

ConnectでのWebhookのご利用に関しては、下記にも記載がございます:https://stripe.com/docs/connect/webhooks

Q7.決済完了したユーザにだけページ表示したい
・WebhookのURLへ直接アクセスされたくないのですが、
if ($event->type == 'checkout.session.completed') {
だけではダメで、下記も必要ですか?
$endpoint_secret
Q1でご案内しました通り、'success_url'には変数を渡すことが可能ですので、これにより、ご想定されておりますようなケースや、悪意のある顧客からの乱用に対して対応いただけるかと存じます。
なお、同じような事象をご懸念されているユーザのために、Stripeでは幾つかの'success_url'の設定方法を下記にてご案内しております:https://stripe.com/docs/payments/checkout/fulfillment

Q8.PHPのWebhookエンドポイント
$sig_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];
・上記箇所で「Undefined index: HTTP_STRIPE_SIGNATURE 」エラーが表示されるのですが、気にする必要はありますか?
こちらのご質問に関して明確にご案内させていただくには、該当のエラーについて社内で確認させていただきたく存じます。
つきましては、エラーについて下記のような情報をご提供いただけますでしょうか。

・エラーが確認できるスクリーンショット
・該当のWebhookイベントを設定されているStripeアカウント
・エラーを受信された経緯

Q9.Webhookエンドポイントに対するイベント指定について
・「Customerとして存在しているならば」というイベント指定はできますか?
・イベントなので、Customer「作成時」や「更新時」といった指定しか用意されていない?
ご認識の通り、Webhookのイベントはアカウントで発生した事象によって設定いただけますので、「Customerとして存在しているならば」というようなイベントの設定はございません。

恐れ入りますが、こちらを設定されたい理由を伺ってもよろしいでしょうか。
もし、他の手段にてご提案させていただける方法がございましたら、社内でお調べさせていただきたく存じます。

Q53-2.追加質問 / A-2 / A-2-1

 閲覧数:462 投稿日:2019-08-09 更新日:2019-08-12 

Q53-2.追加質問


幾つか疑問点がありましたので、追加で教えてください。
2019/8/5
Q1.'success_url'へ遷移する前に渡すことができる変数について
・「https://stripe.com/docs/payments/checkout/fulfillment」を試して、CHECKOUT_SESSION_IDを受け取ることができたのですが、CHECKOUT_SESSION_IDの他に渡すことができる変数はありますか?
・あるいは、'success_url'末尾へ「?key={変数名}」とすることで任意の変数をGETで受け取ることが出来る仕組みですか?


Q2.Connectアカウントでのイベントについて
「Connectアカウント」という用語自体が分からないのですが、
・例えば、Connect の「Standardアカウント」で「Direct Charge」を設定している場合、「Connectアカウント」は親子何れのアカウントが該当しますか?
・例えば、Connect の「Standardアカウント」で「Direct Charge」を設定している状態で、子アカウントで決済が発生した場合(checkout.session.completedイベント?)は、「Connectアカウントでのイベント」に該当しますか? 


< その他 >
$_SERVER['HTTP_STRIPE_SIGNATURE'] エラーの件
・説明できる情報が用意できた場合に改めて質問させていただきます

「Customerとして存在しているならば」イベントの件
・任意ユーザへの記事販売を考えています
・ユーザがStripeで記事を購入した後、購入済ユーザであることを自サービス側で判定しようと思っていたのですが、Stripe側で何か便利な仕組みが提供されていれば、購入済ユーザであることの判定処理に使えるかも…、と軽い気持ちで質問しました

A-2


Q2.Connectアカウントでのイベントについて
「Connectアカウント」という用語自体が分からないのですが、
・例えば、Connect の「Standardアカウント」で「Direct Charge」を設定している場合、「Connectアカウント」は親子何れのアカウントが該当しますか?
Connectアカウントとは、「子アカウント」という意味でご案内させていただきました。

・例えば、Connect の「Standardアカウント」で「Direct Charge」を設定している状態で、子アカウントで決済が発生した場合(checkout.session.completedイベント?)は、「Connectアカウントでのイベント」に該当しますか?
はい、ご認識の通りでございます。

< その他 >
「Customerとして存在しているならば」イベントの件
・任意ユーザへの記事販売を考えています
・ユーザがStripeで記事を購入した後、購入済ユーザであることを自サービス側で判定しようと思っていたのですが、Stripe側で何か便利な仕組みが提供されていれば、購入済ユーザであることの判定処理に使えるかも…、と軽い気持ちで質問しました
恐れ入りますが、ご想定されている設定は、現時点ではStripeではご用意しておりません。

確かに、ご提案いただいたような設定にて、Customerの2重登録を防ぐことも出来るかと存じますので、今回お寄せいただいたお声をふまえ、弊社にて機能の充実・改善を引き続き行ってまいります。また、何かアップデートがありましたらアナウンスさせていただきます。

A-2-1


'success_url'内での変数について、確認が取れましたのでご連絡いたしました。

恐れ入りますが、現時点でテンプレートとしてご利用いただける変数は、{CHECKOUT_SESSION_ID}のみとなっております。
なお、貴社開発に依拠してしましますが、任意の変数をご追加いただくことは可能となっております。


Stripe Q52.Checkout\Sessionで1回限りの決済終了した際、添付メール自動送信することはできますか?

Stripe Q54.「Webhookイベントで指定したエンドポイント(指定URL)」をユーザーに閲覧させることは可能?

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



類似度ページランキング
順位 ページタイトル抜粋
1 Stripe Q52.Checkout\Sessionで1回限りの決済終了した際、添付メール自動送信することはできますか? 53
2 Stripe Q56. 作成したCheckout\Sessionオブジェクトが破棄されるタイミングは? 42
3 Stripeで"No such token: src"と表示されたら、最初にAPIキーを確認する 41
4 Stripe Q23。イベントで「新しい支払元が追加されました」と表示されているのに、「支払元がありません」 41
5 Stripe Q21。新規顧客作成時に新規ソースオブジェクトを添付したいのですが、No such token: src_xxxxとなります 41
6 Stripe Q51.Connect Standard アカウント連結後の返り値で、"refresh_token”も保存した方が良いですか? 39
7 Stripe Q13。決済成功時に、「請求に紐づけられたメールアドレス」に対して、メール送信したいのですが、 37
8 Stripe Q54.「Webhookイベントで指定したエンドポイント(指定URL)」をユーザーに閲覧させることは可能? 37
9 Stripe Q31。ダッシュボードでの「支払い作成」の見方について 37
10 Stripe Q71.CheckoutSessionで、success_urlに指定したURLでzipダウンロードすると、success_urlへ遷移しない 36
11 Stripe Q43。payouts スケジュールについて 36
12 Stripe Q10。Checkout の Simple で、「data-zip-code="true"」追加した場合について 36
13 Stripe Q37。PaymentIntentで支払いを行った後、成功画面を表示させるためにはどうすれば良いですか? 36
14 Stripe Q29。日本で、Connect Customアカウント を導入している事例について 36
15 Stripe Q60. Checkout\SessionオブジェクトとPaymentIntentオブジェクトの関係性は1対1ですか? 35
16 Stripe Q68.WebhookはPUT送信しているのですか? 35
17 Stripe Q73.CheckoutのSessionオブジェクトをcreateする際、'payment_intent_data'内の'metadata'として渡したデータを、webhookで受け取る件について 34
18 Stripe Q14。Customerオブジェクトをcreateする際の"source"パラメータについて 34
19 Stripe Q65.Connect Standard で連結されているStripeアカウントの違いについて 34
20 Stripe Q42。「Stripeダッシュボードへログインした後に表示される各ページ」へのアクセス権について 33
2022/9/27 0:59 更新
週間人気ページランキング / 9-19 → 9-25
順位 ページタイトル抜粋 アクセス数
1 EMVCo | クレジットカード仕様(仕様) 10
2 決済用語 9
3 EMVレベル1 / EMVレベル2 / EMVCo とは? 7
4 Stripe Q234。Connect カスタムアカウント手数料 | QA(Stripe) 6
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
5 機能一覧表 / Q.アカウント複数作成 / Stripeアカウント登録 5
5 Stripe Q1。Stripeにおける個人事業主の定義 | QA(Stripe) 5
6 ほしい物リスト | 投げ銭サービス(課金販売できるプラットフォーム) 4
6 Stripe 変更履歴 | その他エントリー(Stripe) 4
6 PAY.JP アカウント登録後の自動返信メール / PAY.JP Platform / PAY.JP Platform 用語の整理 4
7 Stripeで"No such token: src"と表示されたら、最初にAPIキーを確認する | Stripe エラー(Stripe) 3
7 Stripe Q14。Customerオブジェクトをcreateする際の"source"パラメータについて | QA(Stripe) 3
7 資金決済に関する法律(資金決済法)とは?/(1)前払式支払手段 /(2)資金移動業 3
2022/9/26 1:01 更新