Game8 Store – Developer Center
ホーム › 技術仕様 & API

API仕様書

本ドキュメントでは、Game8 Storeと連携するためのAPI仕様を説明します。

API一覧

パブリッシャー様側で実装いただくAPI

Game8 Store からリクエストが送信されます。

API名 / API Nameエンドポイント / Endpointメソッド / Method必須 / Required説明 / Description
アイテム購入可否チェック / Purchase Eligibility Check/checkGET必須ユーザーが指定アイテムを購入可能かを確認
アイテム購入登録 / Register Purchase/registerPOST必須購入完了後、ゲーム内アイテムを付与
プレイヤー情報取得 / Retrieve Player Information/user_infoGET必須ゲーム内IDをもとに、プレイヤー名とレベルの情報を取得。
在庫チェック / Inventory Check/stockGET推奨指定アイテムの在庫状況を確認

Game8 Store側で提供するAPI

パブリッシャー様からGame8 Storeへリクエストを送信します。

API名 / API Nameエンドポイント / Endpointメソッド / Method必須 / Required説明 / Description
注文照会 / Order Verify/orders/verifyGET任意paid_transaction_id を指定して注文の状態を照会

1. 共通仕様

項目内容
ホスト Game8提供API: <Game8が指定>
パブリッシャー提供API: <パブリッシャーが指定>
プロトコルHTTPS
文字コードUTF-8

1.1. リクエスト仕様

リクエストヘッダー

キー内容
AuthorizationBearer <ACCESS_TOKEN>認証情報
Content-Typeapplication/jsonコンテンツタイプ
X-Signature<SIGNED_DATA>署名検証用の署名

1.2. レスポンス仕様

共通レスポンスヘッダー

キー
Content-Typeapplication/json

共通レスポンスボディ

キー内容
request_idstring一意のリクエストID。トラブルシューティングなどでリクエストの追跡をする際に使用。
timestampstring (ISO8601)レスポンスのタイムスタンプ
result_codestring結果コード
messagestringメッセージ

1.3. X-Signatureの設定

リクエストが正規のものか判定するため、ゲームごとに発行された秘密鍵を使って署名し、リクエストヘッダーに設定します。

署名の設定方法

  1. GETの場合はクエリ文字列、POSTの場合はリクエストボディの内容でダイジェストを計算します。ダイジェストは、秘密鍵のシークレットを利用してHMAC-SHA256で算出します。
  1. 算出したダイジェストをBase64エンコードして、リクエストヘッダーのX-Signatureに設定します。

署名の検証方法

  1. GETの場合はクエリ文字列、POSTの場合はリクエストボディの内容でダイジェストを計算します。ダイジェストは、秘密鍵のシークレットを利用してHMAC-SHA256で算出します。
  1. 算出したダイジェストをBase64エンコードして、リクエストヘッダーのX-Signatureの内容と一致するか検証します。
    1. 一致する場合は、正規なリクエストとして処理を実施します。
    2. 不一致の場合は、不正なリクエストとしてエラー返却します。

秘密鍵の取得方法

秘密鍵はGame8, Inc.にて作成し、共有いたします。

2. パブリッシャー様側で実装いただくAPI詳細

2.1. アイテム購入可否チェック(GET /check)必須

概要

ゲーム内アイテムが購入可能かどうかを確認し、年齢制限や購入上限を考慮した結果を返す。
また、数量限定などのアイテム購入時に決済までのタイムラグによる購入停止を避けるために、transaction id を設定することで対象アイテムを確保。

リクエスト仕様

項目内容
メソッドGET
エンドポイント/check
プロトコルHTTPS
コンテンツタイプapplication/json

リクエストヘッダー

キー内容
AuthorizationBearer <ACCESS_TOKEN>認証情報
Content-Typeapplication/jsonコンテンツタイプ
X-Signature<SIGNED_DATA>署名検証用の署名

クエリパラメータ

キー必須説明
gamestringGame8 Store内で発番された、ゲームのユニークID
userstringゲーム内で発番された、ゲーム内のユーザーユニークID
transaction_idstring取引を一意に特定する識別子
itemstringゲーム内で発番された、購入対象のアイテムID (
item_categorystring購入対象アイテムの種別
paid : 有料商品(通常の課金アイテム)
free : 無料商品(プレゼント・キャンペーン配布品など、価格が0円の商品)
priceinteger購入対象アイテムの商品金額(税込・円)。割引適用前の定価。
selling_priceintegerパブリッシャー負担の割引適用後の購入代金(税込・円)。割引がない場合は price と同額。
billing_amountinteger購入代金からポイントやクーポン利用等を差し引いた最終的な決済金額(税込・円)。適用がない場合は selling_price と同額。

リクエスト例

GET /check HTTP/1.1
Host: <パブリッシャー任意>
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json
X-Signature: <SIGNED_DATA>
Query Parameter:
  ?game=game123&user=user456&transaction_id=txn_123456&item=item789&item_category=paid&price=500

レスポンス仕様

レスポンスボディ

キー説明
request_idstring一意のリクエストID
timestampstring (ISO8601)レスポンスのタイムスタンプ
result_codestring結果コード
messagestringメッセージ
purchasablestring購入可能:available
購入不可:unavailable
メンテナンス中:maintenance
age_categorystringユーザーの年齢区分。例として under_15 / under_18 / adult / under_17 / over_17 などがありますが、必要に応じて他の値を設定できます。
account_limitObject | nullアカウントの購入制限額。購入制限額がなければnull
stockObject | null在庫情報。無制限在庫の場合はnull
requested_priceintegerリクエストされたアイテムの価格(円)

account_limitの構造

キー説明
totalinteger購入制限額(円)
remaininginteger残り購入可能額(円)
reset_atstring (ISO8601) | null購入制限の解除予定日時。未定の場合は null

stockの構造

キー説明
totalinteger総在庫数
remaininginteger残り在庫数
restock_intervalstring日ごと:daily
週ごと:weekly
月ごと: monthly
入荷予定が未定の場合はnull
restock_atstring (ISO8601) | null次回入荷予定日時(予定がある場合)。未定または無制限の場合は null

レスポンス例(購入可能)

{
  "request_id": "abc123",
  "timestamp": "2025-02-04T12:34:56Z",
  "result_code": "PUB0000",
  "message": "購入可能",
  "purchasable": "available",
  "age_category": "under_15",
  "account_limit": {
    "total": 10000,
    "remaining": 9000,
    "reset_at": "2025-03-01T00:00:00Z"
  },
  "stock": {
    "total": 10,
    "remaining": 9,
    "restock_interval": "daily",
    "restock_at": "2025-02-05T00:00:00Z"
  },
  "requested_price": 500
}

レスポンス例(購入不可 - 年齢確認未提出)

{
  "request_id": "abc124",
  "timestamp": "2025-02-04T12:35:00Z",
  "result_code": "PUB2006",
  "message": "年齢確認が行われていないため購入できません。",
  "purchasable": "unavailable",
  "age_category": "unset",
  "account_limit": null,
  "stock": null,
  "requested_price": 500
}

レスポンス例(購入不可 - 購入制限オーバー)

{
  "request_id": "abc125",
  "timestamp": "2025-02-04T12:36:00Z",
  "result_code": "PUB2005",
  "message": "購入制限の上限に達しています。",
  "purchasable": "unavailable",
  "age_category": "under_18",
  "account_limit": {
    "total": 10000,
    "remaining": 0,
    "reset_at": "2025-03-01T00:00:00Z"
  },
  "stock": {
    "total": 10,
    "remaining": 9,
    "restock_interval": "daily",
    "restock_at": "2025-02-05T00:00:00Z"
  },
  "requested_price": 500
}

レスポンス例(購入不可 - アイテム未販売)

{
  "request_id": "abc125",
  "timestamp": "2025-02-04T12:36:00Z",
  "result_code": "PUB2007",
  "message": "対象アイテムは販売不可になっています。",
  "purchasable": "unavailable",
  "age_category": "under_18",
  "account_limit": {
    "total": 10000,
    "remaining": 9000,
    "reset_at": "2025-03-01T00:00:00Z"
  },
  "stock": {
    "total": 10,
    "remaining": 9,
    "restock_interval": "daily",
    "restock_at": "2025-02-05T00:00:00Z"
  },
  "requested_price": 500
}

レスポンス例(購入不可 - メンテナンス中)

{
  "request_id": "abc125",
  "timestamp": "2025-02-04T12:36:00Z",
  "result_code": "PUB6000",
  "message": "サービスメンテナンス中です。",
  "purchasable": "maintenance",
  "age_category": "under_18",
  "account_limit": {
    "total": 10000,
    "remaining": 9000,
    "reset_at": "2025-03-01T00:00:00Z"
  },
  "stock": {
    "total": 10,
    "remaining": 9,
    "restock_interval": "daily",
    "restock_at": "2025-02-05T00:00:00Z"
  },
  "requested_price": 500
}

2.2. アイテム購入実績登録(POST /register)必須

概要

購入完了後、ゲーム内アイテムを増加させるための処理。

リクエスト仕様

項目内容
メソッドPOST
エンドポイント/register
プロトコルHTTPS
コンテンツタイプapplication/json

リクエストヘッダー

キー内容
AuthorizationBearer <ACCESS_TOKEN>認証情報
Content-Typeapplication/jsonコンテンツタイプ
X-Signature<SIGNED_DATA>署名検証用の署名

リクエストボディ

キー必須説明
gamestringGame8 Store内で発番された、ゲームのユニークID
userstringゲーム内で発番された、ゲーム内のユーザーユニークID
itemstringゲーム内で発番された、購入対象のアイテムID (
transaction_idstring取引を一意に特定する識別子
item_categorystring購入対象アイテムの種別
paid : 有料商品(通常の課金アイテム)
free : 無料商品(プレゼント・キャンペーン配布品など、価格が0円の商品)
item_namestring購入対象アイテムの名称(例;ジェム100個パック)
priceinteger購入対象アイテムの商品金額(税込・円)。割引適用前の定価。
selling_priceintegerパブリッシャー負担の割引適用後の購入代金(税込・円)。割引がない場合は price と同額。
billing_amountinteger購入代金からポイントやクーポン利用等を差し引いた最終的な決済金額(税込・円)。適用がない場合は selling_price と同額。
purchased_atstring (ISO8601)購入日時
refstring | null流入元のドメイン名(例: game8.jp)。流入元が不明な場合は null。
payment_methodstring | null決済方法。クレジットカードはCard、その他は決済サービス名(メルペイ、PayPal等)。全額ポイント払いなど決済サービスを経由しない場合はnull。
contentsarrayアイテムに含まれる内容物のリスト

contents 配列の構造

キー必須説明
content_idstringitem にサフィックスをつけたアイテム内内容物のIDを自動付与(例:pack001-1
content_namestringアイテム内の内容物の名称(例:ジェム)
quantityintegerアイテム内の内容物の個数(例:1000)

リクエスト例

POST /register HTTP/1.1
Host: <パブリッシャー任意>
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json
X-Signature: <SIGNED_DATA>

{
  "game": "game123",
  "user": "user456",
  "transaction_id": "txn789",
  "item": "pack001",
  "item_category": "paid",
  "item_name": "ジェム1000個",
  "price": 5000,
  "selling_price": 5000,
  "billing_amount": 5000,
  "purchased_at": "2025-02-04T12:36:00Z",
  "ref": "game8.jp",
  "payment_method": "Card",
  "contents": [
    {
      "content_id": "pack001-1",
      "content_name": "ジェム",
      "quantity": 1000
    },
    {
      "content_id": "pack001-2",
      "content_name": "おまけ金貨",
      "quantity": 100
    }
  ]
}

レスポンス仕様

レスポンスボディ

キー説明
request_idstring一意のリクエストID
timestampstring (ISO8601)レスポンスのタイムスタンプ
result_codestring結果コード
messagestringメッセージ
item_grantedbooleanゲーム内アイテムが付与されたか (true / false)

レスポンス例(成功)

{
  "request_id": "def456",
  "timestamp": "2025-02-04T12:36:00Z",
  "result_code": "PUB0000",
  "message": "購入実績を登録しました。",
  "item_granted": true
}

レスポンス例(失敗 - ユーザー不明)

{
  "request_id": "def458",
  "timestamp": "2025-02-04T12:38:00Z",
  "result_code": "PUB3002",
  "message": "指定されたユーザーは存在しません。",
  "item_granted": false
}

レスポンス例(失敗 - 登録済み)

{
  "request_id": "def458",
  "timestamp": "2025-02-04T12:38:00Z",
  "result_code": "PUB3004",
  "message": "指定されたTransactionIDはすでに登録済みです。",
  "item_granted": false
}

2.3. プレイヤー情報取得(GET /user_info)必須

概要

ユーザーが入力したゲーム内IDをもとに、プレイヤー名とレベルの情報を取得する。取得した情報を購入確認画面で表示することで、ユーザーは入力したIDの正確性と、ゲームとの接続が正常であることの確認ができる。

リクエスト仕様

項目内容
メソッドGET
エンドポイント/user_info
プロトコルHTTPS
コンテンツタイプapplication/json

リクエストヘッダー

キー内容
AuthorizationBearer <ACCESS_TOKEN>認証情報
Content-Typeapplication/jsonコンテンツタイプ
X-Signature<SIGNED_DATA>署名検証用の署名

クエリパラメータ

キー必須説明
gamestringGame8 Store内で発番された、ゲームのユニークID
userstringゲーム内で発番された、ゲーム内のユーザーユニークID

リクエスト例

GET /user_info HTTP/1.1
Host: <パブリッシャー任意>
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json
X-Signature: <SIGNED_DATA>
Query Parameter:
  ?game=game123&user=Player5678

レスポンス仕様

レスポンスボディ

キー必須説明
request_idstring一意のリクエストID
timestampstring (ISO8601)レスポンスのタイムスタンプ
result_codestring結果コード
messagestringメッセージ
user_namestringプレイヤー名(マスク可)
user_levelintegerプレイヤーレベルやランク。ゲーム内に該当情報が存在しない場合は-1を返す。

user_name のマスク例

プレイヤー名マスクしたuser_name
aa*a
aaa*aa
aaaa**aa
aaaaa***aa

レスポンス例(成功)

{
  "request_id": "abc123",
  "timestamp": "2025-03-12T14:30:00Z",
  "result_code": "PUB0000",
  "message": "取得成功",
  "user_name": "****rX",
  "user_level": 45
}

レスポンス例(失敗 - プレイヤーIDが見つからない)

{
  "request_id": "abc124",
  "timestamp": "2025-03-12T14:31:00Z",
  "result_code": "PUB2004",
  "message": "プレイヤーIDが見つかりません。"
}

レスポンス例(失敗 - アカウントがBANなどにより非アクティブ状態)

{
  "request_id": "abc124",
  "timestamp": "2025-03-12T14:31:00Z",
  "result_code": "PUB2008",
  "message": "アカウント停止により購入不可。"
}

レスポンス例(失敗 - サーバーメンテナンス中)

{
  "request_id": "abc125",
  "timestamp": "2025-03-12T14:32:00Z",
  "result_code": "PUB6000",
  "message": "サービスメンテナンス中です。"
}

2.4. 在庫チェック(GET /stock)推奨

概要

指定されたアイテムの在庫状況を確認し、購入可能な残数量を返す。
数量限定商品やキャンペーン商品などの在庫管理が必要なアイテムに対して、ユーザーへの在庫状況表示や、購入フロー開始前の事前チェックに使用する。

リクエスト仕様

項目内容
メソッドGET
エンドポイント/stock
プロトコルHTTPS
コンテンツタイプapplication/json

リクエストヘッダー

キー内容
AuthorizationBearer <ACCESS_TOKEN>認証情報
Content-Typeapplication/jsonコンテンツタイプ
X-Signature<SIGNED_DATA>署名検証用の署名

クエリパラメータ

キー必須説明
gamestringGame8 Store内で発番された、ゲームのユニークID
userstringゲーム内で発番された、ゲーム内のユーザーユニークID
transaction_idstring取引を一意に特定する識別子
itemsstringゲーム内で発番された、購入対象のアイテムID (
カンマ区切りで複数指定

リクエスト例

GET /stock HTTP/1.1
Host: <パブリッシャー任意>
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json
X-Signature: <SIGNED_DATA>
Query Parameter:
	?game=game123&user=user456&transaction_id=txn_123456&items=item789,item012

レスポンス仕様

レスポンスボディ

キー説明
request_idstring一意のリクエストID
timestampstring (ISO8601)レスポンスのタイムスタンプ
result_codestring結果コード
messagestringメッセージ
stockObject[]在庫情報

stockの構造

キー説明
itemstringゲーム内で発番された、購入対象のアイテムID (
totalinteger総在庫数。無制限の場合は -1 を返す
remaininginteger残り在庫数。無制限の場合は -1 を返す
restock_atstring (ISO8601) | null次回入荷予定日時(予定がある場合)。未定または無制限の場合は null

レスポンス例(在庫あり)

{
	"request_id": "abc123",
	"timestamp": "2025-02-04T12:34:56Z",
	"result_code": "PUB0000",
	"message": "成功",
	"stock": [
	  {
		  "item": "item789",
		  "total": 10,
		  "remaining": 8,
		  "restock_at": null
	  }
	]
}

レスポンス例(在庫なし)

{
	"request_id": "abc124",
	"timestamp": "2025-02-04T12:35:00Z",
	"result_code": "PUB2009",
	"message": "アイテムの購入数制限の上限に達している",
	"stock": [
	  {
		  "item": "item789",
		  "total": 10,
		  "remaining": 0,
		  "restock_at": null
	  }
	]
}

レスポンス例(無制限在庫)

{
	"request_id": "abc124",
	"timestamp": "2025-02-04T12:36:00Z",
	"result_code": "PUB0000",
	"message": "成功",
	"stock": [
	  {
	    "item": "item789",
		  "total": -1,
		  "remaining": -1,
		  "restock_at": null
	  }
	]
}

3. Game8 Store側で提供するAPI詳細

3.1. 注文照会(GET /orders/verify)利用任意

概要

/register APIで通知した注文の状態を、paid_transaction_id を使って照会するためのAPIです。
/register APIで使用した transaction_id と同一の値を paid_transaction_id として指定してください。
以下のユースケースを想定しています:

  • /register 受信後の注文状態の確認
  • API呼び出し失敗時の再照会

これにより、通知(/register)+ 照会(/orders/verify)の二重確認が可能になります。

本APIはGame8 Store側で常時稼働しており、事前の申請は不要です。パブリッシャー様側でエンドポイントを用意する必要はなく、利用する場合は本APIを呼び出す処理のみ実装いただきます。決済フローに組み込んでいない場合でも、リクエストを送信すれば注文の決済ステータスを確認できます(利用は任意)。

リクエスト仕様

項目内容
メソッドGET
エンドポイント/api/public/marketplace/publishers/{publisher_slug}/games/{game_slug}/orders/verify
プロトコルHTTPS
コンテンツタイプapplication/json

リクエストヘッダー

キー内容
AuthorizationBearer <ACCESS_TOKEN>認証情報
X-Signature<SIGNED_DATA>署名検証用の署名

クエリパラメータ

キー必須説明
paid_transaction_idstring/register APIで使用した transaction_id と同一の値。英数字・ハイフン・アンダースコアのみ使用可能。

リクエスト例

GET /api/public/marketplace/publishers/example-publisher/games/example-game/orders/verify HTTP/1.1
Host: <Game8が指定>
Authorization: Bearer <ACCESS_TOKEN>
X-Signature: <SIGNED_DATA>
Query Parameter:
  ?paid_transaction_id=txn_123456

レスポンス仕様

レスポンスボディ(成功時)

キー説明
request_idstring一意のリクエストID
timestampstring (ISO8601)レスポンスのタイムスタンプ
result_codestring結果コード
messagestringメッセージ
paid_transaction_idstring注文のトランザクションID
statusstring注文ステータス(下記参照)
item_idstringパブリッシャー側のアイテムID
priceinteger購入対象アイテムの商品金額(税込・円)。割引適用前の定価。
selling_priceintegerパブリッシャー負担の割引適用後の購入代金(税込・円)。割引がない場合は price と同額。
billing_amountinteger購入代金からポイントやクーポン利用等を差し引いた最終的な決済金額(税込・円)。適用がない場合は selling_price と同額。
purchased_atstring (ISO8601) | null購入日時。決済処理中(pending)の場合は null

statusの値

説明
pending決済処理中
payment_confirmed決済確認済み(決済は完了したがアイテム付与処理がまだ完了していない状態)
completed完了(アイテム付与済み)
cancelledキャンセル済

レスポンス例(成功 - 完了済み注文)

{
  "request_id": "abc123",
  "timestamp": "2025-04-01T12:00:00+09:00",
  "result_code": "PUB0000",
  "message": "成功",
  "paid_transaction_id": "txn_123456",
  "status": "completed",
  "item_id": "item789",
  "price": 1000,
  "selling_price": 900,
  "billing_amount": 800,
  "purchased_at": "2025-04-01T12:00:00+09:00"
}

レスポンス例(成功 - 決済処理中)

{
  "request_id": "abc124",
  "timestamp": "2025-04-01T12:00:01+09:00",
  "result_code": "PUB0000",
  "message": "成功",
  "paid_transaction_id": "txn_123456",
  "status": "pending",
  "item_id": "item789",
  "price": 1000,
  "selling_price": 1000,
  "billing_amount": 1000,
  "purchased_at": null
}

エラーレスポンス

エラー時は共通レスポンスボディのみが返却されます:

{
  "request_id": "<リクエストID>",
  "timestamp": "<タイムスタンプ>",
  "result_code": "<エラーコード>",
  "message": "<エラーメッセージ>"
}
HTTPステータスresult_codeメッセージ説明
400PUB2001必須パラメータが不足しています / パラメータが不正ですpaid_transaction_id が未指定、フォーマット不正、またはパス識別子が不正
401PUB1002認証または署名検証に失敗しましたアクセストークンまたは署名が不正
403PUB1003他パブリッシャー・他ゲームの注文にはアクセスできません自社以外の注文への照会
404PUB3001指定された注文が見つかりません該当する注文が存在しない
429-Rate limit exceeded. Please try again later.レート制限超過(60リクエスト/分)。レスポンスボディは {"error": "..."} 形式
500PUB4000予期しないエラーが発生しましたサーバー内部エラー
503PUB4001サービスに接続できません一時的なネットワーク障害。時間をおいて再試行してください

レスポンス例(エラー - 認証失敗)

{
  "request_id": "abc125",
  "timestamp": "2025-04-01T12:00:02+09:00",
  "result_code": "PUB1002",
  "message": "認証または署名検証に失敗しました"
}

レスポンス例(エラー - 注文未発見)

{
  "request_id": "abc126",
  "timestamp": "2025-04-01T12:00:03+09:00",
  "result_code": "PUB3001",
  "message": "指定された注文が見つかりません"
}

4. エラーハンドリング

4.1. エラーコード一覧

エラーコード説明対応策
PUB0000成功-
PUB1000不正なリクエストフォーマットリクエストの構造や必須パラメータを確認し、正しい形式で送信する
PUB1001認証情報が不足しているAuthorization ヘッダーに正しい Bearer <ACCESS_TOKEN> を設定する
PUB1002無効なアクセストークンアクセストークンの有効期限を確認し、必要に応じて再発行する
PUB1003アクセス権限が不足しているAPIエンドポイントへの適切な権限があるか確認する
PUB1004署名内容が不一致署名に利用している秘密鍵のシークレットが正しいことを確認する
PUB1005処理済みのリクエスト重複したrequest_id を送信しないようにする
PUB2001必須パラメータが不足している必須パラメータを確認し、リクエストを修正する
PUB2002パラメータの型が無効例: pricestring を渡している場合、整数値に修正する
PUB2003パラメータの値が不正許可されていない値や範囲外の値を送信していないか確認する
PUB2004該当するデータが存在しない存在する gameuser を指定しているか確認する
PUB2005年齢による購入金額制限の上限に達しているaccount_limit.remaining の値を確認し、制限を超えていないか確認する
PUB2006年齢確認が行われていないユーザーにゲーム内での年齢確認を促す
PUB2007アイテム販売中止ストア側の販売アイテムの調整を営業・開発チームへ問い合わせる
PUB2008アカウント停止により購入不可-
PUB2009アイテムの購入数制限の上限に達している購入履歴を確認し、制限を超えていないか確認する
PUB3001無効な取引IDtransaction_id が正しいか確認する
PUB3002指定されたユーザーが存在しないuser が正しいか確認する
PUB3003指定されたアイテムが存在しないitem を確認し、正しいものを指定する
PUB3004登録済み取引IDtransaction_id が正しいか確認する
PUB4000サーバー内部エラーサーバー側の問題の可能性があるため、一定時間後に再試行する
PUB4001一時的なシステム障害再試行する(推奨: 5秒後にリトライ)
PUB5000不明なエラー詳細なエラーメッセージを確認し、開発チームへ問い合わせる
PUB6000メンテナンス中サービス停止中として一定時間後に再試行する

4.2. エラーハンドリングの推奨フロー

  1. result_code を確認
    • PUB0000(成功)であれば正常処理。
    • それ以外の場合、エラーの種類を判定。
  2. クライアント側で修正可能なエラーか確認
    • PUB1000 系, PUB2000 系はリクエスト内容の修正で対応可能。
    • PUB3000 系はデータの整合性を確認。
  3. リトライ可能なエラーか確認
    • PUB4000, PUB4001 は一時的なエラーの可能性があるため、数秒後にリトライ。
  4. エラーメッセージを記録・通知
    • 不明なエラー(PUB5000)はログを残し、開発チームに報告。

4.3. リトライポリシー

エラーコードリトライ間隔最大リトライ回数備考
PUB40005秒後3回サーバー内部エラーのため、短時間で解消する可能性あり
PUB400110秒後5回一時的なシステム障害のため、長めの間隔を空ける
PUB5000なし0回不明なエラーは即時報告

このエラーハンドリングリストを参考に、適切なエラーハンドリングを実装してください。