การชำระเงิน Web PG
API การชำระเงิน PG เว็บไม่ใช้ Hive SDK การเรียกเก็บเงิน เมื่อพัฒนาแอป Windows แต่เป็น API ที่ใช้เมื่อคุณต้องการใช้การชำระเงิน PG บนเว็บไซต์ API การชำระเงิน PG เว็บแตกต่างจาก API ที่ใช้ในการดำเนินการชำระเงิน PG ในแอป
Note
ในการดำเนินการชำระเงิน PG ในแอป คุณต้องใช้ Hive SDK Billing และ API การชำระเงิน PG ทั่วไป
การดูรายการสินค้า¶
นำข้อมูลสินค้าเข้ามา ใช้ในการ implement รายการสินค้าในแอป
URL ที่ร้องขอ¶
สภาพแวดล้อม | URL |
---|---|
URL การผลิต | https://store.withhive.com/external/api/product |
URL แซนด์บ็อกซ์ | https://sandbox-store.withhive.com/external/api/product |
HTTP Method | POST |
Content-Type | text/html; charset=utf-8 |
รูปแบบข้อมูล | JSON |
การอนุญาต | Bearer (โทเค็น) |
Bearer โทเค็นคือ Hive คอนโซล แอปเซ็นเตอร์ > การจัดการโปรเจกต์ > เลือกเกมของผู้พัฒนาเกม > รายละเอียดเกม > ข้อมูลพื้นฐาน ที่ตรงกับคีย์การรับรองของ Hive
พารามิเตอร์คำขอ¶
ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
api | String | O | ค่าการแยกประเภท api (`product` ใช้ค่าคงที่) |
market_id | String | O | รหัสตลาด Hive (การชำระเงิน PG: `15` ใช้ค่าคงที่) |
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_type | String | O | ประเภทสินค้า (ใช้แล้วหมดไป: consumable) |
องค์ประกอบการตอบกลับ¶
ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
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 | สตริง | ใช่ | ประเภทสินค้า (ใช้แล้ว: consumable) |
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 Method | POST |
Content-Type | text/html; charset=utf-8 |
Data Format | JSON |
Authorization | Bearer (โทเค็น) |
Bearer โทเค็นคือ Hive คอนโซล แอปเซ็นเตอร์ > การจัดการโปรเจกต์ > เลือกเกมของผู้พัฒนาเกม > รายละเอียดเกม > ข้อมูลพื้นฐาน ที่ตรงกับ Hive คีย์การรับรอง
พารามิเตอร์การร้องขอ¶
ฟิลด์ | ประเภท | จำเป็น | คำอธิบาย |
---|---|---|---|
market_id | String | O | รหัสตลาด Hive |
appid | String | O | รหัสแอป Hive |
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 | PID สินค้า |
server_id | String | O | รหัสเซิร์ฟเวอร์ |
os | String | O | Windows: W, MAC: M, Android: A |
quantity | Integer | X | จำนวนที่ซื้อ (ถ้าไม่ส่งจะใช้ค่าเริ่มต้น 1) |
iap_payload | String | X | ข้อมูลเมตาที่กำหนดโดยผู้พัฒนาแอป ข้อมูลการซื้อ |
ตัวอย่างคำขอ¶
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
ตัวอย่างการตอบกลับ¶
เมื่อคำขอสั่งซื้อสินค้าถูกประมวลผลอย่างถูกต้อง จะมีการคืนค่าหน้าต่างป๊อปอัปให้เลือกวิธีการชำระเงิน คืนค่าหน้า HTML ที่ประกอบด้วยหน้าต่างป๊อปอัปด้านล่าง
ตรวจสอบประวัติการชำระเงิน¶
เมื่อการชำระเงินเสร็จสมบูรณ์ บริษัทประมวลผลการชำระเงิน (PG) จะส่งผลการชำระเงินไปยังเซิร์ฟเวอร์ Hive IAP v4 โดยตรง วิธีนี้ช่วยเสริมความปลอดภัยจากความไม่เสถียรของเครือข่ายและป้องกันการปลอมแปลงข้อมูลการชำระเงิน การทำงานเบื้องต้น จะทำการตรวจสอบข้อมูลการชำระเงินที่ลงทะเบียนและข้อมูลของบริษัทประมวลผลการชำระเงิน (PG) เพื่อทำการตรวจสอบข้ามข้อมูล หากความสมบูรณ์ของข้อมูลการชำระเงินได้รับการยืนยัน จะมีการจัดเตรียมมาตรการความปลอดภัยเพิ่มเติมและบันทึกข้อมูลการชำระเงิน ข้อมูลการชำระเงินที่บันทึกไว้สามารถตรวจสอบได้ผ่าน API การตรวจสอบประวัติการชำระเงินที่เสร็จสมบูรณ์
ในฝั่งของไคลเอนต์ เมื่อถึงเวลาที่ต้องการข้อมูลการชำระเงินที่เสร็จสมบูรณ์ของผู้ใช้ จะมีการขอข้อมูลไปยังเซิร์ฟเวอร์เกม และเซิร์ฟเวอร์เกมจะทำการตรวจสอบข้อมูลการชำระเงินผ่านเซิร์ฟเวอร์ Hive IAP v4 หากมีประวัติการชำระเงินของผู้ใช้ จะใช้ purchase_bypass_info
ในการตรวจสอบข้อมูลการชำระเงิน
URL ที่ร้องขอ¶
URL ที่ใช้งาน | https://hiveiap.qpyou.cn/api_v4/purchases/unconsumed |
URL Sandbox | https://sandbox-hiveiap.qpyou.cn/api_v4/purchases/unconsumed |
HTTP Method | POST |
Content-Type | application/json |
Data Format | JSON |
Authorization | Bearer (โทเค็น) |
---|
Bearer token คือคีย์การรับรองของ Hive ที่สามารถพบได้ใน แอปเซ็นเตอร์ > การจัดการโปรเจกต์ > เลือกเกมของผู้พัฒนาเกม > รายละเอียดเกม > ข้อมูลพื้นฐาน
พารามิเตอร์คำขอ¶
ชื่อ | ประเภท | ความจำเป็น (จำเป็น: M, ตัวเลือก: O) | คำอธิบาย |
appid | String | M | ID ที่ลงทะเบียนและออกจาก Hive Console > App Center |
market_id | Number | M | หมายเลข ID ที่ไม่ซ้ำในตลาด (`15` ค่าคงที่) |
server_id | String | M | รหัสแยกประเภทเซิร์ฟเวอร์เกมที่เกิดการชำระเงิน |
user_id_type | String | M | ประเภทผู้ใช้ HIVE uid : โมดูลแต่ละตัว(v0) vid : การรับรอง v1(v1) player_id : การรับรอง v4(v4) |
user_id | Number | M | หมายเลข ID ผู้ใช้ HIVE ส่งตาม user_id_type uid : โมดูลแต่ละตัว(v0) vid : การรับรอง v1(v1) player_id : การรับรอง v4(v4) |
องค์ประกอบของการตอบกลับ¶
ชื่อ | ประเภท | จำเป็นหรือไม่ (จำเป็น: M, ตัวเลือก: O) | คำอธิบาย |
result | Number | M | รหัสตอบกลับ (0: สำเร็จ) |
result_msg | String | M | ข้อความผลลัพธ์ตามรหัสตอบกลับ |
unconsumed_lists | Object Array | M | |
┕ market_pid | String | M | รหัสสินค้าเฉพาะ |
┕ order_id | String | M | หมายเลขคำสั่งซื้อ |
┕ server_id | String | M | รหัสแยกเกมเซิร์ฟเวอร์ที่ผู้ซื้อเข้าถึง |
┕ vid | String | M | PlayerID ของผู้ซื้อ สำหรับการรับรอง v1 คือ VID |
┕ uid | String | O | 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) |
┕ hiveiap_receipt | String | M | HASH การเข้ารหัสข้อมูลการชำระเงิน |
┕ purchase_bypass_info | String | M | ข้อมูลที่จำเป็นสำหรับการตรวจสอบใบเสร็จ |
┕ additionalInfo | String | O | ข้อมูลเพิ่มเติมที่ได้รับจากไคลเอนต์เพื่อส่งไปยังเซิร์ฟเวอร์เกม (รูปแบบ JSON String) (หากไม่มีข้อมูลที่ได้รับจะคืนค่า 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...",
"additionalInfo": 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 Sandbox | https://sandbox-hiveiap-verify.qpyou.cn/api_v4/verify |
วิธีการ HTTP | POST |
ประเภทเนื้อหา | text/html |
รูปแบบข้อมูล | JSON |
การอนุญาต | Bearer (โทเค็น) |
---|
Bearer โทเค็นคือ Hive คอนโซล แอปเซ็นเตอร์ > การจัดการโครงการ > เลือกเกมของผู้พัฒนา > รายละเอียดเกม > ข้อมูลพื้นฐาน ที่ตรงกับ Hive authentication key.
พารามิเตอร์การร้องขอ¶
ชื่อ | ประเภท | ความจำเป็น (จำเป็น: M, ตัวเลือก: O) | คำอธิบาย |
purchase_bypass_info | String | M | ข้อมูลสำหรับการแทนใบเสร็จและการส่งข้อมูลการวิเคราะห์ |
game_info | Object Array | O | เมื่อมีบันทึกเกม เช่น บันทึกยอดขาย ให้เพิ่มค่านี้ไปยังเกมเพื่อส่งข้อมูล Hive IAP จะทำการส่งไปยังเซิร์ฟเวอร์การวิเคราะห์ ในขั้นตอนการตรวจสอบใบเสร็จ จะไม่สามารถทราบได้ว่ามีการส่งไอเท็มเสร็จสิ้นหรือไม่ (itemsendok) ดังนั้นส่วนนี้ต้องมีการพัฒนาแยกต่างหากเพื่อให้ข้อมูลเพิ่มเติม |
⠀⠀server_uid | bigint | O | user_id ที่ออกโดยเซิร์ฟเวอร์เกม ถ้าไม่มีให้ใช้ 0 |
⠀⠀giftee_uid | bigint | O | null: การชำระเงินเพื่อใช้เอง 0: มีผู้รับของขวัญแต่ไม่สามารถตรวจสอบ UID ได้ บัญชีแขกของ Derby Days ไม่มีบัญชีแขกของ Hub ดังนั้นจึงอยู่ในหมวดนี้ |
⠀⠀level | int | O | ระดับในเกมของผู้ใช้ หากไม่มีระดับไม่จำเป็น ถ้าไม่มีให้ใช้ 0 |
⠀⠀character_id | bigint | O | ค่าการแยกแยะตัวละครที่ไม่ซ้ำกันในเซิร์ฟเวอร์ (PK?). หากไม่มีแนวคิดตัวละครให้ใช้ "0" |
⠀⠀character_type_id | int | O | ค่าการแยกแยะประเภทตัวละคร หากเกมไม่มีแนวคิดตัวละครให้ใส่ "0" |
⠀⠀character_level | int | O | ค่าการแยกแยะประเภทตัวละคร หากเกมไม่มีแนวคิดตัวละครให้ใส่ "0" |
⠀⠀is_emulator | int | O | เมื่อเข้าถึงผ่านโปรแกรมจำลองสำหรับ PC เช่น BlueStacks ให้ใส่ "1" ในกรณีอื่นให้ใส่ "0" |
องค์ประกอบการตอบกลับ¶
ชื่อ | ประเภท | ความจำเป็น (จำเป็น: M, ตัวเลือก: O) | คำอธิบาย |
result | Number | M | รหัสการตอบกลับ (ดูรหัสการตอบกลับ) |
result_msg | String | M | ข้อความผลลัพธ์ตามรหัสการตอบกลับ |
hiveiap_transaction_id | String | M | หมายเลขธุรกรรมที่สร้างขึ้นสำหรับใบเสร็จที่ตรวจสอบสำเร็จ ค่านี้จะถูกเก็บไว้ในเซิร์ฟเวอร์เกมเพื่อให้เกมทำการตรวจสอบใบเสร็จซ้ำ |
hiveiap_market_id | String | O | หมายเลขเฉพาะของตลาด (การชำระเงิน PG: 15 คงที่) |
hiveiap_market_pid | String | O | PID ของสินค้าที่ชำระเงิน |
hiveiap_market_transaction_id | String | O | หมายเลขคำสั่งซื้อเฉพาะสำหรับคำสั่งซื้อ |
hiveiap_receipt | String | O | ค่าของวัตถุใบเสร็จตลาด (การชำระเงิน PG: null คงที่) |
hiveiap_purchase_test | String | O | สถานะการชำระเงินทดสอบ (Y: การชำระเงินทดสอบ / N: การชำระเงินทั่วไป) |
รหัสการตอบกลับ¶
รหัส | ข้อความ | ความคิดเห็น |
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"
}
การจัดการผลการจ่าย¶
API การจัดการผลการจ่าย อิงจาก การส่งผลการจ่าย IAP v4 การจัดการผลการจ่าย API จะทำให้การประมวลผลการชำระเงินตั้งแต่การซื้อไอเท็มจนถึงการจ่ายเสร็จสมบูรณ์เป็นไปอย่างสมบูรณ์ หากการประมวลผลการชำระเงินยังไม่เสร็จสิ้น ผู้ใช้จะไม่สามารถซื้อสินค้าที่เหมือนกันได้ หากพยายามซื้อและเข้าสู่หน้าชำระเงิน จะมีข้อความ 'คุณมีสินค้านี้อยู่แล้ว' แสดงขึ้นและการชำระเงินจะไม่ดำเนินการต่อ
หากมีการเปิดหน้าชำระเงินหลายหน้าเพื่อพยายามซื้อและชำระเงิน สินค้าที่ไม่ได้รับการชำระเงินจะถูกยกเลิกโดยอัตโนมัติทั้งหมด หลังจากดำเนินการตรวจสอบจำนวนการซื้อที่ทำโดยเซิร์ฟเวอร์เกม การมอบไอเทม และกระบวนการชำระเงินทั้งหมด จะส่งผลลัพธ์การชำระเงินไปยังเซิร์ฟเวอร์ Hive IAP v4 เพื่อแจ้งว่าการชำระเงินเสร็จสมบูรณ์ หากต้องการขอยกเลิกการชำระเงิน สามารถขอการยกเลิกผ่าน API การจัดการผลการมอบได้เช่นกัน
URL ที่ร้องขอ¶
URL ที่ใช้งาน | https://hiveiap.qpyou.cn/api_v4/item_result |
URL Sandbox | https://sandbox-hiveiap.qpyou.cn/api_v4/item_result |
วิธีการ HTTP | POST |
ประเภทเนื้อหา | text/html |
รูปแบบข้อมูล | JSON |
การอนุญาต | Bearer (โทเค็น) |
---|
โทเค็น Bearer จะตรงกับคีย์การรับรองของ 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 v0: โมดูลแยก (uid) v1: การตรวจสอบ v1 (vid) v4: การตรวจสอบ v4 (player_id) |
user_id | Number | M | รหัสผู้ใช้ หาก user_id_type เป็น v0 ให้ส่ง uid, v1 ให้ส่ง vid, v4 ให้ส่ง player_id |
asset | Object Array | O | ข้อมูลไอเทมที่มอบให้ ส่งค่าก็ต่อเมื่อมอบสำเร็จ และตอบกลับด้วย array ว่าง ([]) เมื่อมอบไม่สำเร็จ |
asset_id | String | O | รหัสไอเทม |
asset_name | String | O | ชื่อไอเทม |
⠀⠀quantity | Number | O | จำนวนไอเทมที่มอบให้ |
องค์ประกอบการตอบกลับ¶
ชื่อ | ประเภท | ความจำเป็น (จำเป็น: M, ตัวเลือก: O) | คำอธิบาย |
result | Number | M | รหัสการตอบกลับ (0: สำเร็จ) |
result_msg | String | M | ข้อความผลลัพธ์ตามรหัสการตอบกลับ |
ตัวอย่างคำขอ¶
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
ตัวอย่างการตอบกลับ¶
บริการแจ้งผลการชำระเงิน¶
บริการแจ้งผลการชำระเงินจะส่งผลการชำระเงินทันทีเมื่อมีการชำระเงินสำเร็จหรือยกเลิกการชำระเงิน API นี้จะส่งค่าของ purchase_bypass_info
เช่นเดียวกับการตรวจสอบประวัติการชำระเงิน การตรวจสอบประวัติการชำระเงิน ดังนั้นเกมสามารถใช้ค่านี้ในการตรวจสอบใบเสร็จและมอบสินค้าให้กับผู้ใช้ได้ ข้อมูลการส่งผลการชำระเงิน จะต้องทำการตรวจสอบใบเสร็จและมอบสินค้าเฉพาะเมื่อ type
เป็น paid เท่านั้น
Note
คุณต้องตั้งค่า PG ที่จะใช้ใน Hive Console ก่อนที่จะใช้ API นี้ แนะนำให้ใช้ 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 | Number | M | PlayerID ของผู้ซื้อ สำหรับการรับรอง v1 คือ VID |
vid_type | String | O | ค่าประเภท vid ตามเวอร์ชัน SDK (ค่าเริ่มต้น v4) |
uid | Number | O | 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) |
cancelled_reason | String | O | เหตุผลที่การชำระเงินถูกยกเลิกหรือคืนเงิน |
hiveiap_receipt | String | M | HASH การเข้ารหัสข้อมูลการชำระเงิน |
purchase_bypass_info | String | M | ข้อมูลที่จำเป็นสำหรับการตรวจสอบใบเสร็จ |
additionalInfo | String | 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,
"additionalInfo": null,
"hiveiap_receipt": "tJpwQSIlNFiCSPokHSRYTvTLmtbDiSZnkYa7+IWaMwM=",
"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,
"additionalInfo": null,
"hiveiap_receipt": "tJpwQSIlNFiCSPokHSRYTvTLmtbDiSZnkYa7+IWaMwM=",
"purchase_bypass_info": "eyJ0eXBlIjoiY2FuY2VsbGVkIiwibWFya2V0X2lkIjoiMT..."
}