Skip to content

Web PG payment

The web PG payment API is an API used when you want to implement PG payments on a website, although it does not use the Hive SDK billing when developing Windows apps. The web PG payment API is different from the API that implements PG payments in apps.

Note

To implement PG payment in the app, you need to use Hive SDK billing and general PG payment API.

Product list retrieval

Retrieves product information. Used to implement the product list in the app.

Request URL

Environment URL
Production URL https://store.withhive.com/external/api/product
Sandbox URL https://sandbox-store.withhive.com/external/api/product
HTTP Method POST
Content-Type text/html; charset=utf-8
Data Format JSON
Authorization Bearer (token)

The Bearer token corresponds to the Hive authentication key in the Hive console App Center > Project Management > Select Game Company > Game Details > Basic Information.

Request parameters

Field Type Required Description
api String O API identifier (`product` fixed value)
market_id String O Hive market ID (PG payment: `15` fixed value)
appid String O Hive Appid
hive_country String O Country code (ISO 3166-1 two letters)
game_language String O Language (ISO 639-1 two letters)
vid String O Hive account information (Player ID)
vid_type String O Account type (for new games v4)
market_pid_type String O Product type (consumable)

Response elements

Field Type Required Description
result Integer O Response code (0 is success, others are errors)
result_msg String O Response message
product_list Object O List of product information
product_list > market_pid String O Product PID
product_list > price Int O Product price (numeric value)
product_list > currency String O Currency of the product price
product_list > display_price String O Product price (including currency symbol)
product_list > title String O Product name
product_list > description String O Product description
product_list > product_type String O Product classification (consumable: consumable)
update_date String O Last updated date and time of product PID information

Request example

curl -L -v \
    -d '{"api": "product","market_id": 15,"appid": "com.com2us.hivesdk.windows.microsoftstore.global.normal","hive_country": "KR","game_language": "ko","vid": "100000000000","vid_type": "v4","market_pid_type": "consumable"}' \
    -H "Content-Type: text/html" \
    -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNjAyMDU2NzI2LCJqdGkiOiIxODczMTExMzIwIn0.3soFiHTPlObCoqR5xX9ZeOQTSvnHrHDHWmopP3QfWtY" \
    https://sandbox-store.withhive.com/external/api/product

Response example

{
    "result": 0,
    "result_msg": "success",
    "product_list": [
        {
            "market_pid": "com.com2us.hivesdk.windows.microsoftstore.global.normal.item01",
            "price": 1200,
            "currency": "KRW",
            "display_price": "₩1,200",
            "title": "크리스탈 한 줌",
            "description": "크리스탈 한 줌",
            "product_type": "consumable"
        }, {
            "market_pid": "com.com2us.hivesdk.windows.microsoftstore.global.normal.item02",
            "price": 2500,
            "currency": "KRW",
            "display_price": "₩2,500",
            "title": "크리스탈 묶음",
            "description": "크리스탈 묶음",
            "product_type": "consumable"
        }, {
            "market_pid": "com.com2us.hivesdk.windows.microsoftstore.global.normal.item03",
            "price": 3900,
            "currency": "KRW",
            "display_price": "₩3,900",
            "title": "크리스탈 더미",
            "description": "크리스탈 더미",
            "product_type": "consumable"
        }
    ],
    "update_date": "2022-10-28 16:11:23"
}

Product Order Request

Requests a product order using the PID (Product ID) information selected from the product list.

Request URL

Environment URL
Production URL https://store.withhive.com/external/api/order
Sandbox URL https://sandbox-store.withhive.com/external/api/order
HTTP Method POST
Content-Type text/html; charset=utf-8
Data Format JSON
Authorization Bearer (token)

The Bearer token corresponds to the Hive authentication key in the Hive console App Center > Project Management > Select Game Company > Game Details > Basic Information.

Request parameters

Field Type Required Description
market_id String O Hive market ID
appid String O Hive Appid
hive_country String O Country code (ISO 3166-1 two letters)
game_language String O Language (ISO 639-1 two letters)
vid String O Hive account information (Player ID)
vid_type String O Account type (for new games, v4)
market_pid String O Product PID
server_id String O Server ID
os String O Window: W, MAC: M, Android: A
quantity Integer X Purchase quantity (default value is 1 if not sent)
iap_payload String X Purchase metadata defined by the app developer purchase meta information

Request example

curl -L -v \
    -d '{"market_id": 15,"appid": "com.com2us.hivesdk.windows.microsoftstore.global.normal","hive_country": "KR","game_language": "ko","vid": "100000000000","vid_type": "v4","market_pid": "com.com2us.hivesdk.windows.microsoftstore.global.normal.item01","server_id": "KR1","os": "A","quantity": 1,"iap_payload": "{\"character_id\":\"hivesdk01\"}"}' \
    -H "Content-Type: text/html" \
    -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNjAyMDU2NzI2LCJqdGkiOiIxODczMTExMzIwIn0.3soFiHTPlObCoqR5xX9ZeOQTSvnHrHDHWmopP3QfWtY" \
    https://sandbox-store.withhive.com/external/api/order

Response example

When the product order request is processed successfully, a popup window to select the payment method is returned. Below is the HTML page that composes the popup window.

Payment Completion History Inquiry

When the payment is completed, the payment agency (PG) directly transmits the payment result to the Hive IAP v4 server. This method compensates for the instability of the network and prevents tampering with payment data. During the pre-work, a cross-verification is performed by comparing the registered payment information with the information from the payment agency (PG). Once the integrity of the payment information is confirmed, additional safety measures are secured, and the payment information is stored. The stored payment information can be retrieved through the payment completion history inquiry API.

The client requests payment completion information from the game server at the necessary time, and the game server retrieves payment information through the Hive IAP v4 server. If there is a payment history for the user, payment information verification is performed using purchase_bypass_info.

Request URL

    Production URL https://hiveiap.qpyou.cn/api_v4/purchases/unconsumed
    Sandbox URL https://sandbox-hiveiap.qpyou.cn/api_v4/purchases/unconsumed
    HTTP Method POST
    Content-Type application/json
    Data Format JSON
    Authorization Bearer (token)

The Bearer token corresponds to the Hive authentication key in the Hive console App Center > Project Management > Select Game Company > Game Details > Basic Information.

Request parameters

    Name Type Required (Required: M, Optional: O) Description
    appid String M ID registered and issued from the Hive console > App Center
    market_id Number M Unique market ID (use fixed value `15`)
    server_id String M Game server identification code where the payment occurred
    user_id_type String M HIVE user type uid : Individual module (v0) vid : Authentication v1 (v1) player_id : Authentication v4 (v4)
    user_id Number M HIVE user ID sent according to user_id_type uid : Individual module (v0) vid : Authentication v1 (v1) player_id : Authentication v4 (v4)

Response elements

    Name Type Required (Required: M, Optional: O) Description
    result Number M Response code (0: success)
    result_msg String M Result message according to the response code
    unconsumed_lists Object Array M
    ┕ market_pid String M Product unique ID
    ┕ order_id String M Order number
    ┕ server_id String M Game server identification code accessed by the purchasing user
    ┕ vid String M Player ID of the purchasing user, VID for v1 authentication
    ┕ uid String O UID of the purchasing user
    ┕ amount String M Payment amount
    ┕ currency String M Payment currency
    ┕ quantity Number M Purchase quantity
    ┕ started_datetime Datetime M Time when the payment started (Y-m-d H:i:s)
    ┕ paid_datetime Datetime M Time when the payment was completed (Y-m-d H:i:s)
    ┕ hiveiap_receipt String M Encrypted HASH of payment information
    ┕ purchase_bypass_info String M Essential information required for receipt verification request
    ┕ additionalInfo String O Additional information received from the client to send to the game server (in JSON String format) (returns null if no information is received)

Request example

curl -L -v
 -d '{"appid" : "com.com2us.hivesdk.windows.microsoftstore.global.normal","market_id" : 15,"server_id" : "kr","user_id_type": "player_id", "user_id": 30000056996}' \
 -H "Content-Type: text/html" \
 -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNjAyMDU2NzI2LCJqdGkiOiIxODczMTExMzIwIn0.3soFiHTPlObCoqR5xX9ZeOQTSvnHrHDHWmopP3QfWtY" \
 https://sandbox-hiveiap.qpyou.cn/api_v4/purchases/unconsumed

Response example

{
    "result": 0,
    "result_msg": "SUCCESS",
    "unconsumed_lists": [
        {
            "market_pid": "com.com2us.hivesdk.windows.microsoftstore.global.normal.item01",
            "order_id": "h2164792542890731850",
            "server_id": "kr",
            "vid": "30000056996",
            "uid": "13079",
            "amount": "1200",
            "currency": "KRW",
            "quantity": 1,            
            "started_datetime": "2022-03-22 14:03:49",
            "paid_datetime": "2022-03-22 14:04:39",
            "market_id": "15",
            "hiveiap_receipt": "2YnGzfTCGycoMjcSyYyNXBjANwmFyB6m\/c0bYazQ8VQ=",
            "purchase_bypass_info": "eyJtYXJrZXRfcGlkIjoiY29tLmNvbTJ1cy5oaXZlc2R...",
            "additionalInfo": null
        }
    ]
}

Payment Information Verification

The payment result verification API is based on IAP v4 receipt verification .

The payment result verification uses the purchase_bypass_info received earlier. The purchase_bypass_info contains various information received through the SDK before proceeding with the payment and is sent to Hive Analytics.
If you need to send the sales log along with the receipt verification request, please use game_info. The received game_info acts as an intermediary for sending logs to the analytics server from Hive IAP.

Request URL

    Production URL https://hiveiap-verify.qpyou.cn/api_v4/verify
    Sandbox URL https://sandbox-hiveiap-verify.qpyou.cn/api_v4/verify
    HTTP Method POST
    Content-Type text/html
    Data Format JSON
    Authorization Bearer (token)

The Bearer token corresponds to the Hive authentication key in the Hive console App Center > Project Management > Select Game Company > Game Details > Basic Information.

Request parameters

    Name Type Required (Required: M, Optional: O) Description
    purchase_bypass_info String M Data for receipt substitute and analytics transmission
    game_info Object Array O If there are logs to be sent to the game, such as game logs or revenue logs, add this value to the game for transmission, and Hive IAP will act as an agent to send it to the analytics server. In the receipt verification stage, it is not possible to know whether the item has been delivered (itemsendok), so this part must be implemented separately and provided as additional information.
    ⠀⠀server_uid bigint O User_id issued by the game server If not, 0
    ⠀⠀giftee_uid bigint O null: Payment for personal use 0: There is a gift recipient, but UID cannot be confirmed; Derby Days guest accounts do not have a hub guest account, so this applies here
    ⠀⠀level int O User's in-game level Not needed if there is no level. If not, 0.
    ⠀⠀character_id bigint O Unique character identifier value within the server (PK?). If there is no character concept, "0"
    ⠀⠀character_type_id int O Character type identifier value Input "0" for games without a character concept
    ⠀⠀character_level int O Character type identifier value Input "0" for games without a character concept
    ⠀⠀is_emulator int O Input "1" when accessing via PC emulator like BlueStacks, otherwise input "0"

Response elements

    Name Type Required (Required: M, Optional: O) Description
    result Number M Response code (Refer to Response Code)
    result_msg String M Result message according to the response code
    hiveiap_transaction_id String M Transaction ID generated for each successfully validated receipt. This value should be stored on the game server to perform duplicate receipt checks.
    hiveiap_market_id String O Market unique number (PG payment: fixed at 15)
    hiveiap_market_pid String O Payment product PID
    hiveiap_market_transaction_id String O Unique order number for the order
    hiveiap_receipt String O Market receipt Object value (PG payment: fixed at null)
    hiveiap_purchase_test String O Test payment status (Y: test payment / N: regular payment)

Response code

    Code Message Comment
    0 Success, Duplicate receipt Verification successful
    1000001 No requested parameter No parameters were sent
    1000003 DB Connection Error When DB Connection fails
    1000005 Internal Server Error Internal server error
    1000006 The required parameter info is missing When the required parameter value is missing
    1000503 Failed to authenticate the receipt Failed to verify the receipt or it is a hacked receipt (e.g., spoofing hack)
    1000507 Failed to save the purchase info Failed to save purchase history
    1000524 Failed to authenticate the receipt. (not exist order) Receipt verification failed (non-existent order)
    1000525 Failed to authenticate the receipt. (wrong param) Receipt verification failed (parameter error)

Request example

curl -L -v \
 -d '{"purchase_bypass_info":"eyJtYXJrZXRfaWQiOiIxNSIsIm9yZGVyX2lkIjoiSDMxNjQ3OTI1NDI4OTA3MzE4NTAiLCJtYXJrZXRfcGlkIjoiY29tLmNvbTJ1cy5oaXZlc2RrLndpbmRvd3MubWljcm9zb2Z0c3RvcmUuZ2xvYmFsLm5vcm1hbC5pdGVtMDEiLCJ2aWQiOiIzMDAwMDA1Njk5NiIsInVpZCI6IjEzMDc5Iiwic2VydmVyX2lkIjoia3IiLCJhcHBpZCI6ImNvbS5jb20ydXMuaGl2ZXNkay53aW5kb3dzLm1pY3Jvc29mdHN0b3JlLmdsb2JhbC5ub3JtYWwiLCJhbW91bnQiOiIxMjAwIiwic3RhcnRlZF9kYXRldGltZSI6bnVsbCwicGFpZF9kYXRldGltZSI6bnVsbCwiY3VycmVuY3kiOiJLUlciLCJoaXZlaWFwX3JlY2VpcHQiOiIyWW5HemZUQ0d5Y29NamNTeVl5TlhCakFOd21GeUI2bVwvYzBiWWF6UThWUT0ifQ=="}' \
 -H "Content-Type: text/html" \
 -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNjAyMDU2NzI2LCJqdGkiOiIxODczMTExMzIwIn0.3soFiHTPlObCoqR5xX9ZeOQTSvnHrHDHWmopP3QfWtY" \
 https://sandbox-hiveiap-verify.qpyou.cn/api_v4/verify

Response example

{
    "result": 0,
    "result_msg": "success",
    "hiveiap_transaction_id": "HS_13",
    "hiveiap_market_id": 15,
    "hiveiap_market_pid": "com.com2us.hivesdk.windows.microsoftstore.global.normal.item01",
    "hiveiap_market_transaction_id": "h2164792542890731850",
    "hiveiap_receipt": null,
    "hiveiap_purchase_test": "N"
}

Payment Result Processing

Payment Result Processing API is based on IAP v4 Item Payment Result Transmission. Through the Payment Result Processing API, the payment process from item purchase to payment completion is finalized. If the payment process is not completed, the user cannot purchase the same product. If the user attempts to purchase and enters the payment page, a message saying 'You already own this product.' will be displayed, and the payment will not proceed.

When attempting to purchase and pay by opening multiple payment windows, all products for which payment has not been processed will be automatically canceled. After processing all payment procedures, such as checking purchase limits and item delivery conducted by the game server, the payment result is sent to notify the Hive IAP v4 server that the payment has been completed. If you wish to request a cancellation of the payment, you can also request the cancellation through the delivery result processing API.

Request URL

    Production URL https://hiveiap.qpyou.cn/api_v4/item_result
    Sandbox URL https://sandbox-hiveiap.qpyou.cn/api_v4/item_result
    HTTP Method POST
    Content-Type text/html
    Data Format JSON
    Authorization Bearer (token)

The Bearer token corresponds to the Hive authentication key in the Hive console App Center > Project Management > Select Game Company > Game Details > Basic Information.

Request parameters

    Name Type Required (Required: M, Optional: O) Description
    hiveiap_transaction_id String M hiveiap_transaction_id of the receipt verification result
    result_status Number M Item delivery success status 0: Delivery failed 1: Delivery succeeded 2: Payment cancellation refund request (PG only)
    result_status_message String O Reason for delivery failure or payment cancellation request
    user_id_type String M Hive user type v0: Individual module (uid) v1: Authentication v1 (vid) v4: Authentication v4 (player_id)
    user_id Number M User ID If user_id_type is v0, send uid; if v1, send vid; if v4, send player_id
    asset Object Array O Information of the delivered items Only send values when delivery is successful, and respond with an empty array ([]) when delivery fails
    asset_id String O Item ID
    asset_name String O Item name
    ⠀⠀quantity Number O Number of items delivered

Response elements

    Name Type Required (Required: M, Optional: O) Description
    result Number M Response code (0: success)
    result_msg String M Result message according to the response code

Request example

curl -L -v
 -d '{"hiveiap_transaction_id" : "HS_13","result_status": 1,"user_id_type": "vid","user_id": 30000056996,"asset": [ {"asset_id":"item_id","asset_name":"item_name","quantity":1}
,{"asset_id":"item_id","asset_name":"item_name","quantity":1}]}' \
 -H "Content-Type: text/html" \
 -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNjAyMDU2NzI2LCJqdGkiOiIxODczMTExMzIwIn0.3soFiHTPlObCoqR5xX9ZeOQTSvnHrHDHWmopP3QfWtY" \
 https://sandbox-hiveiap.qpyou.cn/api_v4/item_result

Response example

{
    "result": 0,
    "result_msg": "success"
}

Payment Result Notification Service

The payment result notification service sends the result to the game server immediately upon completion or cancellation of the payment. This API passes the purchase_bypass_info value just like the payment completion history inquiry, allowing the game to use this value to verify the receipt before granting the product to the user. Receipt verification and product granting should only be performed when the type in the payment result transmission information is paid.

Note

To use this API, you must first set up the PG company in the Hive console. For receipt verification and product delivery, it is recommended to use either this API or the payment completion history inquiry API.

Basic Information on Payment Result Transmission

    HTTP Method POST
    Content-Type application/json
    Data Format JSON

Payment Result Transmission Information

    Name Type Required (Required: M, Optional: O) Description
    type String M Notification type (paid: Payment completed, cancelled: Payment cancelled or refunded)
    market_pid String M Unique product ID
    order_id String M Order number
    server_id String M Code distinguishing the game server the user purchased from
    vid Number M User's PlayerID, VID for v1 authentication
    vid_type String O vid type value according to SDK version (default v4)
    uid Number O User's uid
    amount String M Payment amount
    currency String M Payment currency
    quantity Number M Purchase quantity
    started_datetime Datetime M Time when the payment started (Y-m-d H:i:s)
    paid_datetime Datetime M Time when the payment was completed (Y-m-d H:i:s)
    cancelled_datetime Datetime O Time when the payment was cancelled or refunded (Y-m-d H:i:s)
    cancelled_reason String O Reason for the payment being cancelled or refunded
    hiveiap_receipt String M Encrypted HASH of payment information
    purchase_bypass_info String M Essential information required for receipt verification request
    additionalInfo String O Additional information received from the client to send to the game server. It is in JSON String format, and returns null if no information is received.

Payment Result Transmission Example (Upon Payment Completion)

{
    "type": "paid",
    "market_id": "15",
    "order_id": "H2168993822440686730",
    "market_pid": "com.com2us.hivesdk.windows.microsoftstore.global.normal.item01",
    "vid": "20000011337",
    "uid": "67200717",
    "vid_type": "v4",
    "server_id": "kr",
    "appid": "com.com2us.hivesdk.windows.microsoftstore.global.normal",
    "amount": "1200",
    "started_datetime": "2023-07-21 20:17:06",
    "paid_datetime": "2023-07-21 20:18:13",
    "cancelled_datetime": null,
    "cancelled_reason": null,
    "currency": "KRW",
    "quantity": 1,
    "additionalInfo": null,
    "hiveiap_receipt": "tJpwQSIlNFiCSPokHSRYTvTLmtbDiSZnkYa7+IWaMwM=",
    "purchase_bypass_info": "eyJ0eXBlIjoicGFpZCIsIm1hcmtldF9pZCI6IjE1Iiwib3JkZXJfaWQiOi..."
}

Payment Result Transmission Example (When Payment is Canceled)

{
    "type": "cancelled",
    "market_id": "15",
    "order_id": "H2168993822440686730",
    "market_pid": "com.com2us.hivesdk.windows.microsoftstore.global.normal.item01",
    "vid": "20000011337",
    "uid": "67200717",
    "vid_type": "v4",
    "server_id": "kr",
    "appid": "com.com2us.hivesdk.windows.microsoftstore.global.normal",
    "amount": "1200",
    "started_datetime": "2023-07-21 20:17:06",
    "paid_datetime": "2023-07-21 20:18:13",
    "cancelled_datetime": "2023-07-21 20:21:44",
    "cancelled_reason": "테스트 결제 취소",
    "currency": "KRW",
    "quantity": 1,    
    "additionalInfo": null,
    "hiveiap_receipt": "tJpwQSIlNFiCSPokHSRYTvTLmtbDiSZnkYa7+IWaMwM=",
    "purchase_bypass_info": "eyJ0eXBlIjoiY2FuY2VsbGVkIiwibWFya2V0X2lkIjoiMT..."
}