IAP v4 แจ้งเตือนการสมัครสมาชิกแบบเรียลไทม์
ด้วยการแจ้งเตือนการสมัครสมาชิกแบบเรียลไทม์ เซิร์ฟเวอร์เกมจะได้รับข้อมูลสถานะการสมัครสมาชิกของผู้ใช้จากเซิร์ฟเวอร์ Hive IAP แบบเรียลไทม์ ผู้ใช้สามารถใช้ข้อมูลนี้ในการระงับการสมัครสมาชิก การหยุดชั่วคราว และฟังก์ชันการหยุดพักได้
Warning
ในการใช้ฟีเจอร์การแจ้งเตือนการสมัครสมาชิกแบบเรียลไทม์ คุณต้อง ตั้งค่า URL การแจ้งเตือน ใน Market Consol.
API การแจ้งเตือนการสมัครสมาชิกแบบเรียลไทม์ทำงานโดยการเรียกจากเซิร์ฟเวอร์ Hive IAP ไปยังเซิร์ฟเวอร์เกม และรวมข้อมูลการเปลี่ยนแปลงสถานะการสมัครสมาชิกใน Request Body และส่งในแบบเรียลไทม์ เนื่องจากเซิร์ฟเวอร์เกมได้รับข้อมูลการเปลี่ยนแปลงสถานะการสมัครสมาชิก จึงต้องจัดเตรียม API endpoint (URL) ให้กับ Hive
สามารถลงทะเบียน URL API ใน the Hive Console > App Center > Game List > Game details > Game server > Market Server Notification URL หากเซิร์ฟเวอร์เกมถูกแบ่งตามภูมิภาคและแต่ละภูมิภาคควรได้รับการแจ้งเตือน ให้ระบุ URL ทีละรายการ จากนั้น IAP จะส่งการแจ้งเตือนไปยังเซิร์ฟเวอร์เกมทั้งหมด.
IAP ส่งสถานะการสมัครสมาชิกแบบเรียลไทม์จาก Hive เซิร์ฟเวอร์ไปยังเซิร์ฟเวอร์เกม ดังนั้นโปรดตรวจสอบว่าเซิร์ฟเวอร์เกมเปิดไฟร์วอลล์ขาเข้าของเซิร์ฟเวอร์ IP ต่อไปนี้เพื่อรับการแจ้งเตือน.
- 43.202.181.138
- 3.38.239.17
-
Request Specification ( IAP > Game server)
ชื่อฟิลด์ คำอธิบาย ประเภท จำเป็น notification_type ประเภทการแจ้งเตือน - Apple - Google: การสมัครสมาชิกในช่วงระยะเวลาผ่อนผัน/ระงับ/หยุดชั่วคราว จะขึ้นอยู่กับค่าของ hiveiap_receipt_subscription_stateกรุณาใช้ฟิลด์นี้เป็นข้อมูลอ้างอิง.String Y sub_type ประเภทย่อยของการแจ้งเตือน มันใช้เฉพาะสำหรับการแจ้งเตือนของ Apple ข้อมูลประเภทย่อย. String N hiveiap_market_id รหัสตลาดที่ชำระเงิน 1. Apple App Store 2. Google Play Store Integer Y hiveiap_receipt_verify_result ผลการตรวจสอบใบเสร็จที่ส่งจากเซิร์ฟเวอร์การตรวจสอบตลาด - คู่มือผลการตรวจสอบใบเสร็จของ Apple (Storekit 1, ก่อน iOS 15) - คู่มือผลการตรวจสอบใบเสร็จของ Apple (Storekit 2, iOS 15 หรือหลังจากนั้น) - คู่มือผลการตรวจสอบการสมัครสมาชิก Google V1 - คู่มือผลการตรวจสอบการสมัครสมาชิก Google V2 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 สถานะการสมัครสมาชิก 1. ใช้งาน 2. ในช่วงระยะเวลาผ่อนผัน 3. ระงับ 4. หยุดชั่วคราว 5. หมดอายุ ขณะนี้ข้อมูลการสมัครสมาชิกของ Google เท่านั้นที่สามารถส่งได้ ฟีเจอร์การระงับบัญชีและการกู้คืนบัญชีเป็นสิ่งจำเป็นตั้งแต่วันที่ 1 พฤศจิกายน 2020 โดยปฏิบัติตามนโยบาย Google ที่แก้ไขแล้ว API นี้ตรวจสอบสถานะการสมัครสมาชิก - ระยะเวลาผ่อนผัน: จะขยายวันหมดอายุจนกว่าสถานะการชำระเงินของผู้ใช้จะกลับมาเป็นปกติ (ใช้เฉพาะในระยะเวลาผ่อนผันที่ตั้งไว้ใน 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: application/json" \
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: application/json" \ (the API endpoint example provided from your game server)
- Request ( IAP > Game server)
| ชื่อฟิลด์ | คำอธิบาย | ประเภท | จำเป็น |
| result_code | รหัสการตอบสนอง
| จำนวนเต็ม | Y |
| result_msg | ข้อความการตอบสนอง | สตริง | Y |
- การตอบสนอง (เกม เซิร์ฟเวอร์ > 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>