こんにちは、TOWNの岩崎です。
Aipo.comでは昨年末からオンライン決済サービスであるStripeを使ってクレジットカード決済に対応をしています。
Stripeはユーザー同士の交流も盛んに行われており、7月26日に行われたStripeユーザーコミュニティのイベントにお声がけいただき話をしてきました。
ここでは発表を行ったスライドの公開とともに、イベントでは話せなかったクレジットカード決済対応の導入ストーリーについてご紹介できればと思います。
クレジットカード決済導入後の数字についても話をさせていただきましたが、公開用にスライドの調整を行い、実装におけるポイントについての解説に差し替えをしています。
クレジットカード決済導入のメリット
Aipo.comは2011年のサービス開始以来、銀行振込のみに対応をしていました。
銀行振込の場合には振込手数料がかかるだけでなく定期的な支払手続きが発生することとなり、場合によっては入金不足や過入金などのやり取りで利用者の手をわずらわせることもありました。そういったことからユーザーからもクレジットカード決済への対応の要望を多くいただいていました。
運営側にとってのメリットとしてはバックオフィス業務の軽減があげられます。銀行振込の場合、入金確認後に入金確認メールの送信や領収書の発行手続きなどの作業が発生します。特に毎月20日から月末にかけては忙しくなり、サービスが成長していくことでさらなる負担となってしまいます。その点クレジットカード決済に対応することでその手間を軽減することができ、空いた時間をサポートにあてるなどサービスの向上につなげることができます。
導入にあたって検討したこと
ユーザーによる画面上の操作ですべてを完結できるよう、クレジットカード決済の申し込み、プランやユーザー数の変更、支払履歴の確認などの基本的な操作だけでなく銀行振込からの切り替えといった操作も画面上から行えるように設計をしました。
また、これは大きな決断でしたが、画面上からの申し込みはクレジットカード決済のみの対応とし、銀行振込を希望される方へはメールやチャットなどによるサポートで個別に対応するようにしました。この決断には不安もありましたが、現在では多くのユーザーにクレジットカード決済をお選びいただいています。
その他、クレジットカード決済を導入するにあたり懸念されることといえば、情報の流出といったリスクがあります。自分たちでクレジットカード情報は持ちたくないため、Stripeをはじめとするオンライン決済サービスの利用を前提として考えました。
WebPayによる開発
クレジットカード決済の開発を始めたのは、2016年の夏。当初はStripeとは別のWebPayというサービスを使って開発を進めました。WebPayは国内向けのサービスで2015年にLINEが買収したサービスになります。Visa、Master、JCB、AMEX、DCに対応しており、毎月と毎年の定期課金に対応していたため採用しました。
WebPayで苦労した点
WebPayではカードの有効期限切れや利用限度額オーバーなどで定期課金に失敗した時の自動リトライ処理がないため、決済に失敗してから一定期間後に再度決済を行う処理を自分たちで実装する必要がありました。
また、WebPayではいつ、誰が、いくら払ったかというデータのみしか持たず、何に対する決済かという情報をもたせることができませんでした。そのため自分たちで請求履歴のデータを持ち、WebPay側のデータと照らし合わせる必要がありました。この連携部分の開発に多くの時間がかかりました。
いざリリースへ
あれは忘れもしない、2016年10月31日。リリース当日のことでした。僕は胃腸炎になってしまい会社を休んだのですが、寝込んでいるところに飛び込んできたニュースがありました。
WebPayサービスの終了
寝耳に水とはまさにこのことです。結局その日のリリースは回避されることとなり、翌日出社したところStripeを使って開発し直すことが決まっていました。WebPay向けに書いたコードはこの世に出ることなく全て捨てました。
もしサービス終了の発表がリリース後であったなら、事態はより複雑になるところでした。リリース後だった場合、顧客データや課金データの移行を行う必要がありましたが、今回はリリース前だったため移行については考慮する必要がありませんでした。怪我の功名ってこういう時に使うのかな、と思いました。胃腸炎、ありがとう。
Stripeによる開発
Stripeは海外で展開をしており130以上の通貨に対応しているサービスですが、2016年10月に日本で正式リリースしたこともありStripeを選択しました。Visa、Master、AMEXに対応しており、毎月や毎年だけでなく毎日や毎週といった定期課金にも対応をしています。
Stripeにおける実装の細かな話についてはSpeaker Deckにアップしたスライドをご覧いただくことにして、ここではWebPayからStripeに変更してよかった点について挙げてみたいと思います。
Stripeにしてよかった点
Stripeにしたことでデータの持ちやすさが格段に上がりました。
まず第1にプランのデータが持てるようになりました。Aipo.comでは複数のプランがありますが、これらを登録しておくことで、どのプランに対する定期課金かといった情報の紐づけが簡単にできるようになりました。
第2に請求データに対してメタデータが持てるため、何に対する決済かをStripeだけで管理できるようになりました。そのためAipo.com側では請求履歴のデータを持つ必要が一切なくなりました。
また、Aipo.comでは容量追加のオプションもあったため、基本プランとオプションプランをひとまとめにした定期課金を組みたいとStripeのサポートに相談したところ、その当時はまだベータ版だったSubscription Itemsという機能(現在は正式リリース済)をご紹介いただき、私達がイメージした形での定期課金のデータを組むことができました。その他にも仕様の不明な点について教えていただくなどサポートで柔軟に対応していただいた点も非常に助かりました。
今度こそリリース
WebPayをベースに開発したことで大枠ができあがっていたため、それをStripeベースに置き換えていく開発になりましたが、「ここはStripeだとよりよいデータ構造にできる」や「ここはStripeだと開発する必要がない」という点が数多くあり、WebPayからStripeに乗り換えて1ヶ月後の2016年12月に無事リリースを迎えることができました。
導入開始から8ヶ月ほどですが、トラブルなく運用できています。またバックオフィス業務もかなり省力化でき、Stripeを活用することでここまで自動化できてしまうものかと驚いています。
今後も外部のサービスをうまく活用することで、Aipo.com側で取り組むべき課題に集中してサービスの価値をさらに高めていきたいと思います。
TOWNでは僕と一緒にAipo.comの成長に携わってくれるエンジニアを募集しています。クレジットカード決済導入後の数字やStripeの実装について興味があるエンジニアはぜひお声がけください。