こちらでは、決済システムについて書きます。
Stripe or PayPal or その他?
個人的に、Stripe一択でした。
他にも色々あるとは思いますが、決済関係にそんなに詳しくない人がほとんどだと思うので、この2択で最初から考えておりました。
理由は、美しさすら感じるオブジェクトの構成と素晴らしく読みやすいドキュメントです。
その他、スマホ閲覧用のアプリ等もStripeの方が充実しており、非常に利用しやすいと判断しました。
ただ、Stripeは返金時にも手数料が引かれてしまうので注意が必要です。
Envaderは、利用規約等にも明記していますが、返金を受け付けておりません。そのため、今回は特に問題はなかったのですが、大きな金額を決済したり、返金保証があるサービス等では返金の規約等をしっかり盛り込む必要があると感じました。
Stripeの実装に関しては、比較的簡単でした。
それなりに経験あるプログラマーなら1週間あれば、テストまで終了するでしょう。
Stripeでの困りごと
Stripeで困ったことは、「Stripe側のAPIを叩く回数が増える」ということです。
Stripeには、様々な概念があり、 customer_id
から price_id
を導いたりなどデータ間の紐付けが複雑でした。
結果として、例えば1つのcustomer_idから購入データを導くまでに数回のAPIを叩く必要があるなど、なんだか非効率な形になってしまいます。
そこで、Stripe側のデータも自分たちのデータベースで保持することを考えました。
Envaderでは、customer_idやprice_id等は、自前のデータベースにも保存しています。どのデータを自前のデータベースにも保存するかというのは一考の価値があるかと思います。
Tipsとして、よく利用したのは、stripe apiに組み込まれているmeta変数という領域です。自分たちの好きなデータをmetaに保存できるため、StripeからのAPIレスポンスをカスタマイズすることができました。