GMOのコンビニ決済を実装することになった理由
2024年8月21日にリリースされた中古/新品トレーディングカードを扱う通販サイト「トレオタ」の開発を進めている中で、既存の決済方法にコンビニ決済が含まれていないことが課題となりました。ユーザーにとって利便性の高いコンビニ決済を提供するため、急遽GMO PAYMENT GATEWAYのコンビニ決済APIを利用して、機能を追加することになりました。
GMOの決済APIについて
GMO PAYMENT GATEWAYが提供する決済APIには、以下の4つの主要な機能があります。
- 取引登録: 決済の基本情報を登録する
- 決済実行: 実際に決済を行う
- 支払停止: 決済をキャンセルする
- 取引状態参照: 決済のステータスを確認する
これらのAPIを組み合わせて、コンビニ決済の処理を実現しています。APIドキュメントには詳細な実装手順が記載されており、それに基づいてDjangoプロジェクトに導入しました。
コンビニ決済の処理実装で躓いた箇所
基本的な処理は、以前に実装したクレジットカード決済を参考にして比較的スムーズに進めることができました。しかし、APIに送信するリクエストデータの入力パラメータでエラーが頻発し、その対応に時間がかかりました。
最も多かったエラー: M01036001
特に厄介だったのが、M01036001エラー(「お問い合わせ先が指定されていません。」)です。このエラーが発生した原因は、リクエストデータに含まれるReceiptsDisp11、ReceiptsDisp12、ReceiptsDisp13というフィールドに正しい値を設定しなかったためです。
ReceiptsDispは1から10までのフィールドも存在し、これらはレシートに表示される値を指定します。しかし、1から10までのフィールドと11から13のフィールドは異なる目的で使用されますが、名前が似ているため混同しやすく、番号の違いを見落としてしまうことがありました。その結果、正しくない番号に値を設定してしまい、エラーが頻発しました。
さらに、POSレジに表示される文字列が英数字に対応していないこともエラーの原因の一つでした。このため、フィールドに設定する値を調整し、エラーが出ないように工夫しました。
他のエラーについてはこちらから確認できます。
コンビニ決済のコード作成で参考にしたサイト
基本的には GMO PAYMENT GATEWAYのドキュメントですが下記githubのページも参考にしていました。
djangoで開発していますが、参考にしやすかったです。