IAP v4 แจ้งเตือนการสมัครสมาชิกแบบเรียลไทม์
การแจ้งเตือนการสมัครสมาชิกแบบเรียลไทม์ช่วยให้เกมของคุณสามารถดำเนินการสมัครสมาชิกประเภทต่างๆ เช่น ในช่วงเวลาที่ได้รับการยกเว้น, หยุดชั่วคราว, และหยุดโดยการรับสถานะการสมัครสมาชิก การแจ้งเตือนการสมัครสมาชิกแบบเรียลไทม์ API จะถูกเรียกจากฝั่งเซิร์ฟเวอร์ IAP และจะส่งคำขอไปยังเซิร์ฟเวอร์เกมของคุณ มันจะส่งการเปลี่ยนแปลงสถานะของการสมัครสมาชิกของผู้ใช้ผ่านเนื้อหาคำขอของ API นี้แบบเรียลไทม์ ดังนั้นเซิร์ฟเวอร์เกมของคุณควรจัดเตรียมจุดสิ้นสุด API (URL) เพื่อรับข้อมูลนี้ไปยัง Hive Server.
URL ของ API สามารถลงทะเบียนได้ใน the Hive Console > App Center > Game List > Game details > Game server > Market Server Notification URL หากเซิร์ฟเวอร์เกมถูกแบ่งตามภูมิภาคและแต่ละภูมิภาคต้องการรับการแจ้งเตือน ให้จัดเตรียม URL ทีละรายการ จากนั้น IAP จะส่งการแจ้งเตือนไปยังเซิร์ฟเวอร์เกมทั้งหมด.
IAP ส่งสถานะการสมัครสมาชิกแบบเรียลไทม์จาก Hive Server ไปยังเซิร์ฟเวอร์เกม ดังนั้นโปรดตรวจสอบว่าเซิร์ฟเวอร์เกมเปิดไฟร์วอลล์ขาเข้าของเซิร์ฟเวอร์ IP ต่อไปนี้เพื่อรับการแจ้งเตือน.
- 43.202.181.138
- 3.38.239.17
- Request Specification ( IAP > Game server)
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น notification_type String Y sub_type ประเภทย่อยของการแจ้งเตือน ใช้เฉพาะสำหรับการแจ้งเตือนของ Apple ข้อมูลประเภทย่อย. String N hiveiap_market_id รหัสตลาดที่ชำระเงิน - Apple App Store
- Google Play Store
Integer Y hiveiap_receipt_verify_result ผลการตรวจสอบใบเสร็จที่ส่งจากเซิร์ฟเวอร์การตรวจสอบตลาด Object Y hiveiap_receipt_start_date_ms เวลาเริ่มต้นของการสมัครสมาชิก (Unix TimeStamp Milliseconds) String Y hiveiap_receipt_expire_date_ms เวลาสิ้นสุดของการสมัครสมาชิก (Unix TimeStamp Milliseconds) หากค่าตัวนี้ถูกเปลี่ยนแปลง คุณต้องนำไปใช้ในเกมของคุณสำหรับประเภทการแจ้งเตือนทั้งหมด ตัวอย่างเช่น คุณต้องเปลี่ยนวันที่หมดอายุของการสมัครสมาชิกของไอเท็มเกมของผู้ใช้ในเกมของคุณ. String Y hiveiap_receipt_autoresume_date_ms - เวลาที่การสมัครสมาชิกกลับมาทำงานอีกครั้งหากการสมัครสมาชิกถูกหยุดชั่วคราว (Unix TimeStamp Milliseconds)
- “” จะถูกส่งหากการสมัครสมาชิกไม่ได้ถูกหยุดชั่วคราว
String N hiveiap_receipt_subscription_state สถานะการสมัครสมาชิก
- ใช้งาน
- ในระยะเวลาผ่อนผัน
- ระงับ
- หยุดชั่วคราว
- หมดอายุ
- ระยะเวลาผ่อนผัน: ขยายวันหมดอายุจนกว่าสถานะการชำระเงินของผู้ใช้จะกลับสู่ปกติ (ใช้เฉพาะในระยะเวลาผ่อนผันที่ตั้งไว้ใน Google Play Console).
- การระงับบัญชี: การอนุญาตให้ใช้เนื้อหาไม่ได้รับการอนุญาตเนื่องจากมีปัญหาการชำระเงินรวมถึงเวลาหมดอายุสิ้นสุด แต่จะขยายเวลาหมดอายุการสมัครสมาชิกเมื่อกู้คืนการสมัครสมาชิกที่ชำระเงินหลังจากสถานะการชำระเงินกลับสู่ปกติ (เก็บสถานะการระงับสูงสุด 30 วัน).
จำนวนเต็ม N hiveiap_apple_info วัตถุนี้มีค่า key เพื่อระบุใบเสร็จการสมัครสมาชิกในผลการตรวจสอบใบเสร็จการสมัครสมาชิกของ Apple ใช้เฉพาะสำหรับใบเสร็จการสมัครสมาชิกใน App Store เท่านั้น ส่งมอบเมื่อรหัสตอบกลับเป็น 0 (การตรวจสอบสำเร็จ). วัตถุ N ㄴ original_transaction_id นี่คือค่า key เพื่อระบุใบเสร็จการสมัครสมาชิกของ Apple สำหรับบัญชี App Store ค่านี้จะคงที่สำหรับผลิตภัณฑ์เดียวกันที่ซื้อ หรือสำหรับผลิตภัณฑ์ในกลุ่มเดียวกันที่อัปเกรด ลดระดับ ซื้อใหม่ หรือยกเลิกการซื้อ (อนุญาตให้มี 16 ตัวอักษร แต่สามารถแตกต่างกันได้เนื่องจากไม่มีแนวทางเฉพาะเกี่ยวกับความยาวของสตริงนี้). สตริง N hiveiap_google_info ค่า key เพื่อระบุใบเสร็จในผลการตรวจสอบใบเสร็จการสมัครสมาชิกของ Google ใบเสร็จการสมัครสมาชิกใน Play Store เท่านั้น ส่งค่าก็ต่อเมื่อรหัสตอบกลับเป็น 0 (การตรวจสอบสำเร็จ). วัตถุ N ㄴ purchase_token โทเค็นการซื้อในใบเสร็จ. ค่าของโทเค็นต้องมี 200 ตัวอักษรขึ้นไป และสามารถเปลี่ยนแปลงความยาวได้เนื่องจากไม่มีข้อจำกัดในคู่มือของ Google. สตริง N ㄴ purchase_token_hash สร้างขึ้นโดยการแฮชค่าของฟิลด์ `purchase_token` (sha1). เนื่องจากความยาวของค่าของ `purchase_token` ยาว จึงมีการประมวลผลการแฮชเพื่อค้นหาและบันทึกในฐานข้อมูลอย่างง่าย (40 ตัวอักษร). สตริง N ㄴ linked_purchase_token หากใบเสร็จการสมัครสมาชิกถูกออกใหม่หลังจากการอัปเกรด ลดระดับ ยกเลิก หรือเปิดใช้งานใหม่ ค่าของฟิลด์นี้สามารถระบุโทเค็นการซื้อในใบเสร็จเก่าได้. แนะนำให้หมดอายุโดยบังคับหากมีค่า. ค่าของโทเค็นต้องมี 200 ตัวอักษรขึ้นไป และสามารถเปลี่ยนแปลงความยาวได้เนื่องจากไม่มีข้อจำกัดในคู่มือของ Google. (อย่างไรก็ตาม ไม่มีการออกใหม่ในกรณีที่เปิดใช้งานใหม่ใน Play Store) สตริง N ㄴ linked_purchase_token_hash สร้างขึ้นโดยการแฮชค่าของฟิลด์ `linked_purchase_token` (sha1). เนื่องจากความยาวของค่าของ `linked_purchase_token` ยาว จึงมีการประมวลผลการแฮชเพื่อค้นหาและบันทึกในฐานข้อมูลอย่างง่าย (40 ตัวอักษร). สตริง N hiveiap_iap_payload นี่คือข้อมูลเมตาของการซื้อที่กำหนดโดยบริษัทเกม หากไม่มีการกำหนดข้อมูลเมตา จะส่งกลับ `null`。 String Y hiveiap_receipt_cancel_date_ms นี่คือเวลาที่ (unix timestamp, ms) เมื่อการสมัครสมาชิกถูกยกเลิก ค่าเริ่มต้นคือ 0. จำนวนเต็ม ใช่ hiveiap_receipt_refund_date_ms นี่คือเวลาที่ทำการคืนเงิน (unix timestamp, ms) เมื่อมีการซื้อคืนเงิน โดยค่าปริยายคือ 0. จำนวนเต็ม Y
- โทร ( IAP > Game server)
curl -L -v
-d '{"notification_type":"SUBSCRIBED","sub_type":"RESUBSCRIBE","hiveiap_market_id":1,"hiveiap_market_pid":"com.com2us.hivesdk.normal.freefull.apple.global.ios.universal.arshive001","hiveiap_receipt_verify_result":{"status":0,"receipt":{"transactionId":"2000000326618738","originalTransactionId":"2000000287618347","webOrderLineItemId":"2000000026848658","bundleId":"com.com2us.hivesdk.normal.freefull.apple.global.ios.universal","productId":"com.com2us.hivesdk.normal.freefull.apple.global.ios.universal.arshive001","subscriptionGroupIdentifier":"20519034","purchaseDate":1683534980000,"originalPurchaseDate":1677492217000,"expiresDate":1683535160000,"quantity":1,"type":"Auto-Renewable Subscription","appAccountToken":"5e657cde-3651-34c0-93fa-1e9cfccfafa2","inAppOwnershipType":"PURCHASED","signedDate":1688470718581,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"KOR","storefrontId":"143466"}},"hiveiap_receipt_start_date_ms":"1683534980000","hiveiap_receipt_expire_date_ms":"1683535160000","hiveiap_apple_info":{"original_transaction_id":"2000000287618347"},"hiveiap_iap_payload":"{\"server\":\"1\",\"character\":\"1\"}","hiveiap_receipt_cancel_date_ms":0,"hiveiap_receipt_refund_date_ms":0}' \
-H "Content-Type: text/html" \
https://sandbox-misample.com2us.net/hive/Iap_subscription_notification // (the API endpoint example provided from your game server)
curl -L -v
-d '{"notification_type":"13","hiveiap_market_id":2,"hiveiap_market_pid":"sub01","hiveiap_receipt_verify_result":{"kind":"androidpublisher#subscriptionPurchaseV2","startTime":"2023-07-25T08:00:19.285Z","regionCode":"KR","subscriptionState":"SUBSCRIPTION_STATE_EXPIRED","latestOrderId":"GPA.3319-2535-4331-99754..0","canceledStateContext":{"userInitiatedCancellation":{"cancelTime":"2023-07-25T08:07:21.881Z"}},"testPurchase":[],"acknowledgementState":"ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED","externalAccountIdentifiers":{"obfuscatedExternalAccountId":"84530982-c9c3-3114-b0dc-848dd7e8bf76"},"lineItems":[{"productId":"sub01","expiryTime":"2023-07-25T08:10:09.583Z","autoRenewingPlan":[],"offerDetails":{"basePlanId":"p1w"}}]},"hiveiap_receipt_start_date_ms":"1690272019000","hiveiap_receipt_expire_date_ms":"1690272609000","hiveiap_receipt_autoresume_date_ms":"","hiveiap_receipt_subscription_state":4,"hiveiap_google_info":{"purchase_token_hash":"5a109e5da69467a706a180fca423e09ab7671389","purchase_token":"eejgienjlbapbnojcnjipdib.AO-J1OxxtNGzvOT7-mSeeAORzZ0GZ90t33v7UQn-t4xPAPGLCQqQAPFmvDK3p3wO8ZwXfYCwmVk9pTI93P8k4IyZJn2XI7ES-EJEFPOLpmUzlXXsOndqbhu1oPRu7V4ddTIUCVB_cHjGKvRnZu1DUu2dEd603grO2Q","linked_purchase_token":"","linked_purchase_token_hash":""},"hiveiap_iap_payload":null,"hiveiap_receipt_cancel_date_ms":1690272441000,"hiveiap_receipt_refund_date_ms":0}' \
-H "Content-Type: text/html" \ (ตัวอย่างจุดสิ้นสุด API ที่ให้จากเซิร์ฟเวอร์เกมของคุณ)
- Request ( IAP > Game server)
ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
result_code | รหัสการตอบกลับ
| จำนวนเต็ม | ใช่ |
result_msg | ข้อความการตอบกลับ | สตริง | ใช่ |
- การตอบสนอง (เกม เซิร์ฟเวอร์ > IAP)
< HTTP/2 200
< server: nginx
< date: Fri, 25 Mar 2022 06:56:17 GMT
< content-type: application/json; charset=utf-8
{"result_code":0,"result_msg":"OK"}</pre>