Stripeで忘年会の集金決済サイトを作った話

この記事は、pyspa Advent Calendar 2019の24日目の記事です。

今年、忘年会を行うにあたり、事前集金のシステムとして以下のような Stripe を使ったクレジットカードでの決済サイトを作成しました。

https://year-end-2019.pyspa.org/

毎年会場で現金を集金していましたが、ドタキャンや万札しか持ってない人へのお釣りの用意など、面倒ごとが多いため昨年から事前決済制にしています。

Stripeではクレジットカードの決済手数料3.6%が発生してしまいますが、5000円の飲み会代金に対して180円程度なのでみんな大人だし問題ないと判断して料金に上乗せしました(同意の上)。

実装は Stripe Checkout に処理を丸投げすることでサーバー側のコードは1行も書かず、Firebase Hosting に HTML と JavaScript のホスティングをするだけで完結していて、実装自体は30分もあれば1から決済サイトを立ち上げるところまで可能です。

Stripe 側で以下のような商品(Product)を作成し、

画面に表示される JavaScript のコードを貼り付けるだけで決済の部分は完成します。

また、Checkout は iPhone あれば Apple Pay が、Android であれば Google Pay に対応しているのでクレジットカードが端末に登録されていれば基本的にはカード番号を入力することもなく決済可能になっています。

運用してみてわかった課題

忘年会当日に出金を間に合わせるため特定の日時に出金申請をし、当日までにこちらの銀行口座に着金しないと一時的に数十万円の持ち出しが発生することと、今年初めて Stripe での運用だったので、確実に出金できる確信も持てなかったため数日早めに出金申請をすることにしました。

ドタキャンは避けたいのですが、赤字にならなければ返金を拒む理由もないため返金は可能としています。

通常のECサイトであれば商品が売れ続ける限りキャッシュフローがあるため返金のためのお金が途切れることはないのですが、忘年会の決済はそうではなく、全額出金してしまうとそれ以降に返金処理が発生した場合、(おそらく)こちらから Stripe に銀行振り込みすることになるためできるだけギリギリまで待ってから出金しました。また、Stripe では決済されてから出金可能になるまで数日かかるため、直前に決済されたお金の出金についても少し気を使いました。

幸い、出金後に返金は発生しなかったのですが、出金される額は決済手数料の3.6%が引かれた金額なので、大した金額ではないですが入金額とズレが生じるため若干めんどくさい問題が発生しそうでした。

ともあれ、大きな問題は発生せず、クレカの事前決済最高となったので来年もフローを改善したもので運用したいと思います。

おわりに

忘年会向け決済サイトを構築するほど各種クレジットカードや決済システム、全銀ネットワークのことは好きなので、実装の有無に関わらず決済導入の相談などについても、お仕事は何でも随時募集中です。ご興味のある方はご連絡ください。変な会社に相談するよりはまともな提案・お繋ぎができるかと思います。

なお、ここまでやっておいてアレですが、溶連菌に感染したため忘年会当日は家で寝ていました。