初めて投稿させていただきます、Takaoです。
素人なので間違っている点もあると思いますが、温かい目で見ていただけると嬉しいです。
今回は僕が作成したPayPal,Stripe決済後に自動でサンキューメールを送信するアプリケーションについて書きたいと思います。
以下のリンクからアクセスできます。
僕がPaypalやStripeで商品を販売しようとした際に、決済後のサンキューメールを送るアプリをいろいろ探したのですがなかなかしっくりくるのが見つかりませんでした。(というか値段が高い涙)。
僕は商品ごとに送信するテンプレートが選択でき、ステップメール機能もあるアプリが欲しかったのですが、なかなか見つからず(MyASPというサービスを使えばできるようだが月額3000円以上と値段が少し高い)仕方なく自分でこのPalPalMailerを作成しました。
PalPalMailerは無料で決済後のメールを送ることができ、さらに商品ごとに違うテンプレートを送信したり、違うシナリオのステップメールを送ることもできます。
送信したメールが届いたかや開かれたかなどメールのアクションを追跡する機能も付いています。
自分でほしいと思った機能はほとんどつけられたと思います。
アプリの紹介はこれくらいにしてこのアプリに使用した技術について書きたいと思います。
使用した技術
PalPalMailerはとにかくお金をかけずに作成することにこだわりました。
フレームワーク:Ruby on Rails
データベース:mongodb atlas
プラットフォーム:Heroku
メール送信システム:Sendgrid
決済システム:Stripe
フレームワーク
まずフレームワークはRuby on Railsを選択しました。最初はRails APIでバックエンド、フロントをReactで構成しようと考えていたのですが、認証周りのセキュリティでどうするのが安全なのかわからず結局Rails単体で構成しました(jwtを使った認証があるそうなのですがlocal storageに保存すべきか否かや、Cookieを使用すべきかで意見が分かれる。)。どうするのが正解なのかわかる方がいたら教えていただけると嬉しいです。
認証はdeviseを使用し、権限管理にはcancancanを使用しました。
実装にあたってこちらの記事を参考にさせていただきました。
データベース
データベースはMongoDB Atlasを選択しました。理由は単純でHerokuのデータベースのpostgreSQLやMySQLは20000行までしか無料でないので無料で512MBのM0 Sandboxが使えるMongodb Atlasを選択しました。HerokuでMongodb Atlasを利用するうえでこちらのサイトが参考になりました。
RailsでMongoDBを操作するためにMongoidというgemを使ったのですが若干RailsのActiveRecordと挙動が違って少し苦労しました。いろいろ詰まった時はこちらのサイトを参考にさせていただきました。
プラットフォーム
言わずと知れたPaaSのHerokuを利用しました。利用方法についてはほかの方が詳しく書かれているので他の方の記事を参考にしてください。無料で扱うためにクレジットカードを登録して1000時間のdyno時間を使用しています。dynoのスリープを防ぐためにUptimeRobotを使用しています。
UptimeRobotについては以下の記事がとても参考になりました。
メール送信システム
メール送信システムにはSendgridを選択しました。最初はGmailを使用する予定だったのですが、SMTPやAPIでは1日当たり100通までしか送信できないので無料で月間で12000通送信できるSendegridを選択しました。実装に当たってはこちらのサイトが参考になりました。
これは利用していて気付いたのですがSendgridはアメリカに本社があり、日本語で書かれたサイトは日本の代行業者(構造計画研究所)が運営しているそうで、日本の代行業者でアカウントを作成するのとアメリカの本社のサイトでアカウントを作成するのとでは送信数や利用できるサービスなどに大きく差があります。料金プランなどを見ていて結構混乱したので利用しようとしている方は気を付けてください。
決済システム
PalPalMailerを作成するうえで最も苦戦したのは決済システムの実装でした。色々調べましたがStripeが公式ドキュメントも充実しており、導入しやすそうだったので使用することにしました。しかし公式のドキュメントはSinatraで書かれているため公式のドキュメントはあまり参考にならず、こちらの記事を参考にしました。
StripeはRailsのドキュメントこそ少ないですが仕様や利用法などはきれいにまとめられていて調べて解決することがほとんどだったので今後も使用したいと思います。
最後に
PalPalMailerについてはサイトのフォームからお問い合わせお願いいたします。
あと間違っている点があったら教えていただけると嬉しいです。