勉強したことのメモ

webプログラマが勉強したことのメモ。

PHPとStripeで定額課金(サブスクリプション)実装

   

PHPとStripeで1ヶ月ごとに500円でサイト内のサービスを使い放題のようなサブスクリプション機能を実装したかった。以下に方法のメモ。

Stripeの導入

Stripeのアカウント作成やライブラリのインストールは過去記事を参照。

 

商品(コース)の作成

Stripeのダッシュボードにログインし「商品」→「商品を追加」→「商品を保存」の順に進み、商品(コース)を作成する。今回はテストのため、1日ごとに500円の決済が発生する商品を作成した。

尚、商品を作成すると「price_」から始まるAPI IDと「prod_」から始まるIDが発行され、今回必要なのはAPI IDになる。

 

決済処理

決済ページ(HTML)

商品名や料金説明等は適宜追記する。

 

決済処理ページ(PHP)

決済日時、メールアドレス、「sub_」から始まるsubsctiprionIDをMySQLなどに適宜格納しておく。特にsubsctiprionIDは必須。

 

解約処理

解約処理ページ(PHP)

 

別の実装方法

決済までであればもっと簡単な実装方法もある。Stripeのダッシュボードにログインし「設定」→「Payments内にあるCheckoutの設定」→「Checkout クライアント専用組み込みを有効」→「許可」→「ドメインを入力して保存」と進む。

さらに「商品」→「料金体系の…となっているメニュー部分」→「checkoutのコードスニペットを取得」→「成功時のURLとキャンセル時のURLを入力して保存」とする。最後のURLを入力するダイアログでJavaScriptのタグが表示されるのでそのタグを決済ページに貼り付けるだけで良い。

ただ、この方法だとsubsctiprionIDの取得方法が分からなかった。そうすると解約もどうすればいいのか分からない。「テスト用クレカ&実在するメアド」で登録テストしてみたものの確認メールのようなものは届かなかった。

 

その他

正常に定額決済に登録されているか確認する方法

Stripeのダッシュボードにログインし「顧客」メニューを開くと登録されているユーザーが一覧表示される。

またユーザー部分をクリックすると詳細が表示され、どのコースに登録されているか等が確認できる。

できれば「商品」→「詳細」を開いた際にも該当商品に登録しているユーザーが見られればありがたいが、そのような項目は見受けられなかった。

 

subsctiprionIDの確認方法

Stripeのダッシュボードにログインし「顧客」→「適当なユーザーを選択」→「支払い部分を選択」するとページ下部に「イベントとログ」という表示欄があり、イベントデータの中に「sub_」から始まるsubsctiprionIDが確認できる。

ただ、イベントデータはデフォルトでは省略されており「○行すべてを表示する」ボタンをクリックしないと確認できなかったので注意する。

 

所感

定額決済だと単発決済とは違って解約が発生する為、subsctiprionIDは必須として入会日や更新日などもデータベースに残しておく必要がありそうでまあ色々面倒くさそう。また、例えばだが「今月入会した場合は○%割引」「解約しても更新予定日までは使用可能」等、色々柔軟に対応できるみたいだがこれも実装するのは大変そうである。できれば単発決済のみが良いなぁとは思うものの、恐らくは需要がある決済方法だと考えられるため最低限の部分は今回メモした方法で乗り切りたいところ。

 

参考サイト

https://qiita.com/azukiazusa/items/584d69a373214769880c

 - PHP

  関連記事

メールサーバーを構築せずにGmailのSMPTを使ってPHPでメール送信

メールサーバーが立てられなかったり、無料サーバーのため使えなかったりといった場合 ...

MySQLでのエラーについて

エラーログをとるようになってから色々エラーを 見る機会が出来てきたのでメモ。 プ ...

PHPでeval時のエラー

eval()'d code on line みたいなエラーが出てた。 よそのシス ...

FLASHがインストールされているかどうかチェックする

以前にここでちょっとやったけど、インストールされているか どうかだけならもっと良 ...

PHPのLocationに変数を入れる

ページ遷移したい際に使う、 header("Location:./aaa.htm ...

PHPで他サーバにファイルをアップロードする

formで送信した内容をチェックした上で、他サーバにファイルをアップロードしたか ...

PHPでファイルをダウンロードさせる

集計ページみたいなんがあった。その集計ページを CSV化したいと言われた。 ■ソ ...

PHPを使えないサーバから使えるサーバーに値を渡す方法

PHPが使えないサーバーから使えるサーバーに値を渡したい場合があった。ajaxと ...

MySQLのREGEXPで半角記号を検索したい場合

MySQLのREGEXPで半角記号を検索したい場合 \\を付けてエスケープしない ...

コマンドの実行履歴を確認する

SSH接続した際のコマンド実行履歴を確認したかった。 history で確認でき ...