Checkout Server Quickstart / チェックアウトサーバーのクイックスタート

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

カテゴリー: Stripe  閲覧数:573 配信日:2019-02-19 15:50


docs


Payments > PREPARING FOR SCA  > Checkout (new) > Checkout Server
Checkout Server Quickstart
チェックアウトサーバーのクイックスタート
・Checkout Sessions APIを使用して、新しいCheckoutをすばやく開始する方法を学ぶ

Checkout Sessions APIを使用すると


SKUやプランに関連付けられていない「動的な金額」や「この目的のための単位品目」を提供できる
・既存のプランを使用してSubscriptionを作成することもできる
・Checkoutサーバーシステムで、クライアント上でCheckoutを開始するためのセッションをサーバー上に作成する
1.サーバーにチェックアウトセッションを作成する
2.あなたのウェブサイトにチェックアウトを追加する

※Checkoutを使用するには、WebサイトまたはアプリケーションがHTTPS対応でなければならない

ステップ1:サーバーにチェックアウトセッションを作成する


セッションを作成するときに
・Checkoutに1回限りの支払いまたは subscriptions を作成するように指示できる
- 1回限りの支払い Subscription
渡すパラメータ line_items subscription_data
クライアントライブラリを使用してStripeオブジェクトのインスタンスを作成するときは
・機能にアクセスするためにベータフラグ( checkout_sessions_beta=v1 )を追加する必要がある

Stripe-Versionヘッダを設定したら
・新しいCheckoutで使用するCheckoutセッションを作成する準備が整った
・line_itemsまたはsubscription_data 、 cancel_url 、 success_url 、payment_method_typesを提供する必要がある
・セッション作成に使用できるパラメータの完全なリストについてはAPIリファレンスを参照してくれ

1回限りの支払い
・セッションを作成するときにline_itemsパラメータを使用する

・サーバーにチェックアウトセッションを作成する
・「クライアント上でCheckoutを開始するためのセッション」をサーバー上に作成しただけ。「支払いが作成されました」
※支払いはまだ実行されていないから、当然画面遷移もしない
・POST /v1/checkout/sessions
※stripe-phpのバージョンが古いとエラーが発生するので要注意。「v6.28.0」では「Fatal error」発生

・betaバージョンではなくなった(2019/04/16以降)書き方
// 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");

\Stripe\Checkout\Session::create([
 'success_url' => 'https://www.example.com/success',
 'cancel_url' => 'https://www.example.com/cancel',
 'payment_method_types' => ['card'],
 'line_items' => [[
   'amount' => 500,
   'currency' => 'jpy',
   'name' => 'T-shirt',
   'description' => 'Comfortable cotton t-shirt',
   'images' => ['https://www.example.com/t-shirt.png'],
   'quantity' => 1,
 ]]
]);


・betaバージョンの頃(2019/04/15以前)の書き方
▼Checkout (new) beta-server デモ1
// 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");

\Stripe\Checkout\Session::create([
 'success_url' => 'https://www.example.com/success',
 'cancel_url' => 'https://www.example.com/cancel',
 'payment_method_types' => ['card'],
 'line_items' => [[
   'amount' => 2000,
   'quantity' => 2,
   'name' => 'Blue banana',
   'currency' => 'usd',
   'images' => ['https://www.example.com/banana.png']
 ]]
], [
 'stripe_version' => '2018-11-08; checkout_sessions_beta=v1'
]);


subscriptions
・作成するには、セッションを作成するときにsubscription_dataパラメータを使用する
・サブスクリプションの詳細は、基本となるプランによって最初に決定される
・プランは、単価、請求期間、および通貨を決定する
・プランはプランAPIまたはダッシュボードから作成できる
// 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");

\Stripe\Checkout\Session::create([
 'success_url' => 'https://www.example.com/success',
 'cancel_url' => 'https://www.example.com/cancel',
 'payment_method_types' => ['card'],
 'subscription_data' => [
   'items' => [
     [
       'plan' => 'plan_xyz',
     ],
   ],
 ],
]);


サーバーシステムによって作成されたセッション
・クライアントシステムによって作成されたセッションとは異なり、planレベルでtrial_period_daysが設定されたサブスクリプションの作成をサポートしない
・ 試用期間を設定するには、subscription_data.trial_period_days引数の値として希望の試用期間を渡してくれ

Stripe.jsシステムには
・session creation API レスポンスからのidフィールドが必要なので、 redirectToCheckoutを呼び出すJavaScriptまたはHTMLファイルでそれを利用できるようにしてくれ

ステップ2:あなたのウェブサイトにチェックアウトを追加する


WebサイトでCheckoutを使用するには
・前の手順で作成したセッションからのidフィールドを含むコードの断片を追加する必要がある

チェックアウトはStripe.jsに依存している
・始めるには、あなたのウェブサイトに次のscriptタグを含めてくれ
・これは常にhttps://js.stripe.comから直接ロードする必要がある
<script src="https://js.stripe.com/v3/"></script>

・次に、publishableなAPIキーを最初のパラメータとして指定して、Stripeオブジェクトのインスタンスを作成する

・betaバージョンではなくなった(2019/04/16以降)書き方
var stripe = Stripe('pk_test_xxxx'); 


・betaバージョンの頃(2019/04/15以前)の書き方
var stripe = Stripe(
 'pk_test_xxxx',
 {
   betas: ['checkout_beta_4']
 }
);


顧客が支払いの準備ができたら
・redirectToCheckoutを呼び出してチェックアウトプロセスを開始する
・これは、セッション作成からのIDをCheckoutのパラメータとして指定する場所だ
stripe.redirectToCheckout({
 sessionId: '{{CHECKOUT_SESSION_ID}}'
}).then(function (result) {
 // If `redirectToCheckout` fails due to a browser or network
 // error, display the localized error message to your customer
 // using `result.error.message`.
});


このコードは
・通常、支払いボタンのクリックなど、顧客が行った操作に応答してトリガーされるイベントハンドラーから呼び出される

支払いが成功したら
・あなたは顧客の購入を果たすべきだ
・checkout.session.completedイベントがトリガーされたときに、Webhookを使用して購入を完了できる
・Checkoutを使用した購入履行の処理に関する詳細については、 資料を参照してくれ

「Checkoutによる購入の実現」で説明されている戦略のいずれかを使用してくれ
・次のように、購入を達成するためにsuccess_urlへのリダイレクトだけに頼らないでくれ
・悪意のあるユーザーは、支払いをせずにsuccessUrlに直接アクセスして、商品やサービスにアクセスする可能性がある
・顧客は、支払いが成功した後に必ずしもsuccessUrlに到達するとは限らない。 リダイレクトが発生する前にブラウザのタブを閉じる可能性がある

オプション:顧客データの事前入力


顧客のメールアドレスを既に知っている場合
・顧客が自分の支払い情報を二度入力する必要性を避けるために、あなたは、チェックアウトページに事前に記入したい顧客についての情報をすでに集めているかもしれない
・チェックアウトセッションを作成するときにcustomer_emailを指定することで、チェックアウトページで顧客の電子メールを事前に入力できる

▼Checkout (new) betaバージョンではなくなった-server デモ1
・顧客データ(メールアドレス)を事前入力
\Stripe\Checkout\Session::create([
 'customer_email' => 'customer@example.com',
 'success_url' => 'https://www.example.com/success',
 'cancel_url' => 'https://www.example.com/cancel',
 'payment_method_types' => ['card'],
 'line_items' => [
   [
     'amount' => 500,
     'currency' => 'jpy',
     'name' => 'T-shirt',
     'description' => 'Comfortable cotton t-shirt',
     'quantity' => 1,
   ],
 ],
]);

※2019/4/17、名前空間おかしいので修正。'currency' => 'jpy'の後の,も追加

既存の顧客を使用する


1回払いをするときに使用するCheckoutの既存のCustomerオブジェクトを指定できる(これはまだプランや subscriptionsでは機能しない)
・そうすると、Checkoutが作成したStripeオブジェクトはその顧客に関連付けられる
・顧客を指定すると、Stripeは顧客に保存されている電子メールもチェックアウトページの電子メールフィールドに入力するために使用する
・顧客が「チェックアウト」ページで自分のEメールを変更すると、支払いが成功した後にその顧客オブジェクトで更新される
・POST /v1/checkout/sessions

・betaバージョンではなくなった(2019/04/16以降)書き方
▼Checkout (new) betaバージョンではなくなった-server デモ2
・顧客データ(メールアドレスのみ)が事前入力される(カード情報は顧客が入力する必要あり)
・入力したカード情報は、顧客に紐づけられるが、デフォルトカード情報が書き換えられるわけではない
・また、何回も支払いを行った場合(しかも同じカード情報を入力して)、同じ顧客に同じカード番号情報による支払い履歴が追加されていく(但しIDは異なる。支払い明細みたいなもの)
\Stripe\Checkout\Session::create([
 'customer' => 'cus_xxxx',
 'success_url' => 'https://www.example.com/success',
 'cancel_url' => 'https://www.example.com/cancel',
 'payment_method_types' => ['card'],
 'line_items' => [
   [
     'amount' => 500,
     'currency' => 'jpy',
     'name' => 'T-shirt',
     'description' => 'Comfortable cotton t-shirt',
     'images' => ['https://www.example.com/t-shirt.png'],
     'quantity' => 1,
   ],
 ],
]);

※2019/4/17、名前空間おかしいので修正。'currency' => 'jpy'の後の,も追加

・betaバージョンの頃(2019/04/15以前)の書き方
▼Checkout (new) beta-server デモ2
\Stripe\\Checkout\\Session::create([
 'customer' => 'cus_123123',
 'success_url' => 'https://www.example.com/success',
 'cancel_url' => 'https://www.example.com/cancel',
 'payment_method_types' => ['card'],
 'line_items' => [
   [
     'amount' => 2000,
     'currency' => 'usd',
     'name' => 'Blue banana',
     'quantity' => 2,
   ],
 ],
], [
 'stripe_version' => '2018-11-08; checkout_sessions_beta=v1'
]);

・存在しないcustomerを指定するとエラー発生。( ! ) Fatal error: Uncaught Stripe\Error\InvalidRequest: No such customer: cus_123123
※2019/4/11、名前空間おかしいので修正。'currency' => 'usd'の後の,も追加

オプション:許可とキャプチャーを別々にする


・省略

週間人気ページランキング / 4-19 → 4-25
順位 ページタイトル抜粋 アクセス数
1 YouTube | 動画サービス(課金販売できるプラットフォーム) 7
2 EMVCo | クレジットカード仕様(仕様) 6
3 EMVレベル1 / EMVレベル2 / EMVCo とは? 5
4 クレジットカード決済 | 課金 4
5 pixivFANBOX | クリエイター支援プラットフォーム(課金販売できるプラットフォーム) 3
5 Squareは、デジタルコンテンツ(デジタル情報)の配信利用が認められないサービス | 「支払」機能を有する決済系サービス(決済サービス) 3
6 Stripeアカウントへログインする際、モバイル端末で受信したコード入力を求められる理由は? | その他エントリー(Stripe) 2
6 Off-session Payments with Payment Intents / Payment Intents を使用したオフセッション支払 2
6 Stripe Q32。Webhook のエンドポイントから適切な値を返さなかったときの停止措置について | QA(Stripe) 2
6 「支払」と「送金」の違い | 違い 2
6 Stripe Q16。PaymentIntentの支払いで郵便番号入力を求められる。Radar rules の ZIP code を無効にしているのに | QA(Stripe) 2
6 プリペイドカード | カード 2
7 振込 | 送金 1
7 IBAN | 海外送金(送金) 1
7 Stripe Q11。テストAPIで、実際のカード番号を入力したらどうなりますか? | QA(Stripe) 1
7 Stripe Q53.Checkout\Sessionの1回限りの支払いで、決済完了したユーザにだけページ表示させたい | QA(Stripe) 1
7 ツイキャスとは?/ 特徴 / キートスとは? 1
7 note | 課金販売できるプラットフォーム 1
7 Stripe webhook 配信の問題 / 実際に受け取った警告メールの受信例 1
7 Stripe webhook 配信の問題 | その他エントリー(Stripe) 1
2024/4/26 1:02 更新
指定期間人気ページランキング / 2020-5-28 → 2024-4-25
順位 ページタイトル抜粋 アクセス数
1 Stripeアカウントへログインする際、モバイル端末で受信したコード入力を求められる理由は? | その他エントリー(Stripe) 2010
2 EMVCo | クレジットカード仕様(仕様) 1268
3 Stripe Q13。決済成功時に、「請求に紐づけられたメールアドレス」に対して、メール送信したいのですが、 | QA(Stripe) 943
4 Stripe Q16。PaymentIntentの支払いで郵便番号入力を求められる。Radar rules の ZIP code を無効にしているのに | QA(Stripe) 901
5 クレジットカード決済 | 課金 880
6 Twitch | ゲーム実況配信サービス(課金販売できるプラットフォーム) 876
7 決済用語 855
8 Stripe Q50。 Connect 「Standardアカウント」で、自身に連結された子アカウントを、ダッシュボードから削除するには? | QA(Stripe) 824
9 Omise | 「支払」機能を有する決済系サービス(決済サービス) 767
10 Stripe Q1。Stripeにおける個人事業主の定義 | QA(Stripe) 761
11 pixivFANBOX | クリエイター支援プラットフォーム(課金販売できるプラットフォーム) 741
12 Stripe Q31。ダッシュボードでの「支払い作成」の見方について | QA(Stripe) 738
13 EMVレベル1 / EMVレベル2 / EMVCo とは? 727
14 YouTube | 動画サービス(課金販売できるプラットフォーム) 670
15 プリペイドカード | カード 645
16 EPUB | ファイルフォーマット(電子書籍) 587
17 サブスクリプション | 課金 563
18 Stripeで"No such token: src"と表示されたら、最初にAPIキーを確認する | Stripe エラー(Stripe) 544
19 Stripe Q74.「お客様のビジネスの詳細」とは何ですか? | Stripe 542
20 ファンティア | クリエイター支援プラットフォーム(課金販売できるプラットフォーム) 482
2024/4/26 1:02 更新