Stripe カスタマーポータルの導入

決済サービスのStripeで利用できる「カスタマーポータル」の導入をやったのでまとめました。WordPress サイトで実装したので、サンプルコードは PHP です。

    Stripe カスタマーポータルとは

    カスタマーポータルのプレビュー

    Stripe のカスタマーポータルでは、

    • 定期課金のキャンセルやプラン変更
    • 請求書・領収書の閲覧やダウンロード

    など顧客自身で操作できるUIが提供されています。自前で用意するのは実装も管理も大変なので、カスタマーポータルの導入でかなり工数を圧縮できると思います。

    カスタマーポータル上で顧客にどの機能を利用可能にするか、ダッシュボードにて設定できます。API経由での設定も可能です。

    カスタマーポータル設定画面のサンプル

    できること

    以下の機能を顧客が自分でできる画面が提供されます。

    • サブスクリプションを更新します。
    • サブスクリプションをキャンセルします。
    • サブスクリプションを一時停止します。
    • サブスクリプションを再開します。
    • 有効なサブスクリプションを表示します。
    • 現在と過去のインボイス履歴を表示し、インボイスをダウンロードします。
    • 支払い方法を更新します。
    • 納税番号などの請求情報を更新します。
    カスタマーポータルを組み込む | Stripe のドキュメント

    すでにStripeアカウントを持っている方は、設定→カスタマーポータルで設定を試したり、プレビューを確認できます。

    カスタマーポータルの導入

    カスタマーポータルは都度発行されたワンタイムのURLからアクセスします。

    ダッシュボードで設定してから、コードを書いてセッションを作成する必要があります。

    PHP
    $stripe = new \Stripe\StripeClient( $secret_key );
    
    $session = $stripe->billingPortal->sessions->create([
    	'customer' => $customer_id,
    	'return_url' => 'https://example.com',
    ]);
    
    header("Location: " . $session->url);
    exit();

    ここで customer のID(cus_ ではじまるID)が必要になるので、サーバー側で保存しておく必要があります。

    customer を保存してない場合、他のものから工夫でなんとかします。たとえば subscription(sub_ ではじまる)があれば、以下のように subscription を取得して、そこから customer を取り出せます。

    PHP
    $stripe = new \Stripe\StripeClient( $secret_key );
    $subscription = $stripe->subscriptions->retrieve($subscription);
    $customer_id = $subscription->customer;

    顧客・商品によってカスタマーポータルの設定を切り替える

    ダッシュボードのカスタマーポータルで作成と更新が可能なのは、デフォルト設定ひとつのみです。

    複数の設定を使い分けるには、API経由で設定します。

    PHP
    $configuration = $stripe->billingPortal->configurations->create([
    	'business_profile' => [
    		'headline' => 'サンプルテキスト',
    	],
    	'features' => [
    		'payment_method_update' => ['enabled' => false],
    		'subscription_cancel'	=> ['enabled' => true],
    	],
    ]);
    
    $session = $stripe->billingPortal->sessions->create([
    	'customer' => $customer_id,
    	'return_url' => 'https://example.com',
    	'configuration' => $configuration,
    ]);

    createした設定は Stripe 側で保存されているっぽいので。呼び出す度に新規設定を作るよりも、configuration の ID を保存しておいてセッションにセットする方がよさそうに思います。

    遭遇したエラーと対応

    最初入っていた Stripe ライブラリのバージョンが少し古くて、configuration が提供されていませんでした。

    ドキュメント通りやってるのに configuration が null になって設定できない、という場合はライブラリをアップデートしてみると上手くいくかもしれません。

    カスタマーポータル導入のご相談はお気軽に

    以上、決済サービスのStripeで利用できる「カスタマーポータル」の導入についてまとめました。

    導入をご検討の際には、お気軽にご相談ください。

    サポートが必要ですか?

    ご質問・お見積り依頼はお気軽にどうぞ

    お問い合わせはこちら
    シェア
    野良人 代表
    新免祥太
    1988年岡山生まれ。外食企業のWEB・EC担当を経験したのち、2013年12月より「野良人(のらんど)」の屋号で独立しWEBデザイン・プログラミングなどWEBサイト制作の工程全般を請け負っています。お気軽にご相談ください。
    広告
    次の記事(2022/06/30)
    Stripeでクレジットカード期限切れなどによる定期課金失敗に対応
    前の記事(2022/03/10)
    WordPressのカテゴリーアーカイブをタグで絞り込み検索
    記事一覧