Checks if a user is eligible to purchase a specified item Register Purchase
/register
POST
1 image
Grants in-game items after purchase completion
Retrieve Player Information
/user_info
GET
1 image
Retrieves the player's name and level based on their in-game ID.
Inventory Check
/stock
GET
Recommended
Checks the stock status of a specified item
APIs Provided by Game8 Store
Publishers send requests to these APIs.
API Name
Endpoint
Method
Required
Description
Order Verify / Order Verify
/orders/verify
GET
Optional
/register paid_transaction_id
1. Common Specifications
Field
Details
Host
Game8-provided APIs: <Determined by the Game8> Publisher-provided APIs: <Determined by the publisher>
Protocol
HTTPS
Character Encoding
UTF-8
1.1. Request Specifications
Request Headers
Key
Value
Details
Authorization
Bearer <ACCESS_TOKEN>
Authentication information
Content-Type
application/json
Content type
X-Signature
<SIGNED_DATA>
Signature for verification
1.2. Response Specifications
Common Response Headers
Key
Value
Content-Type
application/json
Common Response Body
Key
Value
Details
request_id
string
A unique request ID. Used for tracking requests during troubleshooting.
timestamp
string (ISO8601)
Response timestamp
result_code
string
Result code
message
string
Message
1.3. Configuring the X-Signature
To verify whether a request is legitimate, a game-specific shared secret key is used to sign the request, which is then included in the request header for validation.
Signature Generation Process
Calculate the digest based on the query string for GET requests and the request body for POST requests. The digest is calculated using HMAC-SHA256 with the shared secret key.
Encode the computed digest in Base64 and set it in the request header as
Signature Verification Process
Calculate the digest based on the query string for GET requests and the request body for POST requests. The digest is calculated using HMAC-SHA256 with the shared secret key.
Encode the computed digest in Base64 and compare it with the
If they match, process the request as legitimate.
If they do not match, return an error as an invalid request.
How to Obtain the Secret Key
Game8, Inc. will generate and share the private key with you.
Checks whether an in-game item can be purchased, considering factors such as age restrictions and purchase limits. To prevent purchase failures due to time lag in payment processing for limited-quantity items, a
Request Specifications
Field
Details
Method
GET
Endpoint
/check
Protocol
HTTPS
Content type
application/json
Request Headers
Key
Value
Details
Authorization
Bearer <ACCESS_TOKEN>
Authentication information
Content-Type
application/json
Content type
X-Signature
<SIGNED_DATA>
Signature for verification
Query Parameter
Key
Type
1 image
Description
game
string
✅
A unique game ID issued within Game8 Store
user
string
✅
Unique in-game user ID issued within the game
transaction_id
string
✅
Identifier that uniquely identifies a transaction
item
string
✅
Unique ID of the item to be purchased within the game (?)
item_category
string
✅
Type of item to be purchased paid : Paid products (regular purchasable items) free : Free products (items priced at 0 JPY, such as gifts and campaign giveaways)
price
integer
✅
Standard price of the item (tax included, JPY). List price before any discounts.
selling_price
integer
✅
Selling price after publisher-borne discounts (tax included, JPY). Equals price if no discount is applied.
billing_amount
integer
✅
Final billing amount after deducting points, coupons, and other adjustments from the selling price (tax included, JPY). Equals selling_price if none are applied.
Request Example
GET /check HTTP/1.1
Host: <Optional (set by the publisher)>
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
Response Specifications
Response Body
Key
Type
Description
request_id
string
Unique request ID
timestamp
string (ISO8601)
Response timestamp
result_code
string
Result code
message
string
Message
purchasable
string
Purchase status:available Purchase not allowed:unavailable Under maintenance:maintenance
age_category
string
User's age category. Examples include under_18 / adult / under_17 / under_17 / over_17 are examples; you can set other values as needed.
account_limit
Object | null
Account purchase limit. Null if no purchase limit applies.
stock
Object | null
Stock information. Null if unlimited stock.
requested_price
integer
Requested item price (tax included, JPY)
Structure of account_limit
Key
Type
Description
total
integer
Purchase limit amount (JPY)
remaining
integer
Remaining purchase allowance (JPY)
reset_at
string (ISO8601) | null
Scheduled date/time when the purchase limit resets. Null if not scheduled.
stock Structure
Key
Type
Description
total
integer
Total stock quantity
remaining
integer
Remaining stock quantity
restock_interval
string
Restock interval:daily Per week:weekly Per month: monthly null if the restock date is undetermined
restock_at
string (ISO8601) | null
Scheduled date/time for the next restock (if applicable). Null if not scheduled or unlimited.
Response Example (Not Purchasable - Age Verification Not Submitted)
{
"request_id": "abc124",
"timestamp": "2025-02-04T12:35:00Z",
"result_code": "PUB2006",
"message": "Purchase is not allowed because age verification has not been completed.",
"purchasable": "unavailable",
"age_category": "unset",
"account_limit": null,
"stock": null,
"requested_price": 500
}
Response Example (Not Purchasable - Purchase Limit Exceeded)
Response Example (Not Purchasable - Item Not Available for Sale)
{
"request_id": "abc125",
"timestamp": "2025-02-04T12:36:00Z",
"result_code": "PUB2007",
"message": "The target item is not available for sale.",
"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
}
Response Example (Not Purchasable - Under Maintenance)
{
"request_id": "abc125",
"timestamp": "2025-02-04T12:36:00Z",
"result_code": "PUB6000",
"message": "The service is currently under maintenance.",
"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. Register Purchase (POST /register)1 image
Overview
Processes the addition of in-game items after purchase completion.
Request Specifications
Field
Details
Method
POST
Endpoint
/register
Protocol
HTTPS
Content type
application/json
Request Headers
Key
Value
Details
Authorization
Bearer <ACCESS_TOKEN>
Authentication information
Content-Type
application/json
Content type
X-Signature
<SIGNED_DATA>
Signature for verification
Request Body
Key
Type
1 image
Description
game
string
✅
A unique game ID issued within Game8 Store
user
string
✅
Unique in-game user ID issued within the game
item
string
✅
Unique ID of the item to be purchased within the game (?)
transaction_id
string
✅
Identifier that uniquely identifies a transaction
item_category
string
✅
Type of item to be purchased paid : Paid products (regular purchasable items) free : Free products (items priced at 0 JPY, such as gifts and campaign giveaways)
item_name
string
✅
Name of the purchased item (e.g., "100 Gem Pack")
price
integer
✅
Standard price of the item (tax included, JPY). List price before any discounts.
selling_price
integer
✅
Selling price after publisher-borne discounts (tax included, JPY). Equals price if no discount is applied.
billing_amount
integer
✅
Final billing amount after deducting points, coupons, and other adjustments from the selling price (tax included, JPY). Equals selling_price if none are applied.
purchased_at
string (ISO8601)
✅
Purchase date/time.
ref
string | null
✅
The referrer domain name (e.g. game8.jp). null if the referrer is unknown.
payment_method
string | null
✅
The payment method. Card for credit card payments, otherwise the payment service name (e.g. メルペイ, PayPal). null when no payment service is involved, such as a full-point payment.
contents
array
✅
List of contents included in the item
Data structure of the
Key
Type
1 image
Description
string
string
✅
item as a prefix with a suffix (e.g.,pack001-1)
content_name
string
✅
Name of the content within the item (e.g., "Gem")
quantity
integer
✅
Quantity of the content within the item (e.g., 1000)
Whether the in-game item was granted (true / false)
Response Example (Success)
{
"request_id": "def456",
"timestamp": "2025-02-04T12:36:00Z",
"result_code": "PUB0000",
"message": "The purchase record has been registered.",
"item_granted": true
}
Response Example (Failure - Unknown User)
{
"request_id": "def458",
"timestamp": "2025-02-04T12:38:00Z",
"result_code": "PUB3002",
"message": "The specified user does not exist.",
"item_granted": false
}
Response Example (Failure - Already Registered Transaction ID)
{
"request_id": "def458",
"timestamp": "2025-02-04T12:38:00Z",
"result_code": "PUB3004",
"message": "The specified TransactionID has already been registered.",
"item_granted": false
}
2.3. Retrieve Player Information (GET /user_info)1 image
Overview
Retrieves player name and level based on the game ID entered by the user. Displaying this information on the purchase confirmation screen allows users to verify the accuracy of their entered ID and confirm proper connectivity with the game.
Request Specifications
Field
Details
Method
GET
Endpoint
/user_info
Protocol
HTTPS
Content type
application/json
Request Headers
Key
Value
Details
Authorization
Bearer <ACCESS_TOKEN>
Authentication information
Content-Type
application/json
Content type
X-Signature
<SIGNED_DATA>
Signature for verification
Query Parameter
Key
Type
1 image
Description
game
string
✅
A unique game ID issued within Game8 Store
user
string
✅
Unique in-game user ID issued within the game
Request Example
GET /user_info HTTP/1.1
Host: <Optional (set by the publisher)>
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json
X-Signature: <SIGNED_DATA>
Query Parameter:
?game=game123&user=Player5678
{
"request_id": "abc124",
"timestamp": "2025-03-12T14:31:00Z",
"result_code": "PUB2004",
"message": "Player ID not found."
}
Response Example (Failure - Account Banned or Inactive)
{
"request_id": "abc124",
"timestamp": "2025-03-12T14:31:00Z",
"result_code": "PUB2008",
"message": "Purchase not allowed due to account suspension."
}
Response Example (Failure - Server Maintenance)
{
"request_id": "abc125",
"timestamp": "2025-03-12T14:32:00Z",
"result_code": "PUB6000",
"message": "The service is currently under maintenance."
}
2.4. Inventory Check(GET /stock)Recommended
Overview
Checks the stock status of a specified item and returns the remaining purchasable quantity. Used for displaying stock status to users for limited-quantity or campaign items, and for pre-purchase flow validation.
Request Specifications
Field
Details
Method
GET
Endpoint
/stock
Protocol
HTTPS
Content type
application/json
Request Headers
Key
Value
Details
Authorization
Bearer <ACCESS_TOKEN>
Authentication information
Content-Type
application/json
Content type
X-Signature
<SIGNED_DATA>
Signature for verification
Query Parameter
Key
Type
1 image
Description
game
string
✅
A unique game ID issued within Game8 Store
user
string
✅
Unique in-game user ID issued within the game
transaction_id
string
✅
Identifier that uniquely identifies a transaction
items
string
✅
Unique ID of the item to be purchased within the game (?) Multiple values can be specified, separated by commas
Request Example
GET /stock HTTP/1.1
Host: <Optional (set by the publisher)>
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
Response Specifications
Response Body
Key
Type
Description
request_id
string
Unique request ID
timestamp
string (ISO8601)
Response timestamp
result_code
string
Result code
message
string
Message
stock
Object[]
Stock information
stock Structure
Key
Type
Description
item
string
Unique ID of the item to be purchased within the game (?)
total
integer
Total stock quantity. Returns
remaining
integer
Remaining stock quantity. Returns
restock_at
string (ISO8601) | null
Scheduled date/time for the next restock (if applicable). Null if not scheduled or unlimited.
3.1. Order Verify (GET /orders/verify)Optional to Use
Overview
/register The status of orders notified via the API can be/register API. /register transaction_id transaction_id /register /register paid_transaction_id Intended use cases:
/register notification
Re-querying when a previous API call has failed
This enables anotification (/register) + verification (/orders/verify)double-confirmation pattern.
This API is always running on the Game8 Store side, and no prior application is required. You do not need to provide an endpoint on your side — to use this API, you only implement the call to it. Even if it is not integrated into your payment flow, you can check the payment status of an order by sending a request (use is optional).
Standard price of the item (tax included, JPY). List price before any discounts.
selling_price
integer
Selling price after publisher-borne discounts (tax included, JPY). Equals price if no discount is applied.
billing_amount
integer
Final billing amount after deducting points, coupons, and other adjustments from the selling price (tax included, JPY). Equals selling_price if none are applied.
purchased_at
string (ISO8601) | null
Purchase date/time. Null when status ispending), the value is null
Status Values
Value
Description
pending
Payment in progress
payment_confirmed
Payment confirmed (payment has been completed but item granting has not yet finished)