การชำระเงิน Web PG
API การชำระเงิน PG บนเว็บเป็น API ที่ใช้เมื่อคุณต้องการนำการชำระเงิน PG ไปใช้บนเว็บไซต์ แม้ว่าจะไม่ใช้ Hive SDK billing เมื่อพัฒนาแอป Windows API การชำระเงิน PG บนเว็บจะแตกต่างจาก API ที่นำการชำระเงิน PG ไปใช้ในแอป
Note
ในการใช้งานการชำระเงิน PG ในแอป คุณต้องใช้ Hive SDK Billing และ General PG Payment API.
การดึงรายการสินค้า¶
กำลังดึงข้อมูลผลิตภัณฑ์ ใช้ในการแสดงรายการผลิตภัณฑ์ในแอป
URL การร้องขอ¶
สภาพแวดล้อม | URL |
---|---|
URL การผลิต | https://store.withhive.com/external/api/product |
URL แซนด์บ็อกซ์ | https://sandbox-store.withhive.com/external/api/product |
HTTP วิธี | POST |
ประเภทเนื้อหา | text/html; charset=utf-8 |
รูปแบบข้อมูล | JSON |
การอนุญาต | Bearer (token) |
โทเค็น Bearer จะตรงกับ Hive คีย์การตรวจสอบสิทธิ์ที่พบใน App Center > Project Management > Select Game Company > Game Details > Basic Information ของคอนโซล Hive
พารามิเตอร์การร้องขอ¶
ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
api | String | O | ค่าระบุ API (ใช้ค่าคงที่ `product`) |
market_id | String | O | Hive รหัสตลาด (PG payment: ใช้ค่าคงที่ `15`) |
appid | String | O | Hive App ID |
hive_country | String | O | รหัสประเทศ (ISO 3166-1 สองตัวอักษร) |
game_language | String | O | ภาษา (ISO 639-1 สองตัวอักษร) |
vid | String | O | Hive ข้อมูลบัญชี (Player ID) |
vid_type | String | O | ประเภทบัญชี (v4) |
market_pid_type | String | O | ประเภทผลิตภัณฑ์ (ใช้ได้) |
องค์ประกอบการตอบกลับ¶
ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
result | จำนวนเต็ม | ใช่ | รหัสการตอบกลับ (0 คือสำเร็จ, อื่นๆ คือข้อผิดพลาด) |
result_msg | สตริง | ใช่ | ข้อความการตอบกลับ |
product_list | วัตถุ | ใช่ | รายการข้อมูลผลิตภัณฑ์ |
product_list > market_pid | สตริง | ใช่ | PID ของผลิตภัณฑ์ |
product_list > price | จำนวนเต็ม | ใช่ | ราคาผลิตภัณฑ์ (ค่าตัวเลข) |
product_list > currency | สตริง | ใช่ | สกุลเงินของราคาผลิตภัณฑ์ |
product_list > display_price | สตริง | ใช่ | ราคาผลิตภัณฑ์ (รวมสัญลักษณ์สกุลเงิน) |
product_list > title | สตริง | ใช่ | ชื่อผลิตภัณฑ์ |
product_list > description | สตริง | ใช่ | คำอธิบายผลิตภัณฑ์ |
product_list > product_type | สตริง | ใช่ | การจำแนกประเภทผลิตภัณฑ์ (ใช้แล้ว) |
update_date | สตริง | ใช่ | วันที่และเวลาที่อัปเดตล่าสุดของข้อมูล PID ผลิตภัณฑ์ |
ตัวอย่างคำขอ¶
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
ตัวอย่างการตอบกลับ¶
{
"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"
}
คำขอการสั่งซื้อสินค้า¶
ทำการขอสั่งซื้อผลิตภัณฑ์โดยใช้ข้อมูล PID
(รหัสผลิตภัณฑ์) ที่เลือกจากรายการผลิตภัณฑ์
URL การร้องขอ¶
สภาพแวดล้อม | URL |
---|---|
URL การผลิต | https://store.withhive.com/external/api/order |
URL แซนด์บ็อกซ์ | https://sandbox-store.withhive.com/external/api/order |
วิธี HTTP | POST |
ประเภทเนื้อหา | text/html; charset=utf-8 |
รูปแบบข้อมูล | JSON |
การอนุญาต | Bearer (token) |
โทเค็น Bearer จะตรงกับ Hive คีย์การตรวจสอบสิทธิ์ที่พบใน App Center > Project Management > Select Game Company > Game Details > Basic Information ในคอนโซล Hive
พารามิเตอร์การร้องขอ¶
ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
market_id | String | O | Hive รหัสตลาด |
appid | String | O | Hive Appid |
hive_country | String | O | รหัสประเทศ (ISO 3166-1 สองตัวอักษร) |
game_language | String | O | ภาษา (ISO 639-1 สองตัวอักษร) |
vid | String | O | Hive ข้อมูลบัญชี (Player ID) |
vid_type | String | O | ประเภทบัญชี (v4) |
market_pid | String | O | Product PID |
server_id | String | O | Server ID |
os | String | O | Windows: W, MAC: M, Android: A |
quantity | Integer | X | จำนวนที่ซื้อ (ค่าปริยายคือ 1 หากไม่ได้ส่ง) |
iap_payload | String | X | ข้อมูลเมตาของการซื้อที่กำหนดโดยนักพัฒนาแอป ข้อมูลเมตาการซื้อ |
fixed_currency | String | X | สกุลเงินสำหรับการเปิดเผยวิธีการชำระเงิน (ISO 4217 สามตัวอักษร) * ไม่จำเป็น หากไม่มีพารามิเตอร์ fixed_currency วิธีการชำระเงินจะถูกเปิดเผยตาม hive_country แต่หากเพิ่มพารามิเตอร์ fixed_currency วิธีการชำระเงินจะถูกเปิดเผยตามสกุลเงิน fixed_currency |
refund_idx | Integer | X | รายการ IDX การชำระเงินคืนของผู้ใช้ * จำเป็นเฉพาะสำหรับคำขอการชำระเงินคืนของผู้ใช้ |
is_repayment | Integer | X | ว่ามันเป็นการชำระเงินคืนของผู้ใช้หรือไม่ (0: การชำระเงินปกติ, 1: การชำระเงินคืนของผู้ใช้) * จำเป็นเฉพาะสำหรับคำขอการชำระเงินคืนของผู้ใช้ |
expiration_time | Integer | X | นี่คือเวลาหมดอายุสำหรับหน้าต่างการชำระเงิน มันอยู่ในรูปแบบ Unix TimeStamp Milliseconds (เช่น 1745395211) หากเวลาปัจจุบันของเซิร์ฟเวอร์เรียกเก็บเงิน Hive (Unix TimeStamp Milliseconds) เกินค่านี้ จะส่งคืนหน้าคำแนะนำที่แตกต่างแทนหน้า HTML ของหน้าต่างการชำระเงินในคำตอบ |
ตัวอย่างคำขอ¶
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\"}", "expiration_time": 1745395211}' \
-H "Content-Type: text/html" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNjAyMDU2NzI2LCJqdGkiOiIxODczMTExMzIwIn0.3soFiHTPlObCoqR5xX9ZeOQTSvnHrHDHWmopP3QfWtY" \
https://sandbox-store.withhive.com/external/api/order
ตัวอย่างการตอบกลับ¶
เมื่อคำขอสั่งซื้อผลิตภัณฑ์ถูกประมวลผลสำเร็จ หน้าต่างป๊อปอัปสำหรับเลือกวิธีการชำระเงินจะถูกส่งกลับ ด้านล่างนี้คือหน้า HTML ที่ประกอบขึ้นเป็นหน้าต่างป๊อปอัป
การสอบถามรายละเอียดการชำระเงินเสร็จสมบูรณ์¶
เมื่อการชำระเงินเสร็จสมบูรณ์ หน่วยงานการชำระเงิน (PG) จะส่งผลการชำระเงินไปยังเซิร์ฟเวอร์ IAP v4 ของ Hive โดยตรง วิธีนี้ช่วยชดเชยความไม่เสถียรของเครือข่ายและป้องกันการดัดแปลงข้อมูลการชำระเงิน ในระหว่าง การเตรียมงาน จะมีการทำการตรวจสอบข้ามโดยการเปรียบเทียบข้อมูลการชำระเงินที่ลงทะเบียนกับข้อมูลจากหน่วยงานการชำระเงิน (PG) เมื่อยืนยันความสมบูรณ์ของข้อมูลการชำระเงินแล้ว จะมีการจัดทำมาตรการความปลอดภัยเพิ่มเติมและข้อมูลการชำระเงินจะถูกเก็บรักษา ข้อมูลการชำระเงินที่เก็บรักษาสามารถสอบถามได้ผ่าน API การสอบถามประวัติการชำระเงินที่เสร็จสมบูรณ์
ลูกค้าขอข้อมูลจากเซิร์ฟเวอร์เกมในช่วงเวลาที่ต้องการข้อมูลการชำระเงินของผู้ใช้ และเซิร์ฟเวอร์เกมจะดึงข้อมูลการชำระเงินผ่านเซิร์ฟเวอร์ Hive IAP v4 หากมีประวัติการชำระเงินสำหรับผู้ใช้ การตรวจสอบข้อมูลการชำระเงินจะดำเนินการโดยใช้ purchase_bypass_info
。
URL การร้องขอ¶
URL การผลิต | https://hiveiap.qpyou.cn/api_v4/purchases/unconsumed |
URL แซนด์บ็อกซ์ | https://sandbox-hiveiap.qpyou.cn/api_v4/purchases/unconsumed |
วิธีการ HTTP | POST |
ประเภทเนื้อหา | application/json |
รูปแบบข้อมูล | JSON |
การอนุญาต | Bearer (token) |
---|
โทเค็น Bearer จะตรงกับ Hive คีย์การรับรองความถูกต้องที่พบใน App Center > Project Management > Select Game Company Game > Game Details > Basic Information บนคอนโซล Hive
พารามิเตอร์คำขอ¶
ชื่อ | ประเภท | จำเป็น (จำเป็น: M, ไม่จำเป็น: O) | คำอธิบาย |
appid | String | M | ID ที่ลงทะเบียนและออกจากคอนโซล Hive > App Center |
market_id | Number | M | หมายเลขตลาดที่ไม่ซ้ำ (ใช้ค่าคงที่ `15`) |
server_id | String | M | รหัสเพื่อแยกแยะเซิร์ฟเวอร์เกมที่การชำระเงินเกิดขึ้น |
user_id_type | String | M | ประเภทผู้ใช้ Hive (ใช้ค่าคงที่ `player_id`) |
user_id | Number | M | รหัสผู้ใช้ Hive (`player_id`) |
องค์ประกอบการตอบกลับ¶
ชื่อ | ประเภท | จำเป็น (จำเป็น: M, ไม่จำเป็น: O) | คำอธิบาย |
result | หมายเลข | M | รหัสการตอบกลับ (0: สำเร็จ) |
result_msg | สตริง | M | ข้อความผลลัพธ์ตามรหัสการตอบกลับ |
unconsumed_lists | อาร์เรย์วัตถุ | M | |
┕ market_pid | สตริง | M | รหัสประจำตัวสินค้าที่ไม่ซ้ำกัน |
┕ order_id | สตริง | M | หมายเลขคำสั่งซื้อ |
┕ server_id | สตริง | M | รหัสที่แยกความแตกต่างของเซิร์ฟเวอร์เกมที่ผู้ใช้ซื้อเข้าถึง |
┕ vid | สตริง | M | PlayerID ของผู้ใช้ที่ทำการซื้อ |
┕ amount | สตริง | M | จำนวนเงินที่ชำระ |
┕ currency | สตริง | M | สกุลเงินที่ใช้ในการชำระเงิน |
┕ quantity | หมายเลข | M | จำนวนที่ซื้อ |
┕ started_datetime | วันที่และเวลา | M | เวลาที่เริ่มชำระเงิน (Y-m-d H:i:s) |
┕ paid_datetime | วันที่และเวลา | M | เวลาที่ชำระเงินเสร็จสมบูรณ์ (Y-m-d H:i:s) |
┕ started_datetime_ms | หมายเลข | M | เวลาที่เริ่มชำระเงิน (Unix TimeStamp Milliseconds) |
┕ paid_datetime_ms | หมายเลข | M | เวลาที่ชำระเงินเสร็จสมบูรณ์ (Unix TimeStamp Milliseconds) |
┕ hiveiap_receipt | สตริง | M | การเข้ารหัสข้อมูลการชำระเงิน HASH |
┕ purchase_bypass_info | สตริง | M | ข้อมูลที่จำเป็นสำหรับคำขอการตรวจสอบใบเสร็จ |
┕ iap_payload | สตริง | O | ข้อมูลเพิ่มเติมที่ได้รับจากลูกค้าเพื่อนำส่งไปยังเซิร์ฟเวอร์เกม (ในรูปแบบสตริง JSON) (คืนค่า null หากไม่มีข้อมูลที่ได้รับ) |
ตัวอย่างคำขอ¶
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
ตัวอย่างการตอบกลับ¶
{
"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...",
"started_datetime_ms": 1647925429000,
"paid_datetime_ms": 1647925479000,
"iap_payload": null
}
]
}
การตรวจสอบข้อมูลการชำระเงิน¶
API การตรวจสอบผลการชำระเงินขึ้นอยู่กับ การตรวจสอบใบเสร็จ IAP v4.
การตรวจสอบผลการชำระเงินใช้ข้อมูล purchase_bypass_info
ที่ได้รับก่อนหน้านี้ purchase_bypass_info
ประกอบด้วยข้อมูลต่างๆ ที่ได้รับผ่าน SDK ก่อนที่จะดำเนินการชำระเงินและถูกส่งไปยัง Hive Analytics หากคุณต้องการส่ง บันทึกการขาย พร้อมกับคำขอการตรวจสอบใบเสร็จ โปรดใช้ game_info
ข้อมูล game_info
ที่ได้รับทำหน้าที่เป็นตัวกลางในการส่งบันทึกไปยังเซิร์ฟเวอร์วิเคราะห์จาก Hive IAP.
URL การร้องขอ¶
URL การผลิต | https://hiveiap-verify.qpyou.cn/api_v4/verify |
URL แซนด์บ็อกซ์ | https://sandbox-hiveiap-verify.qpyou.cn/api_v4/verify |
วิธีการ HTTP | POST |
ประเภทเนื้อหา | text/html |
รูปแบบข้อมูล | JSON |
การอนุญาต | Bearer (token) |
---|
โทเค็น Bearer จะตรงกับ Hive คีย์การตรวจสอบสิทธิ์ที่พบใน App Center > Project Management > Select Game Company > Game Details > Basic Information ในคอนโซล Hive
พารามิเตอร์การร้องขอ¶
ชื่อ | ประเภท | จำเป็น (จำเป็น: M, ไม่จำเป็น: O) | คำอธิบาย |
purchase_bypass_info | String | M | ข้อมูลสำหรับการแทนที่ใบเสร็จและการส่งข้อมูลการวิเคราะห์ |
game_info | Object Array | O | เมื่อมีบันทึกที่จะส่งไปยังเกม เช่น บันทึกเกมหรือบันทึกรายได้ ให้เพิ่มค่าตัวนี้ไปยังเกมเพื่อส่งไป และ Hive IAP จะทำหน้าที่แทนเซิร์ฟเวอร์การวิเคราะห์ในการส่งข้อมูล ในขั้นตอนการตรวจสอบใบเสร็จ ไม่สามารถทราบได้ว่ารายการได้ถูกส่งแล้ว (itemsendok) ดังนั้นส่วนนี้ต้องถูกดำเนินการแยกต่างหากและจัดเตรียมเป็นข้อมูลเพิ่มเติม |
⠀⠀server_uid | bigint | O | รหัสผู้ใช้ที่ออกโดยเซิร์ฟเวอร์เกม ถ้าไม่มี ให้ใช้ 0 |
⠀⠀giftee_uid | bigint | O | null: การชำระเงินสำหรับการใช้งานส่วนตัว 0: บุคคลที่ได้รับของขวัญมีอยู่ แต่ไม่สามารถตรวจสอบ UID ได้ |
⠀⠀level | int | O | ระดับในเกมของผู้ใช้ ไม่จำเป็นถ้าไม่มีระดับ ถ้าไม่มี ให้ใช้ 0. |
⠀⠀character_id | bigint | O | ค่ารหัสตัวละครที่ไม่ซ้ำกันภายในเซิร์ฟเวอร์ ถ้าไม่มีแนวคิดของตัวละคร ให้ใช้ "0" |
⠀⠀character_type_id | int | O | ค่ารหัสประเภทตัวละคร ให้ใส่ "0" สำหรับเกมที่ไม่มีแนวคิดของตัวละคร |
⠀⠀character_level | int | O | ค่ารหัสประเภทตัวละคร ให้ใส่ "0" สำหรับเกมที่ไม่มีแนวคิดของตัวละคร |
⠀⠀is_emulator | int | O | ให้ใส่ "1" เมื่อเข้าถึงผ่านอีมูเลเตอร์ PC เช่น BlueStacks มิฉะนั้นให้ใส่ "0" |
องค์ประกอบการตอบกลับ¶
ชื่อ | ประเภท | จำเป็น (จำเป็น: M, ไม่จำเป็น: O) | คำอธิบาย |
result | หมายเลข | M | รหัสการตอบกลับ (ดูที่รหัสการตอบกลับ) |
result_msg | ข้อความ | M | ข้อความผลลัพธ์ตามรหัสการตอบกลับ |
hiveiap_transaction_id | ข้อความ | M | รหัสธุรกรรมที่สร้างขึ้นสำหรับใบเสร็จที่ตรวจสอบแล้วอย่างสำเร็จ ค่านี้ควรเก็บไว้ในเซิร์ฟเวอร์เกมเพื่อทำการตรวจสอบใบเสร็จซ้ำ |
hiveiap_market_id | ข้อความ | O | หมายเลขเฉพาะของตลาด (การชำระเงิน PG: กำหนดที่ 15) |
hiveiap_market_pid | ข้อความ | O | PID ของผลิตภัณฑ์การชำระเงิน |
hiveiap_market_transaction_id | ข้อความ | O | หมายเลขคำสั่งซื้อเฉพาะสำหรับคำสั่งซื้อ |
hiveiap_receipt | ข้อความ | O | ค่าของวัตถุใบเสร็จตลาด (การชำระเงิน PG: กำหนดเป็น null) |
hiveiap_purchase_test | ข้อความ | O | สถานะการชำระเงินทดสอบ (Y: การชำระเงินทดสอบ / N: การชำระเงินปกติ) |
hiveiap_iap_payload | ข้อความ | O | ข้อมูลเพิ่มเติมที่ได้รับจากลูกค้าเพื่อนำส่งไปยังเซิร์ฟเวอร์เกม อยู่ในรูปแบบ JSON String และหากไม่มีข้อมูลใด ๆ จะส่งกลับเป็น `null` |
รหัสการตอบกลับ¶
รหัส | ข้อความ | หมายเหตุ |
0 | สำเร็จ, ใบเสร็จซ้ำ | การตรวจสอบสำเร็จ |
1000001 | ไม่มีพารามิเตอร์ที่ร้องขอ | ไม่มีพารามิเตอร์ถูกส่ง |
1000003 | ข้อผิดพลาดในการเชื่อมต่อฐานข้อมูล | เมื่อการเชื่อมต่อฐานข้อมูลล้มเหลว |
1000005 | ข้อผิดพลาดของเซิร์ฟเวอร์ภายใน | ข้อผิดพลาดของเซิร์ฟเวอร์ภายใน |
1000006 | ข้อมูลพารามิเตอร์ที่จำเป็นขาดหายไป | เมื่อค่าพารามิเตอร์ที่จำเป็นขาดหายไป |
1000503 | ไม่สามารถตรวจสอบใบเสร็จได้ | ไม่สามารถตรวจสอบใบเสร็จหรือเป็นใบเสร็จที่ถูกแฮ็ก (เช่น การแฮ็กแบบปลอม) |
1000507 | ไม่สามารถบันทึกข้อมูลการซื้อได้ | ไม่สามารถบันทึกประวัติการซื้อได้ |
1000524 | ไม่สามารถตรวจสอบใบเสร็จได้ (ไม่มีคำสั่ง) | การตรวจสอบใบเสร็จล้มเหลว (คำสั่งที่ไม่มีอยู่) |
1000525 | ไม่สามารถตรวจสอบใบเสร็จได้ (พารามิเตอร์ผิด) | การตรวจสอบใบเสร็จล้มเหลว (ข้อผิดพลาดของพารามิเตอร์) |
ตัวอย่างคำขอ¶
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
ตัวอย่างการตอบกลับ¶
{
"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",
"hiveiap_iap_payload": null
}
การประมวลผลผลลัพธ์การชำระเงิน¶
API การประมวลผลผลลัพธ์การชำระเงิน อิงจาก การส่งผลลัพธ์การชำระเงินสำหรับ IAP v4 ผ่าน API การประมวลผลผลลัพธ์การชำระเงิน การประมวลผลการชำระเงินจากการซื้อสินค้าไปจนถึงการชำระเงินเสร็จสมบูรณ์จะถูกสรุป หากการประมวลผลการชำระเงินยังไม่เสร็จสิ้น ผู้ใช้จะไม่สามารถซื้อผลิตภัณฑ์เดียวกันได้ เมื่อพยายามซื้อและเข้าสู่หน้าชำระเงิน จะมีข้อความระบุว่า 'คุณเป็นเจ้าของผลิตภัณฑ์นี้แล้ว' จะแสดงขึ้น และการชำระเงินจะไม่ดำเนินการต่อ
เมื่อพยายามซื้อและชำระเงินโดยการเปิดหน้าต่างการชำระเงินหลายหน้าต่าง สินค้าทั้งหมดที่ยังไม่ได้รับการประมวลผลจะถูกยกเลิกโดยอัตโนมัติ หลังจากประมวลผลขั้นตอนการชำระเงินทั้งหมด เช่น การตรวจสอบขีดจำกัดการซื้อและการแจกจ่ายสินค้า ซึ่งดำเนินการโดยเซิร์ฟเวอร์เกม ผลลัพธ์การชำระเงินจะถูกส่งไปยังเซิร์ฟเวอร์ Hive IAP v4 เพื่อแจ้งว่าการชำระเงินเสร็จสิ้น หากคุณต้องการขอยกเลิกการชำระเงิน คุณยังสามารถขอยกเลิกผ่าน API การประมวลผลผลลัพธ์การแจกจ่ายได้
URL ที่ร้องขอ¶
URL การผลิต | https://hiveiap.qpyou.cn/api_v4/item_result |
URL แซนด์บ็อกซ์ | https://sandbox-hiveiap.qpyou.cn/api_v4/item_result |
วิธีการ HTTP | POST |
ประเภทเนื้อหา | text/html |
รูปแบบข้อมูล | JSON |
การอนุญาต | Bearer (token) |
---|
โทเค็น Bearer จะตรงกับ Hive คีย์การรับรองความถูกต้องที่พบใน App Center > Project Management > Select Game Company Game > Game Details > Basic Information ของคอนโซล Hive
พารามิเตอร์คำขอ¶
ชื่อ | ประเภท | จำเป็น (จำเป็น: M, ไม่จำเป็น: O) | คำอธิบาย |
hiveiap_transaction_id | String | M | hiveiap_transaction_id ของผลการตรวจสอบใบเสร็จ |
result_status | Number | M | สถานะความสำเร็จในการมอบสิทธิ์ 0: มอบสิทธิ์ล้มเหลว 1: มอบสิทธิ์สำเร็จ 2: คำขอคืนเงินการยกเลิกการชำระเงิน (เฉพาะ PG) |
result_status_message | String | O | เหตุผลในการมอบสิทธิ์ล้มเหลวหรือคำขอการยกเลิกการชำระเงิน |
user_id_type | String | M | Hive ประเภทผู้ใช้ (ใช้ค่าคงที่ `player_id`) |
user_id | Number | M | Hive รหัสผู้ใช้ (`player_id`) |
asset | Object Array | O | ข้อมูลเกี่ยวกับรายการที่มอบให้ ให้ระบุค่าเฉพาะเมื่อการมอบสิทธิ์สำเร็จ และตอบกลับด้วยอาร์เรย์ว่าง ([]) เมื่อการมอบสิทธิ์ล้มเหลว |
asset_id | String | O | รหัสรายการ |
asset_name | String | O | ชื่อรายการ |
⠀⠀quantity | Number | O | จำนวนรายการที่มอบให้ |
องค์ประกอบการตอบกลับ¶
ชื่อ | ประเภท | จำเป็น (จำเป็น: M, ไม่จำเป็น: O) | คำอธิบาย |
result | หมายเลข | M | รหัสตอบกลับ (0: สำเร็จ) |
result_msg | สตริง | M | ข้อความผลลัพธ์ตามรหัสตอบกลับ |
ตัวอย่างคำขอ¶
curl -L -v
-d '{"hiveiap_transaction_id" : "HS_13","result_status": 1,"user_id_type": "player_id","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
ตัวอย่างการตอบกลับ¶
บริการแจ้งผลการชำระเงิน¶
บริการแจ้งผลการชำระเงินจะส่งผลลัพธ์ไปยังเซิร์ฟเกมทันทีเมื่อการชำระเงินเสร็จสิ้นหรือถูกยกเลิก API นี้จะส่งค่าของ purchase_bypass_info
ในลักษณะเดียวกับการตรวจสอบประวัติการชำระเงินที่เสร็จสิ้น ซึ่งอนุญาตให้เกมใช้ค่านี้เพื่อตรวจสอบใบเสร็จและมอบไอเท็มให้กับผู้ใช้ การตรวจสอบใบเสร็จและการมอบไอเท็มควรดำเนินการต่อเมื่อ type
ในข้อมูลการส่งผลการชำระเงิน เป็น paid.
Note
เพื่อใช้ API นี้ คุณต้องตั้งค่า บริษัท PG ใน Hive console ก่อน แนะนำให้ใช้ API นี้หรือ API การตรวจสอบประวัติการชำระเงินสำหรับการตรวจสอบใบเสร็จและการจัดส่งสินค้า
ข้อมูลพื้นฐานเกี่ยวกับการส่งผลลัพธ์การชำระเงิน¶
HTTP Method | POST |
Content-Type | application/json |
Data Format | JSON |
ข้อมูลการส่งผลลัพธ์การชำระเงิน¶
ชื่อ | ประเภท | จำเป็น (จำเป็น: M, ไม่จำเป็น: O) | คำอธิบาย |
type | String | M | ประเภทการแจ้งเตือน (paid: การชำระเงินเสร็จสิ้น, cancelled: การชำระเงินถูกยกเลิกหรือคืนเงิน) |
market_pid | String | M | รหัสผลิตภัณฑ์ที่ไม่ซ้ำกัน |
order_id | String | M | หมายเลขคำสั่งซื้อ |
server_id | String | M | รหัสที่แยกความแตกต่างของเซิร์ฟเวอร์เกมที่ผู้ใช้ทำการซื้อเชื่อมต่ออยู่ |
vid | String | M | PlayerID ของผู้ใช้ที่ทำการซื้อ |
vid_type | String | O | เวอร์ชัน SDK (ค่าเริ่มต้น v4) |
uid | String | O | Hive UID สมาชิกของผู้ใช้ที่ทำการซื้อ |
amount | String | M | จำนวนเงินที่ชำระ |
currency | String | M | สกุลเงินที่ใช้ในการชำระเงิน |
quantity | Number | M | จำนวนที่ซื้อ |
started_datetime | Datetime | M | เวลาที่เริ่มการชำระเงิน (Y-m-d H:i:s) |
paid_datetime | Datetime | M | เวลาที่การชำระเงินเสร็จสิ้น (Y-m-d H:i:s) |
cancelled_datetime | Datetime | O | เวลาที่การชำระเงินถูกยกเลิกหรือคืนเงิน (Y-m-d H:i:s) |
started_datetime_ms | Number | M | เวลาที่เริ่มการชำระเงิน (Unix TimeStamp Milliseconds) |
paid_datetime_ms | Number | M | เวลาที่การชำระเงินเสร็จสิ้น (Unix TimeStamp Milliseconds) |
cancelled_datetime_ms | Number | O | เวลาที่การชำระเงินถูกยกเลิกหรือคืนเงิน (Unix TimeStamp Milliseconds) |
cancelled_reason | String | O | เหตุผลในการยกเลิกหรือคืนเงินการชำระเงิน |
hiveiap_receipt | String | M | HASH ที่เข้ารหัสของข้อมูลการชำระเงิน |
purchase_bypass_info | String | M | ข้อมูลที่จำเป็นสำหรับการตรวจสอบใบเสร็จ |
iap_payload | สตริง | O | ข้อมูลเพิ่มเติมที่ได้รับจากลูกค้าเพื่อนำส่งไปยังเซิร์ฟเวอร์เกม มันอยู่ในรูปแบบ JSON String และถ้าไม่มีข้อมูลใดๆ ที่ได้รับ จะส่งคืน null. |
ตัวอย่างการส่งผลการชำระเงิน (เมื่อชำระเงินเสร็จสิ้น)¶
{
"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,
"hiveiap_receipt": "tJpwQSIlNFiCSPokHSRYTvTLmtbDiSZnkYa7+IWaMwM=",
"started_datetime_ms": 1689938226000,
"paid_datetime_ms": 1689938293000,
"cancelled_datetime_ms": null,
"iap_payload": null,
"purchase_bypass_info": "eyJ0eXBlIjoicGFpZCIsIm1hcmtldF9pZCI6IjE1Iiwib3JkZXJfaWQiOi..."
}
ตัวอย่างการส่งผลการชำระเงิน (ในกรณีที่การชำระเงินถูกยกเลิก)¶
{
"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,
"hiveiap_receipt": "tJpwQSIlNFiCSPokHSRYTvTLmtbDiSZnkYa7+IWaMwM=",
"started_datetime_ms": 1689938226000,
"paid_datetime_ms": 1689938293000,
"cancelled_datetime_ms": 1689938504000,
"iap_payload": null,
"purchase_bypass_info": "eyJ0eXBlIjoiY2FuY2VsbGVkIiwibWFya2V0X2lkIjoiMT..."
}
การสอบถามประวัติการคืนเงินของผู้ใช้ที่ชำระเงินคืน¶
API นี้ใช้ในการดึงประวัติการคืนเงินสำหรับผู้ใช้ที่ได้ขอคืนเงินและต้องการทำการชำระเงินใหม่
หากคุณได้เปิดใช้งานฟีเจอร์การชำระเงินใหม่สำหรับผู้ใช้ที่คืนเงินในร้านค้าเว็บที่คุณพัฒนาขึ้นเอง คุณควรสร้าง UI ป๊อปอัปการแจ้งเตือนการชำระเงินใหม่สำหรับผู้ใช้ที่คืนเงินโดยใช้ค่าผลลัพธ์จาก API 'การสอบถามประวัติการคืนเงินเป้าหมายสำหรับการชำระเงินใหม่ของผู้ใช้ที่คืนเงิน'
เมื่อใช้ API 'การสอบถามประวัติการคืนเงินเป้าหมายการชำระเงินคืนของผู้ใช้' โปรดทราบถึงเรื่องต่อไปนี้
- รายการตอบกลับ
is_refund
จาก PlayerID Lookup API สามารถใช้ได้เฉพาะเมื่อมันเป็นจริง - เมื่อขอการชำระเงินสำหรับกรณีการชำระเงินคืน พารามิเตอร์ json ในคำขอจะต้องรวม
refund_idx(Integer)
และis_repayment(Integer)
เป็นรายการที่จำเป็น
URL การร้องขอ¶
สภาพแวดล้อม | URL |
---|---|
URL การผลิต | https://store.withhive.com/external/api/refund_info |
URL แซนด์บ็อกซ์ | https://sandbox-store.withhive.com/external/api/refund_info |
HTTP Method | POST |
Content-Type | text/html; charset=utf-8 |
รูปแบบข้อมูล | JSON |
การอนุญาต | Bearer (token) |
โทเค็น Bearer จะตรงกับ Hive คีย์การตรวจสอบสิทธิ์ที่พบใน App Center > Project Management > Select Game Company > Game Details > Basic Information ของคอนโซล Hive
พารามิเตอร์คำขอ¶
ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
appid | String | O | Hive Appid |
vid_type | String | O | ประเภทบัญชี ("v4") |
vid | String | O | Hive ข้อมูลบัญชี (Player ID) |
game_language | String | O | ภาษา (ISO 639-1 สองตัวอักษร) |
device | String | X | การแยกแยะ PC, Mobile (pc, mobile) * หากไม่มีรายการอุปกรณ์ จะถูกตั้งค่าเป็น mobile ในการตอบกลับ |
องค์ประกอบการตอบกลับ¶
ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
result | จำนวนเต็ม | O | รหัสการตอบกลับ (0 คือสำเร็จ, อื่นใดคือข้อผิดพลาด) |
result_msg | สตริง | O | ข้อความการตอบกลับ |
guide_title | สตริง | O | ชื่อคู่มือ |
guide_content | สตริง | O | เนื้อหาคู่มือ |
customer_site | วัตถุ | O | ที่อยู่บริการลูกค้า |
customer_site > pc | สตริง | O | ที่อยู่บริการลูกค้า PC |
customer_site > mobile | สตริง | O | ที่อยู่บริการลูกค้า Mobile |
refund_list | อาเรย์ > วัตถุ | O | รายการการคืนเงิน |
refund_list > refund_idx | จำนวนเต็ม | X | รหัสดัชนีการคืนเงิน |
refund_list > market_id | จำนวนเต็ม | X | Hive รหัสตลาด |
refund_list > market_pid | สตริง | X | รหัสผลิตภัณฑ์ |
refund_list > refund_time | สตริง | X | วันที่และเวลาการคืนเงิน |
refund_list > refund_time_ms | จำนวนเต็ม | X | วันที่และเวลาการคืนเงิน (Unix TimeStamp Milliseconds) |
refund_list > quantity | จำนวนเต็ม | X | จำนวนผลิตภัณฑ์ที่ซื้อ |
ตัวอย่างคำขอ¶
curl -L -v \
-d '{"appid":"com.com2us.hivesdk.normal.freefull.apple.global.ios.universal","vid_type":"v4","vid":"20000015900","game_language":"ko","device":"pc"}' \
-H "Content-Type: text/html" \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJIaXZlIiwiaWF0IjoxNjAyMDU2NzI2LCJqdGkiOiIxODczMTExMzIwIn0.3soFiHTPlObCoqR5xX9ZeOQTSvnHrHDHWmopP3QfWtY" \
https://sandbox-store.withhive.com/external/api/refund_info
ตัวอย่างการตอบกลับ¶
{
"result": 0,
"result_msg": "success",
"guide_title": "환불 상품 재결제 안내",
"guide_content": "고객님의 계정은 게임 서비스 약관 및 운영 정책 위반 행위(결제시스템 악용)가 확인되어,
게임 이용이 제한되었습니다.\n\n알 수없는 이유로 결제가 취소되었거나, 혹은 비정상적인 절차로 환불된 상품의 경우, 동일 상품 재결제 후 게임 이용이 가능합니다.\n\n 현재 접속한 단말OS의 마켓 상품만 재결제가 가능하오니, 다른 마켓은 해당 앱으로 접속하여 재결제 부탁드립니다.
스팀 환불 내역에 대한 재결제는 PC에서 진행하세요. 모든 마켓의 취소/환불 상품의 재결제가 완료되어야 게임 이용이 가능합니다.\n\n일부 마켓에서 한 상품을 여러 수량으로 한 번에 구매 후 환불한 경우,
동일한 수량으로 재결제 해야 합니다. 만약 환불한 수량과 재결제한 수량이 일치하지 않으면 해당 재결제 건은 자동 취소됩니다.
취소되는 시점은 마켓에 따라 상이하며 수일이 걸릴 수 있습니다.\n\n 재결제 도중 오류로 인하여 결제 실패한 경우, 현재 계정으로 다시 게임을 재실행해주세요. 디바이스를 변경하여 동일한 마켓계정이면서 다른 게임 계정으로 로그인하시면 결제가 정상적으로 완료되지 않을 수 있습니다.\n\n결제 불가상품을 비롯한 그밖의 문의사항은 고객센터로 접수 부탁드립니다.\n\n* 환불 시간은 UTC+9 기준입니다.",
"customer_site": {
"pc": "https://sandbox-customer.withhive.com/com2us/faq/game/539",
"mobile": "https://sandbox-customer-m.withhive.com/com2us/faq/game/539"
},
"refund_list": [
{
"refund_idx": 20850,
"market_id": 1,
"market_pid": "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal.cs01",
"refund_time": "2023.02.02 15:47 (UTC+9)",
"refund_time_ms": 1675320475000,
"quantity": 1
}
]
}
ตัวอย่างป๊อปอัปการแจ้งเตือนการคืนเงินผู้ใช้¶
Warning
ผู้ใช้จะต้อง implement ปุ่ม 'Refresh' ที่อนุญาตให้พวกเขาอัปเดตรายการสินค้าที่ซื้อซ้ำหลังจากชำระเงินสำหรับการซื้อซ้ำเสร็จสิ้น หลังจากชำระเงินสำหรับการซื้อซ้ำเสร็จสิ้น จะต้องเรียกใช้ API 'Refund User Re-purchase Target Refund History Inquiry' อีกครั้งเพื่อดำเนินการกับกระบวนการปล่อยการตรวจสอบสิทธิ์