こんにちは。
竹渕です。
かなり久しぶりとなりますが、Stripeの決済が具合良かったので記事にします。
写真素材:フリー写真素材ぱくたそ
概要
Webサービスで、Stripeを利用したサブスクリプション(入会月は無料、翌月から毎月1日課金)を実装しました。
利用する決済方法はクレジットカード、Apple Pay、Google Payです。
やったこと
1.Stripeのアカウント作成
2.開発環境でのStripe会員登録処理実装
3.開発環境でのStripe会員に対するサブスクリプション処理実装
4.開発環境でのwebhookでのステータス変更通知の対応の実装
5.本番環境での動作確認
メリット
Stripeを使ってみて感じたメリットは下記になります。
<すぐに利用開始できる>
Stripeは導入に必要な時間が非常に短く、数日で本番用の決済が利用できるようになります。
※決済手段によってはクレジットカード登録後に承認を受けるための期間が必要になりますがかなり早いです。
開発環境については、即日クレジットカードの登録すら行わず利用することができます!
Stripeの調査をするにあたって申請用の書類作成や審査などもなく、すぐに開発環境が利用できるため「こんなことできる?」という確認をすぐに行うことができました。
※実際に金銭のやり取りが可能になる本番環境の利用には銀行口座やクレジットカードの情報が必要となります。
<決済方法が選べる>
クレジットカードは当然として、Apple PayやGoogle Payに対応しています。
今回は上記の3つのみ利用したかったため他の方法については詳しく調べていませんが、この3つについてはサブスクリプションにも対応しています。
<公式ドキュメントが読みやすい>
公式のWebページでドキュメントが公開されています。
日本語があるのもありがたいです。
ドキュメントのボリュームは多いですが探しやすく、サンプルコードなどもありわかりやすく感じました。
<Stripeで細かいログが確認できる>
Stripeの管理画面からログが確認できます。
会員ごとに決済や、解約のログが時系列で確認でき、webhookについても詳細なログが確認できます。
決済の問い合わせ調査を行ったときに、対象の会員の履歴を見ることでどんな経緯で状態が変わっていったか確認が行いやすく、非常に助かりました。
デメリット
Stripeを使ってみて感じたデメリットですが、あまり不満を感じなかったのが正直なところですが1点だけ・・・。
※デメリットというか仕様的に苦労した点ですね。
<日本時間の1日0:00に請求を行えない>
やりたかったことが毎月1日に請求を行うサブスクリプションでした。
そのため、日本時間の毎月1日の0:00に請求が行われるように実装しました。
初月は問題なく1日の課金となっていましたが、その次の請求予定日をみたところ31日になっていました。
どうやら日時計算がUTC基準となっているようで、「毎月請求で、初回請求タイミングを日本時間の翌月1日の9時より前にする」と、請求タイミングが各月の1日でなくなります。
※「初回を日本時間7月1日の0時に請求する」とした場合、「UTCで6月30日 15時に初回の請求」として扱われ、1ヶ月後は「UTCで7月30日 15時に請求」となり・・・、1日に請求が発生して欲しいのに7月31日となってしまいます。
請求の時間は日本時間の1日9時でもよかったため9時としましたが、1日の9時までに退会した契約について問題にならないよう、webhookの通知を使って対応するための実装が必要でした。
終わりに
デメリットと称して苦労した点について書きましたが、ドキュメントや開発環境がしっかりしていることで実装も行いやすく、運用中についても詳細なログを確認できるため、かなり使いやすいサービスに感じました。
費用的にも課金された費用に対する%なので、個人や小規模なサービスで利用するのにもありがたいサービスですね。
最後まで読んでいただきありがとうございました。