Stripe カスタマーポータルを導入してみる

Stripe カスタマーポータルとは… 定期課金でのカード情報変更や支払の中断、再開等の操作をお客さんご自身で操作していただけるサービスです。

実際にこれをシステム内に組み込もうと思ったらかなりの工数がかかりますが、Stripe カスタマーポータル(Stripe Customer Portal)を利用することで高機能なシステムが利用できることになります。

デジタルキューブ様のこちらの記事が大変参考になりました。


今回の動作環境は下記のとおりです。

PHP 8.0, Stripe-php バージョン 7.94.0

カスタマーポータルを利用するために

カスタマーポータルを利用するために必要なものは…

決済時に発行された カスタマーID (データ上は “customer”)です。

“customer”: “cus_xxxxxxxxxxxxxxxxxxx”,

こんな感じのデータです。

これは決済時に返却されるデータの中にありますのでそれを 購入情報に格納しておけばよいことになります。

このあたりは、定期課金をされている場合はすでになんとかしている前提で進みますが、簡易的にメールに記載しておくという方法もあるかもしれません。

メールに記載する例はこちらで紹介しています。ご参考までにどうぞ。

わすれちゃいけない そもそものカスタマーポータル設定

いきなりカスタマーポータルを使おうとするとこんなエラーメッセージが出ます。

You can’t create a portal session in test mode until you save your customer portal settings in test mode at https://dashboard.stripe.com/test/settings/billing/portal.

要するに、Stripe側でそもそもカスタマーポータルを使えるようにしてないよ!ということ。

こちらをご確認ください!

設定 → カスタマーポータル

PHPでカスタマーポータルを表示するところのコード

今回用意したプログラムコードは PHP用のものになります。

API_KEY(APIキー) は Stripe管理画面の「開発者」→ APIキー → 標準キー → シークレットキー(本番キーまたはテストキーを表示ボタン押す) から取得できます。 sk_test_ 〜 はテストキー sk_live_ 〜 は本番キーになります。

このコードでは $_customer_id として カスタマーIDが入ればそれでも良いです。

今回わざわざ “charge” チャージID の方からカスタマーIDを出しています。

ものすごーく、いろいろな処理が省略されていますが、キモとなるのはこのくらいのコード量です。

途中にある require ‘./vendor/autoload.php’; の部分について説明します。

このプログラムファイルを customer_portal.php とすると下記のような階層に格納されているイメージです。

┬ customer_portal.php

└ vendor

  ├ autoload.php

  ├ composer/

  └ stripe/

かなり部分的に書いてますが、この構成を作るために Composer でライブラリを取得してください。

Composer の使い方はこちらが参考になります。

composer.json の内容は下記の通りです。

{
  "require": {
    "stripe/stripe-php": "7.*"
  }
}

composer update でライブラリが取得されますので適宜配置してください。

カスタマーポータルのサンプル

https://blog.gti.jp/cp/cp.php

こちらの画面からカスタマーポータルをご利用いただけます。

かんたん画面

こちらに 取引ID ch_1J4xGvDoK5D4pRvXserd8aPs

登録したクレジットカードの下4桁 4242

を入れるとカスタマーポータルが立ち上がります。

今回のコードは $_charge_id = ‘〜〜〜どこかからもらう〜〜〜’; としていますが、この簡易版では

入力フォームから チャージIDを入力してもらっている感じになります。

本来はそれだけでカスタマーポータルを開けますが、なんとなくカードの下4桁でセキュリティを高めてみた…(甘すぎますが)次第です。

こちらのコードは下記のとおりです。

入力画面

ファイル名 cp.php

カスタマーポータルへ遷移するための処理ファイル

ファイル名 customer_portal.php

設定ファイル

ファイル名 config.php

ファイル構成

構成は下記のようになっています。

┬ customer_portal.php

├ config.php

├ cp.php

└ vendor

  ├ autoload.php

  ├ composer/

  └ stripe/

まとめ

カスタマーポータルは定期課金を導入したいけど、定期課金はカードの変更や課金の中断・再開・終了なんかも面倒見ないといけないから工数がかかりそう・・・という場合にかなり重宝します。

定期課金の場合、実際は会員制にしないといろいろ面倒ですし(お客さんが チャージID持っているなど)もともとそういう機能が入っているカートなどをご利用であれば不要だと思います。

ただ、商品点数が少なくカートを運用するほどでもない場合や会員制の会員費などの徴収には大変便利なのではないかと思います。

弊社でも適材適所でご提案・導入支援していければと考えています。

サンプルコードは GitHub で取得できます

https://github.com/taman777/stripe_customer_portal_test

config-sample.php は 中身を適宜変更し config.php にリネームしてくださいね。

この記事が気に入ったら
いいね ! しよう

Twitter で