🤑

GMO決済を実装してわかったこと(あなたが迷子にならないために)

に公開

みなさまこんにちは!株式会社エアークローゼットFujisakiです。
この記事は株式会社エアークローゼット Advent Calendar 2025 12日目の記事です。

今回は、日本でよく利用されている GMO Payment Gateway の導入について、
まずは概念的なベーシックをサクッと押さえつつ、実装でつまずきやすいポイントをまとめていきます。

GMO決済を実装してわかったこと

GMO Payment Gateway を触り始めたとき、私は思っていました。

「まあ普通の REST API でしょ?
JSON の API ドキュメントがあって、最新っぽい事例があって……」

現実

  • 公開ドキュメントはほぼ見当たらない
  • あるのは味わい深い PDF(レトロ)
  • ドキュメントはなぜか Ruby が主役
  • パラメータは PascalCase が前提

※補足:GMO への送信パラメータは snake_case / PascalCase のどちらでも受け付けられる場面がありますが、本記事では実装上の一貫性を優先し、すべて PascalCase に統一しています。

第二の混乱:なぜ必ず「Entry」から始まるの?

GMO では、「カードを決済する」前に
まず決済用の「コンテイナー」を作る必要があります。

Exec だけ叩いても何も起きません。
まず Entry。とにかく Entry。

フローA:即時売上(シンプル決済)

Entry(SALES) → Exec

すぐ決済したいときの一番シンプルなパターン。

  1. Entry SALES
const entryPayload = {
  ShopID: shopId,
  ShopPass: shopPass,
  OrderID: 'ORDER-001',
  JobCd: 'SALES',
  Amount: 8000
};

const entryResp = await gmo.post('/payment/EntryTran.idPass', entryPayload);
  1. Exec(即時売上)
await gmo.post('/payment/ExecTran.idPass', {
  AccessID: entryResp.AccessID,
  AccessPass: entryResp.AccessPass,
  MemberID: 'USER123',
  SeqMode: 0,
  CardSeq: 1
});

これで決済完了。シンプルで平和。

フローB:オーソリ → 後日売上(バッチ・サブスク系)

Entry AUTH → Exec → Alter SALES

「とりあえず枠だけ押さえる」パターン。

  1. Entry AUTH
const entryPayload = {
  ShopID: shopId,
  ShopPass: shopPass,
  OrderID: 'ORDER-XYZ',
  JobCd: 'AUTH',
  Amount: 12000
};

const entryResp = await gmo.post('/payment/EntryTran.idPass', entryPayload);
  1. Exec(オーソリのみ)
await gmo.post('/payment/ExecTran.idPass', {
  AccessID: entryResp.AccessID,
  AccessPass: entryResp.AccessPass,
  MemberID: 'USER123',
  SeqMode: 0,
  CardSeq: 1
});
  1. 後日 Alter SALES(売上確定)
await gmo.post('/payment/AlterTran.idPass', {
  ShopID: shopId,
  ShopPass: shopPass,
  AccessID: entryResp.AccessID,
  AccessPass: entryResp.AccessPass,
  JobCd: 'SALES',
  Amount: 5000
});

最後に(文化理解のまとめ)

GMO は独自文化が強いけれど、理解してしまえば安定感は高い。

未来の自分・未来のエンジニア向けメモ:

  • 何をするにもまず Entry
  • 即時決済:Entry(SALES) → Exec
  • 後日課金:Entry(AUTH) → Exec → Alter(SALES)

今年のアドベントカレンダーでも、エアークローゼットのエンジニアたちが様々なテーマで記事を書いていきます。AI活用の具体的な事例や、それに限らず日々の開発で得た知見など、実践的な内容が盛りだくさんです。ぜひ他の記事もチェックしてみてください!

エアークローゼットでは、こうした先進的な取り組みに一緒にチャレンジしてくれるエンジニアを積極的に募集しています。興味を持っていただけた方は、ぜひ エンジニア採用サイト「エアクロクエスト」 をご覧ください。

最後までお読みいただき、ありがとうございました!

Discussion