ボクココ

個人開発に関するテックブログ

まだ WebPay から移設をしていない方へ

ども、 @kimihom です。

WebPay がサービス終了宣言を出してからおよそ半年が経とうとしている。いよいよ2017年04月30日までというデッドラインが近づいてきている。

「WebPay からどこかへ移った系のエントリーが出てくるのを待つか」 と思って後回しにしている読者の方に一言、伝えておかなければならないことがある。

今すぐ申請を始めるべき!!

私も甘くみていた側面があるのだが、WebPay の審査が通ったからといって、他の決済サービスの審査期間が短くなるということではない。つまり、そもそも次なる決済サービスを本番サービスに反映しようにもその審査時間であるおよそ 20 営業日を待たないといけないのだ。Visa/Master の2ブランドだけでいいなら、1週間以内に本番反映できるようになるが、それ以外のカードをサポートするには1ヶ月の余裕を持った方がいいだろう。

1ヶ月・・。そう今日が 3月2日だとして、もうかなりギリギリのラインだ。当然、その決済サービスの審査に"落ちる"ということもありえなくはない。そしたら他のクレジットカード決済サービスを探すか、決済ブランドを減らすかの選択をしなければならないだろう。今から申請して審査に落ちたとなれば、その猶予はもはや残っていない。

本番で審査しようとする決済サービスを使うか使わないか関係なく今すぐ本番申請を始めよう。さもなくば、あなたのサービスが一時的に決済のできない状態が生まれてしまい、とんでもなく大変な事態に見舞われるだろう。

実際に移行してみて

実際に月額課金モデルを実装する上では以下の記事にまとめている。もしよければ以下も読んでいただきたい。

www.bokukoko.info

私のサービスの場合、単発課金の API をこちらで定期的に呼ぶという実装にしている。この設計にしたおかげで、WebPay から他の決済サービスに移設する上で必要になったコードを最小限に抑えることができた。これは不幸中の幸いだった。

実装で注意しなければならないのは、一時的に WebPay と移設先決済サービスを混在させる必要があるということ。深夜メンテナンスをしてガッと変えたいところだが、 WebPay が時間指定でのカード移設をしてくれないという悲しいサポートのため、この実装が必要になる。

もうちょっと具体的な実装方法についてご紹介しよう。

WebPay と外部サービスを混在させた実装

きっと、WebPay を使っているなら、 Customer のオブジェクト ID をデータベースに保存していることだろう。webpay_token とする。そんで今回から新しく別サービスのトークンを使うことになるので、hoge_token を新しく作ることになるだろう。

WebPay から移行する期間に入るまでに、新規カード登録は全て、新しい決済サービス側で登録させるという実装をする。つまり、新規カード登録は webpay_token に保存するのではなく、 hoge_token に保存するようにさせる。

んで移行期間中の決済に関しては、全ての決済においてhoge_token が存在すれば、そのサービスで決済をし、もし存在しなくてwebpay_token が存在すれば WebPay で決済するという実装をする必要がある。

WebPay 側で移行が終われば、データベースに保存していた webpay_tokenhoge_token にコピーするっていう作業を実施することで、それ以降の決済は全て移行先の決済サービスで行われるようになるだろう。

それが完了次第、 webpay_token 自体や、 if 文で分岐させていた WebPay 決済部分のコードを消して、決済サービスの移行が完全に完了したことになる。これで一件落着だ。

Subscription の移行は至難の技

WebPay の Subscription の仕組みから、移設先の Subscription の仕組みに移設するのはなかなかの困難を伴うようだ。私自身はやっていないので何とも言えないが、その難しさは想像するに容易い。

もし WebPay の Subscription の仕組みを使っていて、まだ何も行動していないという方がいたら、それはかなりヤバイ状態に既にいることを認識しておく必要がある。私から言えるのは、ともかく頑張れということだ。

終わりに

意外と WebPay からの移行記事が全然出回っていないので、私から警告の記事を書かせていただいた。

全てのサービスが正しく移設できることを祈っている。