カテゴリー:
Stripe
閲覧数:332 配信日:2019-03-05 10:02
docs
Billing > Quickstart
・Billing Quickstart
・請求クイックスタート
Stripe Billing
Stripeプラットフォームに組み込まれた定期的な請求エンジン
Stripe Billing の役割
・請求書を作成する
・請求エンジンは自動的に請求書の支払いを集めるように働く
請求書
・次の2つの方法のいずれかで作成される
・1.手動 - 一回限りの請求書
・2.自動 - 定期購読を繰り返す
請求方法
Stripeでの顧客への請求は簡単
・必要に応じて顧客に請求することも、 購読を使用して定期的に請求することもできる
一時請求書を作成するには?
・1.Stripeアカウントに顧客を作成する
・2.あなたのストライプダッシュボードから、あなたの顧客のための一回限りの請求書を作成する
定期的に顧客に自動的に請求するには、次の3つの手順に従う
・1.請求額と期間を設定した「サービス製品と料金プラン」を定義する
・2.Stripeアカウントに顧客を作成する
・3.顧客をプランに登録する
・このクイックスタートの残りの部分では、サブスクリプション手順について詳しく説明する
ステップ1:サービス製品と料金プランを定義する
サブスクリプションを作成する前に
・まず「顧客へ提供する予定のサービスを表す製品」を作成する必要がある
・商品とサービスの2種類がある
・商品はOrders APIでの使用を目的としているが、サービスは購読用である
・商品を作成するときは、 typeパラメータを使用して正しい商品を指定する
・次のコードは、サービスタイプ製品を作成する方法を示している
// 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_●●");
$product = \Stripe\Product::create([
'name' => 'My SaaS Platform',
'type' => 'service',
]);
APIを介して商品を作成する場合
・レスポンスにはIDが含まれている
・これを使用して商品にプランを添付することができる
plan
・アイテムごとのコスト、通貨、および請求サイクルを表すオブジェクト
・すべての plan は、product に添付されている
・バリエーションの数に応じて、1つの計画または数百の計画を定義する必要がある
・例えば、様々な地域で異なる通貨を受け入れる場合は、同じ商品にUSDとJPYの計画を別々に作成することをお勧めする
・既存の product に plan を添付するには、 productパラメータの値として目的の商品のIDを渡す
・ このコードはAPIを介してSaaS Platform USDプランを作成し、それを製品に添付する
// 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_●●");
$plan = \Stripe\Plan::create([
'product' => 'prod_CbvTFuXWh7BPJH',
'nickname' => 'SaaS Platform USD',
'interval' => 'month',
'currency' => 'usd',
'amount' => 10000,
]);
・Stripeは、関連するすべての詳細を含む新しいplanオブジェクトを返す
・プランには、プラン作成時に自動的に生成される一意のIDがある
・顧客をプランに加入させるときに、APIリクエストでこのIDを提供してくれ
・このチュートリアルの残りの部分では、 ダッシュボードまたはAPIを使用してSaaS Platform USDプランを作成したことを前提としている
ステップ2:顧客を作成する
customer
・実際の顧客を表すStripeオブジェクトで、支払いを簡単に処理できる
・通常、Eメールアドレスなどのメタデータをcustomerオブジェクトに格納することもできる
・その後の請求を可能にするために、クレジットカードや銀行口座(ACH支払い用)など、保存された支払い方法の有無にかかわらず顧客を作成できる
・ SaaS Platform USDプランの初回および月額料金は100ドルであるため、保存された支払い方法を持つ顧客のみがそれを購読できる
・あなたは安全にCheckout または Elements を介して顧客の支払い情報を集めることができる
・このコードはAPIを介して顧客を作成し、保存された支払い方法として機能するためのソースを提供する
・"source"パラメータには、「Elements/Stripe.js で顧客のカード情報を取得した際のレスポンス」に含まれるソースID(src_xxxx)を指定
// 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_●●");
$customer = \Stripe\Customer::create([
'email' => 'jenny.rosen@example.com',
'source' => 'src_18eYalAHEMiOZZp1l9ZTjSU0',
]);
・src_xxxxを適当に指定すると、エラー発生する
( ! ) Fatal error: Uncaught Stripe\Error\InvalidRequest: No such token: src_18eYalAHEMiOZZp1l9ZTjSU0
・Stripeは、すべての関連情報を含む新しいCustomerオブジェクトを返す
Stripe\Customer::__set_state(array(
'saveWithParent' => false,
'_opts' =>
Stripe\Util\RequestOptions::__set_state(array(
'headers' =>
array (
),
'apiKey' => 'sk_test_●●',
'apiBase' => NULL,
)),
'_originalValues' =>
array (
'id' => 'cus_Ee8Xv5WGk84WdB',
'object' => 'customer',
'account_balance' => 0,
'created' => 1551842256,
'currency' => NULL,
'default_source' => 'card_1EAqG7JiXAQvfxv3V1KS6XNm',
'delinquent' => false,
'description' => 'Customer for 2019年3月6日',
'discount' => NULL,
'email' => '◇◇@yahoo.co.jp',
'invoice_prefix' => '8981C23',
'invoice_settings' =>
array (
'custom_fields' => NULL,
'footer' => NULL,
),
'livemode' => false,
'metadata' =>
array (
),
'shipping' => NULL,
'sources' =>
array (
'object' => 'list',
'data' =>
array (
0 =>
array (
'id' => 'card_1EAqG7JiXAQvfxv3V1KS6XNm',
'object' => 'card',
'address_city' => NULL,
'address_country' => NULL,
'address_line1' => NULL,
'address_line1_check' => NULL,
'address_line2' => NULL,
'address_state' => NULL,
'address_zip' => NULL,
'address_zip_check' => NULL,
'brand' => 'Visa',
'country' => 'US',
'customer' => 'cus_Ee8Xv5WGk84WdB',
'cvc_check' => 'pass',
'dynamic_last4' => NULL,
'exp_month' => 1,
'exp_year' => 2020,
'fingerprint' => 'LMqocVHP8RNDkMLj',
'funding' => 'credit',
'last4' => '4242',
'metadata' =>
array (
),
'name' => '◇◇@yahoo.co.jp',
'tokenization_method' => NULL,
),
),
'has_more' => false,
'total_count' => 1,
'url' => '/v1/customers/cus_Ee8Xv5WGk84WdB/sources',
),
'subscriptions' =>
array (
'object' => 'list',
'data' =>
array (
),
'has_more' => false,
'total_count' => 0,
'url' => '/v1/customers/cus_Ee8Xv5WGk84WdB/subscriptions',
),
'tax_info' => NULL,
'tax_info_verification' => NULL,
),
//以下省略
・上記はCustomerオブジェクトの一部に過ぎない
・顧客の作成呼び出しによって返された完全なオブジェクトも、この顧客にsubscriptionがないことを示している
・顧客を作成したら、後で参照できるように(おそらく顧客の電子メールアドレスとともに)自分のデータベースにid値を保存する
・PHPでの「id値」取得例
\Stripe\Stripe::setApiKey('sk_test_●●');
$customer = \Stripe\Customer::create([
'description' => 'Customer for 2019年3月6日',
'email' => $_POST['stripeEmail'],
'source' => $_POST['stripeToken'],
]);
echo $customer['id'];
ステップ3:顧客をplanに加入させる
最後に、planと顧客を関連付けてsubscriptionを作成する
・「'customer'」及び「'plan'」パラメータは、適切な値を設定しないと正常動作しない
// 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_●●");
$subscription = \Stripe\Subscription::create([
'customer' => 'cus_4fdAW5ftNQow1a',
'items' => [['plan' => 'plan_CBXbz9i7AIOTzr']],
]);
・これで、顧客がプランに加入した
・舞台裏では、Stripeは請求サイクルごとに請求書を作成する
・請求書は、顧客に何の支払いがあるかを明示し、いつ請求されるかを反映し、支払い状況を追跡する
・セットアップ料金などの一時的な料金を、請求書に追加項目として追加することもできる
・ほとんどのサブスクリプションアクティビティはこの時点から自動的に行われるため(詳細については請求ワークフローとライフサイクルドキュメントを参照)、イベントが発生したときに通知を受けるWebフックを確立することをお勧めする
・Tell me why I can also access as an array as an object