こんにちは、@orekyuuです。
2018年11月1日〜11月2日に開催されたRubyWorld Conference 2018に「日本初のキャッシュレス即売会を支えた決済アプリ pixiv PAYの技術」というタイトルでpixiv PAYを一緒に開発している五十嵐さんと登壇しました。 内容のほとんどがinsideで紹介したpixiv MARKETを支えたpixiv PAYの裏側の焼き直しになっています。
以前のinsideで紹介しなかった内容として、タイムアウト対策についての解説も行ったので記事内でも解説します。これは、買い手のアプリがタイムアウトなどの理由で離脱したケースで、売り手と決済結果の表示が剥離する問題です。
買い手が離脱してしまった場合、Railsは200を返しますがクライアントとの接続は切れているのでnginxのアクセスログには499が記録されます。この時買い手には決済失敗として結果が表示されていますが、売り手が決済の状態を確認すると内部の状態としては成功しているので表示が剥離してしまいます。
対策として状態を遷移させる決済APIと状態を遷移させない結果確認APIの2つに分離させることで対応を行いました。
エラーが発生した場合、買い手は結果確認APIを叩いて再度結果を問い合わせることで上の図のように表示が一致するようになりました。
RubyWorld Conference飯
ウェルカムパーティーでは美味しい料理を頂きました!特にローストポークが美味しかったです!🍖🐷
松江のご飯は最高ですね!皆さんも是非松江に行きましょう。
最後に
ピクシブ株式会社では外部に情報を発信して美味しいご飯を食べたいエンジニアを募集しています!