ข้ามไปที่เนื้อหา

ระบบการชำระเงินแบบสมัครสมาชิก

การสมัครสมาชิกแบบต่ออายุอัตโนมัติ

Hive SDK v4.11.6 รองรับฟีเจอร์ใหม่ที่เรียกว่า การสมัครสมาชิกอัตโนมัติ ซึ่งจะทำการชำระเงินเป็นระยะๆ ประเภทของการสมัครสมาชิก ได้แก่ การสมัครสมาชิกแบบรายเดือน การสมัครสมาชิกแบบรายปี และการทดลองใช้งานฟรีโดยทั่วไป หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบการสมัครสมาชิกที่จัดทำโดย Google และ Apple โปรดดูตารางด้านล่าง การสมัครสมาชิกอัตโนมัติจะมีให้หากผู้ใช้เลือกระยะเวลาการชำระเงินปกติตามประเภท OS

OS Google Apple
เงื่อนไขการต่ออายุ รายสัปดาห์ รายเดือน ทุก 3 เดือน ทุก 6 เดือน รายปี รายสัปดาห์ รายเดือน ทุก 2 เดือน ทุก 3 เดือน ทุก 6 เดือน รายปี

ตรวจสอบให้แน่ใจว่าให้ผู้ใช้เกมของคุณเข้าถึงการสมัครสมาชิกแบบต่ออายุอัตโนมัติได้ตลอดเวลาไม่ว่าจะเป็นประเภทอุปกรณ์ใดก็ตามหากผู้ใช้ถูกเรียกเก็บเงินสำหรับการสมัครสมาชิกเฉพาะอย่างสม่ำเสมอ การกู้คืนการสมัครสมาชิกเป็นฟีเจอร์ที่จำเป็นตามความต้องการของผู้ใช้

การเปลี่ยนแปลงราคา การสมัครสมาชิกแบบต่ออายุอัตโนมัติสามารถอัปเกรดหรือดาวน์เกรดระดับการสมัครสมาชิกได้ฟรี การสมัครสมาชิกไม่ใช่การใช้งานครั้งเดียว และจะให้ใบเสร็จเมื่อผู้ใช้พยายามที่จะคืนสถานะ

ใน Google การสมัครสมาชิกฟรีในการอัปเกรดหรือลดระดับการสมัครสมาชิกและเปลี่ยนไปยังระดับใหม่โดยไม่คำนึงถึงการสมัครสมาชิกก่อนหน้านี้ หากผู้ใช้เปลี่ยนราคา มูลค่าของการสมัครสมาชิกก่อนหน้านี้จะถูกคำนวณตามรายวันและจัดเตรียมหลังจากการหมดอายุของการสมัครสมาชิกใหม่

บนแพลตฟอร์มของ Apple กลุ่มการสมัครสมาชิกจะถูกกำหนดในคอนโซล iTunes ดังนั้นการเปลี่ยนไปยังประเภทการสมัครสมาชิกอื่นในกลุ่มเดียวกันจึงเป็นไปได้ หากผู้ใช้ทำการอัปเกรดการสมัครสมาชิกของเขา/เธอ มูลค่าของการสมัครสมาชิกก่อนหน้านี้จะถูกคำนวณตามรายวันและจะถูกจัดเตรียมหลังจากการหมดอายุของการสมัครสมาชิกใหม่ ในกรณีที่ลดระดับ จะมีการต่ออายุไปยังการสมัครสมาชิกใหม่หลังจากการสมัครสมาชิกที่มีอยู่หมดอายุ

Warning
  • แนะนำให้กำหนดระยะเวลาการสมัครสมาชิกจาก Apple ให้ตรงกับที่กำหนดจาก Google, รายสัปดาห์, รายเดือน, ทุก 3 เดือน, ทุก 6 เดือน, และรายปี ประเภท
  • การสมัครสมาชิกจะไม่ถูกกู้คืนโดยอัตโนมัติ
  • แนะนำให้ใช้ประเภทการสมัครสมาชิกแบบต่ออายุอัตโนมัติเพียงประเภทเดียวต่อเกม
    • การสมัครสมาชิกทั้งหมดให้ฟีเจอร์ในกลุ่มการสมัครสมาชิกเดียว
  • รายละเอียดเช่นระยะเวลาการสมัครสมาชิก, ระยะเวลาทดลองใช้งานฟรี และส่วนลดสำหรับผู้สมัครสมาชิกใหม่ไม่มีให้บริการ
  • ข้อมูลการขายจะไม่ถูกถ่ายโอนไปยังเครื่องมือการติดตามการตลาด (เช่น Singular, Adjust) ภายในลูกค้า แต่เซิร์ฟเวอร์ IAP จะส่งข้อมูลตามระยะเวลาของการสมัครสมาชิก
  • การสมัครสมาชิก Android: รองรับเฉพาะ Google Play Store, Amazon, One Store, Samsung-GalaxyStore, และ Huawei เท่านั้น ไม่รองรับ Facebook Cloud และ Lebi
  • การสมัครสมาชิก iOS: รองรับเฉพาะ Apple iTunes Store เท่านั้น
Note

ฟีเจอร์ที่รองรับอาจแตกต่างกันไปตามระบบปฏิบัติการ/ตลาด สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ สถานะของฟีเจอร์ที่รองรับ.

การซื้อ การกู้คืน และระยะเวลาผ่อนผัน

การซื้อ

  • การทดลองใช้งานฟรี หากการสมัครสมาชิกมีช่วงเวลาการทดลองใช้งานฟรี จะไม่ถูกคำนวณเป็นยอดขาย หลังจากการทดลองใช้งานฟรีหมดอายุ การสมัครสมาชิกจะถูกเรียกเก็บเงินโดยอัตโนมัติ
  • ส่วนลดสำหรับผู้สมัครสมาชิกใหม่ นี่คือโปรโมชั่นสำหรับผู้สมัครสมาชิกใหม่ โปรโมชั่นนี้มีให้ในช่วงเวลาที่กำหนดพร้อมราคาที่ลดราคา

การยกเลิก

ผู้ใช้สามารถยกเลิกการสมัครสมาชิกก่อนช่วงการต่ออายุ วิธีการยกเลิกจะอธิบายไว้ในเมนู จัดการการสมัครสมาชิก จากแต่ละตลาด หลังจากที่การสมัครสมาชิกถูกยกเลิก การต่ออายุอัตโนมัติจะหมดอายุ

การคืนเงิน

หากผู้ใช้สมัครขอคืนเงินมูลค่าที่เหลือของการสมัครสมาชิกหลังจากการยกเลิก จำนวนเงินคืนจะถูกคำนวณตามระยะเวลาที่เหลือและมูลค่าของการสมัครสมาชิก (Google console)

การฟื้นฟู

ผู้สมัครสามารถฟื้นฟูการสมัครสมาชิกได้หากการสมัครสมาชิกไม่สามารถใช้งานได้หลังจากการชำระเงิน การคำนวณมูลค่าสำหรับการฟื้นฟูจะขึ้นอยู่กับนโยบายการเป็นเจ้าของหากผู้สมัครมีความเป็นเจ้าของการสมัครสมาชิก

ระยะเวลาผ่อนผัน

เมื่อการต่ออายุการสมัครสมาชิกไม่สามารถเรียกเก็บเงินได้ ให้ใช้ระยะเวลาผ่อนผัน ตรวจสอบให้แน่ใจว่าค่าของสถานะในระยะเวลาผ่อนผันนั้นเหมือนกับการสมัครสมาชิก

การระงับบัญชี (Google)

การระงับบัญชีเป็นสถานะที่ไม่สามารถต่ออายุการสมัครสมาชิกได้เนื่องจากปัญหาที่เกิดขึ้นในขณะชำระเงิน และสิ้นสุดด้วยปัญหาที่ยังไม่ได้แก้ไข ในกรณีนี้ ให้แน่ใจว่าคุณจะดำเนินการสมัครสมาชิกที่ไม่สามารถใช้งานได้สูงสุด 30 วัน

หยุด (Google)

การหยุดการสมัครสมาชิกมีให้บริการสูงสุดสามเดือน เมื่อสิ้นสุดระยะเวลา การสมัครสมาชิกจะถูกเปิดใช้งานโดยอัตโนมัติ

แสดงป๊อปอัปการแจ้งเตือนของ Google

หากสถานะการสมัครสมาชิกของ Google อยู่ใน ระยะเวลาผ่อนผัน หรืออยู่ใน การระงับบัญชี ให้แสดงป๊อปอัพการแจ้งเตือน ป๊อปอัพควรประกอบด้วยสถานะการสมัครสมาชิกปัจจุบัน วิธีการแก้ไขปัญหา และปุ่มที่เชื่อมโยงไปยังการตั้งค่าตลาด ปุ่มนี้ไม่จำเป็นในระยะเวลาผ่อนผัน แต่แนะนำเพื่อความสะดวกของผู้ใช้ ในกรณีที่ผู้ใช้เปลี่ยนข้อมูลการชำระเงินใน ระยะเวลาผ่อนผัน หรือในสถานะ การระงับ การสมัครสมาชิกจะถูกชำระเงินโดยอัตโนมัติในขณะที่ผู้ใช้ถูกตั้งอยู่ในกรณีของสถานะ ระยะเวลาผ่อนผัน ในสถานะ การระงับบัญชี ผู้ใช้ควรเริ่มการสมัครสมาชิกใหม่ เมื่อสถานะการสมัครสมาชิกของผู้ใช้ถูกต่ออายุหลังจากการเริ่มใหม่ ให้จัดเตรียมหน้าการซื้อการสมัครสมาชิกและปุ่มการกู้คืนเพื่อให้ผู้ใช้ได้รับประโยชน์จากการสมัครสมาชิกของตน

ตัวอย่างป๊อปอัพการแจ้งเตือนมีดังนี้ ใช้ข้อความเหล่านี้หรือปรับแต่งสำหรับแต่ละเกม * ข้อความการแจ้งเตือนในช่วงเวลาผ่อนผัน

เกาหลี การชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกไม่สำเร็จ ทำให้บริการสมัครสมาชิกหมดอายุแล้ว กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง หลังจากชำระเงินแล้ว กรุณาคลิกปุ่ม Restore เพื่อเช็คสถานะการสมัครสมาชิกของคุณ
อังกฤษ บริการสมัครสมาชิกหมดอายุแล้ว เนื่องจากการชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกล้มเหลว ไปที่การตั้งค่าการสมัครสมาชิกใน Google Play ตรวจสอบวิธีการชำระเงินของคุณและลองอีกครั้ง โปรดคลิก Restore หลังจากซื้อเพื่อเช็คสถานะการสมัครสมาชิกของคุณ
ญี่ปุ่น การชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกไม่สำเร็จ ทำให้บริการสมัครสมาชิกหมดอายุแล้ว กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง หลังจากชำระเงินแล้ว กรุณาคลิกปุ่ม【復元】เพื่อเช็คสถานะการสมัครสมาชิกของคุณ
จีน (แบบย่อ) การสมัครสมาชิกหมดอายุแล้ว เนื่องจากการชำระเงินอัตโนมัติล้มเหลว กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง หลังจากชำระเงินแล้ว กรุณาคลิกปุ่ม复原(restore)เพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
จีน (แบบดั้งเดิม) การชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกล้มเหลว ทำให้บริการสมัครสมาชิกถูกยกเลิก กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง หลังจากชำระเงินแล้ว กรุณาคลิกปุ่ม[回復]เพื่อเช็คสถานะการสมัครสมาชิกของคุณ
ฝรั่งเศส บริการสมัครสมาชิกถูกระงับ เนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ กรุณาทำการชำระเงินอีกครั้งโดยไปที่การตั้งค่าการสมัครสมาชิกใน Google Play หลังจากชำระเงินแล้ว กรุณายืนยันสถานะการสมัครสมาชิกโดยการกดปุ่ม "Reprendre"
เยอรมัน บริการสมัครสมาชิกหมดอายุแล้ว เนื่องจากการชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกล้มเหลว ไปที่การตั้งค่าการสมัครสมาชิกใน Google Play ตรวจสอบวิธีการชำระเงินของคุณและลองอีกครั้ง โปรดคลิกที่ Restore หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
รัสเซีย บริการสมัครสมาชิกหมดอายุแล้ว เนื่องจากไม่สามารถทำการชำระเงินอัตโนมัติได้ กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง หลังจากชำระเงินแล้ว กรุณายืนยันสถานะการสมัครสมาชิกโดยการกดปุ่ม «Возобновить»
สเปน บริการสมัครสมาชิกหมดอายุแล้ว เนื่องจากการชำระเงินอัตโนมัติล้มเหลว กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง โปรดคลิก Restore หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
โปรตุเกส บริการสมัครสมาชิกหมดอายุแล้ว เนื่องจากการชำระเงินอัตโนมัติล้มเหลว กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง โปรดคลิกที่ Recuperar หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
อินโดนีเซีย บริการสมัครสมาชิกถูกระงับเนื่องจากการชำระเงินอัตโนมัติล้มเหลว กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง โปรดคลิกที่ Pulihkan หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
เวียดนาม บริการสมัครสมาชิกหมดอายุแล้ว เนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง อย่าลืมกดปุ่ม Khôi Phục (Restore) หลังจากชำระเงินเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
ไทย บริการจากการสมัครบริการหมดอายุแล้ว เนื่องจากชำระเงินอัตโนมัติไม่สำเร็จ กรุณาไปที่หน้าตั้งค่า Subscription ใน Google Play แล้วตรวจสอบวิธีการชำระเงินอีกครั้ง อย่าลืมกด Restore หลังซื้อ เพื่อตรวจสอบสถานะการสมัครของคุณ
อิตาลี บริการสมัครสมาชิกหมดอายุแล้ว เนื่องจากการชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกล้มเหลว กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง โปรดคลิกที่ Ripristina หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
ตุรกี บริการสมัครสมาชิกหมดอายุแล้ว เนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง โปรดคลิกที่ geri yükle (restore) หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
อาหรับ บริการสมัครสมาชิกหมดอายุแล้ว เนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ กรุณาไปที่การตั้งค่าของคุณใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง โปรดคลิกที่ปุ่ม استعادة الأشتراك หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
  • วลีการแจ้งเตือนเมื่ออยู่ในสถานะรอดำเนินการ
เกาหลี การชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกไม่สำเร็จ ทำให้บริการสมัครสมาชิกหมดอายุแล้ว โปรดไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง หลังจากชำระเงินแล้ว โปรดคลิกปุ่มคืนค่า (restore) เพื่อยืนยันสถานะการสมัครสมาชิกของคุณ
อังกฤษ บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ ไปที่การตั้งค่าการสมัครสมาชิก Google Play ของคุณ ตรวจสอบวิธีการชำระเงินและลองอีกครั้ง โปรดคลิกคืนค่า (Restore) หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
ญี่ปุ่น การชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกไม่สำเร็จ ทำให้บริการสมัครสมาชิกหมดอายุแล้ว โปรดไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง หลังจากชำระเงินแล้ว โปรดคลิกปุ่ม【復元】เพื่อยืนยันสถานะการสมัครสมาชิกของคุณ
จีน (แบบย่อ) บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ โปรดไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง หลังจากชำระเงินแล้ว โปรดคลิกปุ่มคืนค่า (restore) เพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
จีน (แบบดั้งเดิม) การชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกไม่สำเร็จ ทำให้บริการสมัครสมาชิกหมดอายุแล้ว โปรดไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง หลังจากชำระเงินแล้ว โปรดคลิกปุ่ม[回復]เพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
ฝรั่งเศส บริการสมัครสมาชิกถูกระงับเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ โปรดทำการชำระเงินอีกครั้งโดยไปที่การตั้งค่าการสมัครสมาชิกใน Google Play หลังจากชำระเงินแล้ว โปรดตรวจสอบสถานะการสมัครสมาชิกโดยการกดปุ่ม "Reprendre"
เยอรมัน บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ ไปที่การตั้งค่าการสมัครสมาชิก Google Play ของคุณ ตรวจสอบวิธีการชำระเงินและลองอีกครั้ง โปรดคลิกคืนค่า (Wiederherstellen) หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
รัสเซีย บริการสมัครสมาชิกหมดอายุเนื่องจากไม่สามารถทำการชำระเงินอัตโนมัติได้ โปรดไปที่การตั้งค่าการสมัครสมาชิก Google Play ตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง หลังจากชำระเงินแล้ว โปรดคลิกปุ่ม «Возобновить» เพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
สเปน บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ โปรดไปที่การตั้งค่าการสมัครสมาชิกใน Google Play ตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง โปรดคลิกคืนค่า (Restaurar) หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
โปรตุเกส บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ โปรดไปที่การตั้งค่าการสมัครสมาชิกใน Google Play ตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง โปรดคลิกคืนค่า (Recuperar) หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
อินโดนีเซีย บริการสมัครสมาชิกถูกระงับเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ โปรดไปที่การตั้งค่าการสมัครสมาชิกใน Google Play ตรวจสอบวิธีการชำระเงินของคุณและลองใหม่อีกครั้ง โปรดคลิกคืนค่า (Pulihkan) หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
เวียดนาม บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ โปรดไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินของคุณและชำระเงินใหม่ อย่าลืมคลิกปุ่มคืนค่า (Khôi Phục) หลังจากชำระเงินเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
ไทย บริการจากการสมัครบริการหมดอายุแล้ว เนื่องจากชำระเงินอัตโนมัติไม่สำเร็จ กรุณาไปที่หน้าตั้งค่า Subscription ใน Google Play แล้วตรวจสอบวิธีการชำระเงินอีกครั้ง อย่าลืมกด Restore หลังซื้อ เพื่อตรวจสอบสถานะการสมัครของคุณ
อิตาลี บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ โปรดไปที่การตั้งค่าการสมัครสมาชิกใน Google Play ตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง โปรดคลิกคืนค่า (Ripristina) หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
ตุรกี บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ โปรดไปที่การตั้งค่าการสมัครสมาชิก Google Play ตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง โปรดคลิกคืนค่า (restore) หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
อาหรับ บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ โปรดไปที่การตั้งค่าของคุณใน Google Play ตรวจสอบวิธีการชำระเงินและลองอีกครั้ง โปรดคลิกปุ่มคืนค่า (استعادة) หลังจากซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
Note

ฟีเจอร์ที่รองรับอาจแตกต่างกันไปตามระบบปฏิบัติการ/ตลาด สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ สถานะของฟีเจอร์ที่รองรับ.

กระบวนการซื้อการสมัครสมาชิก

แผนภาพ

แผนภาพกระบวนการ

Google subscription V2 support

Google subscription API V2 ช่วยให้คุณสร้างและจัดการสิทธิประโยชน์หลายรายการโดยใช้วิธีการสมัครสมาชิกใหม่ ตัวอย่างของสิทธิประโยชน์รวมถึงสิทธิประโยชน์จากการสมัครสมาชิกครั้งแรกของคุณ และส่วนลดโดยการสมัครผลิตภัณฑ์เพิ่มเติมเมื่อคุณมีการสมัครสมาชิกอยู่แล้ว สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสมัครสมาชิกของ Google โปรดดู ที่นี่

หากคุณใช้การสมัครสมาชิก Google V2 คุณสามารถให้สิทธิประโยชน์ที่แตกต่างกันตามราคาการชำระเงินตามสถานะการสมัครสมาชิก เช่น ระยะเวลาการสมัครสมาชิกและจำนวนการสมัครสมาชิกในอดีต เพื่อใช้การสมัครสมาชิก Google V2 กรุณาทำตามขั้นตอนด้านล่าง

Note

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงใน Google Billing Library โปรดดู ที่นี่.

ลงทะเบียนผลิตภัณฑ์ใน Google Play Console

ลงทะเบียนผลิตภัณฑ์ของคุณเพื่อขายโดยใช้ Google subscription V2 บน Google Play Console สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ Play Console Guide

ตรวจสอบข้อมูลผลิตภัณฑ์ที่ลงทะเบียนด้วย getSubscriptionProductInfo

คุณสามารถตรวจสอบข้อมูลผลิตภัณฑ์ที่ลงทะเบียนใน Google Play Console ได้ที่ค่าการตอบสนองของวิธี IAPV4.getSubscriptionProductInfo ซึ่งคือ originalMarketJson ของวัตถุ IAPV4Product. * productId: ผลิตภัณฑ์ * basePlanId: แผนการสมัครสมาชิก * offerIdToken: ผลประโยชน์

ด้านล่างนี้นำเสนอผลิตภัณฑ์ตัวอย่างที่เรียกว่า "sub003" ซึ่งข้อมูลสามารถพบได้ใน originalMarketJson หลังจากลงทะเบียนการชำระเงินรายสัปดาห์และรายเดือนแต่ละรายการและกำหนดผลประโยชน์สองรายการสำหรับการชำระเงินรายเดือน

{
    "productId": "sub003",
    "type": "subs",
    "title": "sub003-name (HIVE SDK)",
    "name": "sub003-name",
    "localizedIn": [
        "ko-KR"
    ],
    "skuDetailsToken": "AEuhp4KfxD0MTrwzJV_jl0exSz9NuCZzipMe8mo45lR7pi3y_bWsvXdeKNM04CMxxNY=",
    "subscriptionOfferDetails": [
        {
            "offerIdToken": "AUj\/Yhj7Zx5lt7B0G4qWDtmPFDioPkobZB7zw0xi1A8+B4iD0AbZbwQJKitQLCjR9CMLssbH+g43p4wf3tLREE8H41NgdDpOaCsla0xoTQKPkCsH6+U4XszzPUtOGNwuskbzNjEDfTJoF50j1fSd+IXCkQ==",
            "basePlanId": "baseprice-p1m",
            "offerId": "offer-freetrial",
            "pricingPhases": [
                {
                    "priceAmountMicros": 0,
                    "priceCurrencyCode": "KRW",
                    "formattedPrice": "free",
                    "billingPeriod": "P1M",
                    "recurrenceMode": 2,
                    "billingCycleCount": 1
                },
                {
                    "priceAmountMicros": 1650000000,
                    "priceCurrencyCode": "KRW",
                    "formattedPrice": "₩1,650",
                    "billingPeriod": "P1M",
                    "recurrenceMode": 2,
                    "billingCycleCount": 2
                },
                {
                    "priceAmountMicros": 3300000000,
                    "priceCurrencyCode": "KRW",
                    "formattedPrice": "₩3,300",
                    "billingPeriod": "P1M",
                    "recurrenceMode": 1
                }
            ],
            "offerTags": [
                "offer-free",
                "offer-freetrial"
            ]
        },
        {
            "offerIdToken": "AUj\/YhjUXnT6K8XbdZd5lUtCSef0HA+qikjGfNPEAXvLeLKWTZ0RqwcFIvR5GhECXTRD1SdUrn0LcaB6oquBo5QeUTEZJGTstWGzfmrwL3oSsvBs1EERERSdJ6NDq54=",
            "basePlanId": "baseprice-p1m",
            "pricingPhases": [
                {
                    "priceAmountMicros": 3300000000,
                    "priceCurrencyCode": "KRW",
                    "formattedPrice": "₩3,300",
                    "billingPeriod": "P1M",
                    "recurrenceMode": 1
                }
            ],
            "offerTags": []
        },
        {
            "offerIdToken": "AUj\/YhhlJDIsjfnvcc5TfxlBjSA+o3QcNsCAjU+DfXBJn2JF\/zLgew468AvchceNBynmB3CvnPLhqlr8be8dJlIvAEkKgdas1DGoiu3p52jSvwsxh8jQLN7QReXUdrY=",
            "basePlanId": "baseprice-p1w",
            "pricingPhases": [
                {
                    "priceAmountMicros": 500000000,
                    "priceCurrencyCode": "KRW",
                    "formattedPrice": "₩500",
                    "billingPeriod": "P1W",
                    "recurrenceMode": 1
                }
            ],
            "offerTags": []
        }
    ]
}

มีค่าประโยชน์หลักทั้งหมด 3 ค่าแสดงในตัวอย่าง offerIdToken ข้างต้น ประเภทประโยชน์ 2 ประเภทสำหรับการชำระเงินรายเดือนและประโยชน์พื้นฐาน 1 ประเภทสำหรับการชำระเงินรายสัปดาห์ ประโยชน์แรกหรือประโยชน์ที่สองจะถูกนำไปใช้กับผู้ใช้เมื่อทำการชำระเงินรายเดือน

ขอสมัครสมาชิก

ขอสมัครสมาชิกตามที่แสดงด้านล่างโดยใช้วัตถุ IAPV4Product originalMarketJson ที่ได้รับข้างต้น คุณสามารถขอสมัครสมาชิกโดยการใช้ประโยชน์ที่เกี่ยวข้องกับผู้ใช้

ชื่อฟิลด์ คำอธิบาย จำเป็น
YOUR_PRODUCT_MARKET_PID นี่คือ productId ใน originalMarketJson Y
YOUR_PRODUCT_OLD_MARKET_PID productId ที่ผู้ใช้เคยสมัครสมาชิกแล้ว จำเป็นเมื่ออัปเกรดการสมัครสมาชิกที่มีอยู่ไปยังการสมัครสมาชิกที่ผู้ใช้กำลังขอในปัจจุบัน N
YOUR_PAYLOAD นี่คือข้อมูลเมตาของการซื้อที่กำหนดโดยสตูดิโอเกม N
YOUR_OFFER_ID_TOKEN นี่คือ offerIdToken ใน originalMarketJson หากคุณไม่ป้อนค่าในฟิลด์นี้ SDK ของ Hive จะใช้ offerIdToken แรกใน subscriptionOfferDetails ของ originalMarketJson N

API Reference: IAPV4 .purchaseSubscription

using hive;    
    IAPV4PurchaseParam.Builder builder = new IAPV4.IAPV4PurchaseParam.Builder();    
    IAPV4PurchaseParam param = builder.setMarketPid("YOUR_PRODUCT_MARKET_PID")    
    .setOldMarketPid("YOUR_PRODUCT_OLD_MARKET_PID")    
    .setIapPayload("YOUR_PAYLOAD")    
    .setOfferToken("YOUR_OFFER_ID_TOKEN")    
    .build();    

    IAPV4.purchaseSubscription (param, (ResultAPI result, IAPV4Receipt receipt) => {    
        if (result.isSuccess()) {    
        // TODO: Request verification of receipt with received receipt    
        }    
});
#include "HiveIAPV4.h"

FHiveIAPV4PurchaseParam Param;
Param.MarketPid = TEXT("YOUR_PRODUCT_MARKET_PID");
Param.OldMarketPid = TEXT("YOUR_PRODUCT_OLD_MARKET_PID");
Param.IapPayload = TEXT("YOUR_PAYLOAD");
Param.OfferToken = TEXT("YOUR_OFFER_ID_TOKEN");

FHiveIAPV4::PurchaseSubscription(Param, FHiveIAPV4OnPurchaseDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveIAPV4Receipt& Receipt) {
        if (Result.IsSuccess()) {
                // TODO: Request verification of receipt with received receipt
        }
}));

API Reference: IAPV4 ::purchaseSubscription

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    auto* param = new IAPV4PurchaseParam();    
    param->marketPid = "YOUR_PRODUCT_MARKET_PID";    
    param->oldMarketPid = "YOUR_PRODUCT_OLD_MARKET_PID";    
    param->iapPayload = "YOUR_PAYLOAD";    
    param->offerToken = "YOUT_OFFER_ID_TOKEN";    

    IAPV4::purchaseSubscription(*param, [=](ResultAPI const & result, IAPV4Receipt const & receipt) {    
         if (result.isSuccess()) {    
             // TODO: Request verification of receipt with received receipt    
         }    
});

API Reference: IAPV4.purchaseSubscription

import com.hive.IAPV4    
    import com.hive.ResultAPI    
    val param = IAPV4.IAPV4PurchaseParam.Builder()    
    .setMarketPid("YOUR_PRODUCT_MARKET_PID")    
    .setOldMarketPid("YOUR_PRODUCT_OLD_MARKET_PID")    
    .setIapPayload("YOUR_PAYLOAD")    
    .setOfferToken("YOUR_OFFER_ID_TOKEN")    
    .build()    
    IAPV4.purchaseSubscription(param, object : IAPV4.IAPV4PurchaseListener {    
         override fun onIAPV4Purchase(result: ResultAPI, receipt: IAPV4.IAPV4Receipt?) {    
             if (result.isSuccess) {    
                 // TODO: Request verification of receipt with received receipt    
             }    
         }    
})

API Reference: IAPV4.INSTANCE .purchaseSubscription

import com.hive.IAPV4;    
    import com.hive.ResultAPI;    
    IAPV4.IAPV4PurchaseParam param = new IAPV4.IAPV4PurchaseParam.Builder()    
             .setMarketPid("YOUR_PRODUCT_MARKET_PID")    
             .setOldMarketPid("YOUR_PRODUCT_OLD_MARKET_PID")    
             .setIapPayload("YOUR_PAYLOAD")    
             .setOfferToken("YOUR_OFFER_ID_TOKEN")    
             .build();    
    IAPV4.INSTANCE.purchaseSubscription(param, (result, iapV4Receipt) -> {    
         if (result.isSuccess()) {    
             // TODO: Request verification of receipt with received receipt    
         }    
});

API Reference: IAPV4Interface.purchaseSubscription

import HIVEService    
    let param = IAPV4PurchaseParam.Builder()    
    .setMarketPid("YOUR_PRODUCT_MARKET_PID")    
    .setOldMarketPid("YOUR_PRODUCT_OLD_MARKET_PID")    
    .setIapPayload("YOUR_PAYLOAD")    
    .setOfferToken("YOUR_OFFER_ID_TOKEN")    
    .build()    

    IAPV4Interface.purchaseSubscription(param) { result, receipt in    
        if result.isSuccess() {    
        // TODO: Request verification of receipt with received receipt    
        }    
}

API Reference: HIVEIAPV4 purchaseSubscription

#import <HIVEService/HIVEService-Swift.h>    
    HIVEIAPV4PurchaseParamBuilder *builder = [[HIVEIAPV4PurchaseParamBuilder alloc] init];    
    HIVEIAPV4PurchaseParam *param = [[[[[builder setMarketPid: @"YOUR_PRODUCT_MARKET_PID"]    
    setIapPayload: @"YOUR_PRODUCT_OLD_MARKET_PID"]    
    setOldMarketPid: @"YOUR_PAYLOAD"]    
    setOfferToken: @"YOUR_OFFER_ID_TOKEN"]    
    build];    

    [HIVEIAPV4 purchaseSubscription: param handler: ^(HIVEResultAPI *result, HIVEIAPV4Receipt *receipt) {    
        if ([result isSuccess]) {    
        // TODO: Request verification of receipt with received receipt    
        }    
}];
Note

เมื่อมอบสิทธิประโยชน์การสมัครสมาชิกครั้งแรก สิทธิประโยชน์จะถูกมอบให้สำหรับการสมัครสมาชิกครั้งแรกโดยอิงจากบัญชี Google Play Store เท่านั้น。

Subscription API

Warning

โปรดติดต่อทีม Solution Architect Team, Com2US Platform เพื่อดำเนินการระบบการสมัครสมาชิกที่ต่ออายุอัตโนมัติ

รับรายการผลิตภัณฑ์การสมัครสมาชิก

เมื่อผู้ใช้เข้าสู่ร้านค้าสินค้าสมาชิกในเกม จะต้องเรียกใช้เมธอด IAPV4.getSubscriptionProductInfo() ซึ่งจะทำการสอบถามรายการสินค้าสมาชิก เมื่อเรียกใช้ API นี้ วัตถุ IAPV4Product ซึ่งมีรายการสินค้าและข้อมูลสินค้าจะถูกส่งกลับเป็นผลลัพธ์ วัตถุ IAPV4Product จะคล้ายกับที่ส่งกลับใน การค้นหารายการสินค้า

IAPV4Product วัตถุ

ชื่อฟิลด์ คำอธิบาย
marketPid รหัสผลิตภัณฑ์ที่ไม่ซ้ำกันที่ลงทะเบียนในร้านค้าในแอป
currency ประเภทสกุลเงิน (เช่น KRW/USD)
price ราคาผลิตภัณฑ์
title ชื่อผลิตภัณฑ์
displayPrice สตริงของราคาผลิตภัณฑ์ (เช่น $100.00) เพิ่มเติม
productDescription รายละเอียดผลิตภัณฑ์
originalMarketJson ข้อมูลผลิตภัณฑ์ต้นฉบับที่ได้รับจากตลาดเมื่อใช้ Google subscription V2 ข้อมูลผลิตภัณฑ์ที่กำหนดใน Google Play Console สามารถตรวจสอบได้ด้วยสิ่งนี้
displayOriginalPrice สตริงราคาก่อนส่วนลด ใช้งานได้กับ Hive SDK v4.12.0 และเวอร์ชันที่ใหม่กว่า สำหรับ Google เท่านั้น
**originalPrice ราคาต้นฉบับโดยไม่มีส่วนลด
iconURL ไอคอนผลิตภัณฑ์ (512*512) ใช้งานได้กับ Hive SDK v4.12.0 และเวอร์ชันที่ใหม่กว่า สำหรับ Google เท่านั้น

displayPrice

  • ส่ง displayPrice พร้อมกับการรวมกันของสัญลักษณ์สกุลเงินและราคาในลำดับ (เช่น $0.99) เนื่องจาก Android หรือ iOS มีประเภทการแสดงผลของตนเอง ลำดับของสัญลักษณ์สกุลเงินและราคาอาจแสดงผลแตกต่างกันในหลายประเทศขึ้นอยู่กับ OS
  • ตรวจสอบให้แน่ใจว่าได้แสดงสัญลักษณ์สกุลเงินของแต่ละประเทศให้ตรงกับตารางของมัน อ้างอิงถึงนโยบาย Hive Identifier เพื่อยืนยันตารางของสัญลักษณ์สกุลเงิน
  • ในกรณีที่มีประเทศเพิ่มเติมที่จะเพิ่มหรือลด VAT เซิร์ฟเวอร์จะคำนวณ VAT ของสกุลเงินทั้งหมดและเพิ่มไปยัง displayPrice, price, displayOriginalPrice และ originalPrice ดังนั้นคุณจึงไม่ต้องทำงานเพิ่มเติมเกี่ยวกับ VAT
Note

Google สนับสนุนการแสดงราคาต้นฉบับเมื่อค่าของราคาและค่าของ originalPrice แตกต่างกัน หากสองค่าดังกล่าวเหมือนกัน หมายความว่าสินค้านั้นไม่ได้ลดราคา Apple ไม่ได้ให้ค่า iconURL originalPrice และ displayOriginalPrice ใช้ได้เฉพาะสำหรับ Google (v4 12.0.0 +) และ Apple (v4 24.0.0 +) หากค่าราคาและค่าของ originalPrice เหมือนกัน หมายความว่าไม่ได้อยู่ในสถานะลดราคา ในทางกลับกัน หากสองค่าต่างกัน เนื่องจากมีการลดราคา คุณสามารถใช้เพื่อแสดงราคาลดราคาและราคาต้นฉบับแยกกัน

ต่อไปนี้คือตัวอย่างโค้ดในการ implement วิธีการ getSubscriptionProductInfo()

API Reference: IAPV4::getSubscriptionProductInfo

```None linenums="1"
// Request to search subscription lists
IAPV4::getSubscriptionProductInfo([=](ResultAPI const & result, std::vector const & productInfoList, unsigned int balance) {
        if (result.isSuccess()) {
                for( auto productInfo : productInfoList) {
                        // Implementation of the desired features by the game studio, such as shop UI.
                }
        }
        else {
                // Error Handling
        }
});
```
#include "HiveIAPV4.h"

FHiveIAPV4::GetSubscriptionProductInfo(FHiveIAPV4OnProductInfoDelegate::CreateLambda([this](const FHiveResultAPI& Result, const TArray<FHiveIAPV4Product>& ProductInfoList, uint32 Balance) {

        if (Result.IsSuccess()) {
                for (const auto& ProductInfo : ProductInfoList) {
                        // Implementation of the desired features by the game studio, such as shop UI.
                }
        } else {
                // Error Handling
        }
}));

API Reference: com.hive.IAPV4.getSubscriptionProductInfo

// Request to search subscription lists    
    IAPV4.getSubscriptionProductInfo(new IAPV4.IAPV4ProductInfoListener() {    
        @Override    
        public void onIAPV4ProductInfo(ResultAPI result, final List iapV4ProductList, final int balance) {    
            if (result.isSuccess()) {    
                for (IAPV4Product productInfo : iapV4ProductList) {    
                // Implementation of the desired features by the game studio, such as shop UI.    
                }    
            } else {    
                // Error Handling    
            }    
        }    
});

API Reference: HIVEIAPV4::getSubscriptionProductInfo:

// คำขอเพื่อค้นหารายการสมัครสมาชิก
    IAPV4.getSubscriptionProductInfo(new IAPV4.IAPV4ProductInfoListener() {
            @Override
            public void onIAPV4ProductInfo(ResultAPI result, final List iapV4ProductList, final int balance) {
                    if (result.isSuccess()) {
                            for (IAPV4Product productInfo : iapV4ProductList) {
                            // การดำเนินการของฟีเจอร์ที่ต้องการโดยสตูดิโอเกม เช่น UI ร้านค้า
                            }
                    } else {
                            // การจัดการข้อผิดพลาด
                    }
            }
    });

API Reference: HIVEIAPV4::getSubscriptionProductInfo:

    // Request to search subscription lists
    [HIVEIAPV4 getSubscriptionProductInfo:^(HIVEResultAPI *result, NSArray *productInfoList, NSUInteger balance) {
            if( [result isSuccess]) {
                    for( HIVEIAPV4Product* productInfo in productInfoList) {
                            // Implementation of the desired features by the game studio, such as shop UI.
                    }
            } else {
                    // Error Handling
            }

    }];
Warning

การไม่เรียกใช้วิธี getSubscriptionProductInfo() จะทำให้ไม่สามารถใช้ประโยชน์จากข้อมูลการสมัครสมาชิกเมื่อดำเนินการรายการผลิตภัณฑ์ได้

มันต้องการให้เกมไคลเอนต์ดำเนินการตอบสนองโดยตรงสำหรับการคืนค่าความล้มเหลวของ Result API เช่น ลองใหม่จนกว่าจะได้รับการตอบกลับที่สำเร็จ หรือ แสดงป๊อปอัปข้อผิดพลาด (เช่น ตลาดไม่พร้อมใช้งาน) ให้กับผู้ใช้ สำหรับรายละเอียดของโค้ด Result API ดูที่ Result API Code - IAP v4.

สินค้าสมัครสมาชิก

เรียกใช้เมธอด purchaseSubscriptionUpdate() ของคลาส IAPV4 เพื่อขอซื้อการสมัครสมาชิกโดยใช้ MarketPid ที่ลงทะเบียนใน Apple App Store และ Google Play Store เป็นพารามิเตอร์

Note

หากมีการสมัครสมาชิกอยู่แล้วและผู้ใช้ต้องการเปลี่ยนผลิตภัณฑ์การสมัครสมาชิก ให้ป้อน marketPid ของผลิตภัณฑ์การสมัครสมาชิกเดิมใน oldMarketPid ฟีเจอร์นี้ใช้งานได้เฉพาะบน Android เท่านั้น

ต่อไปนี้คือตัวอย่างการใช้งานของ purchaseSubscriptionUpdate()

API Reference: IAPV4::purchaseSubscriptionUpdate

```unity linenums="1"
std::string marketPid = "{YOUR_PRODUCT_MARKET_PID}";
std::string oldMarketPid = "{YOUR_PRODUCT_OLD_MARKET_PID}";
std::string iapPayload = "{YOUR_PRODUCT_IAP_PAYLOAD}";

// คำขอเพื่อซื้อผลิตภัณฑ์การสมัครสมาชิก
IAPV4::purchaseSubscriptionUpdate(marketPid, oldMarketPid, iapPayload, [=](ResultAPI const & result, IAPV4Receipt const & receipt) {
        if (result.isSuccess()) {
                                // คำขอเพื่อยืนยันใบเสร็จด้วยใบเสร็จที่ได้รับ
        }
        else {
                // การจัดการข้อผิดพลาด
        }
});
```

API Reference: IAPV4::purchaseSubscriptionUpdate

```c++ linenums="1"
std::string marketPid = "{YOUR_PRODUCT_MARKET_PID}";
std::string oldMarketPid = "{YOUR_PRODUCT_OLD_MARKET_PID}";
std::string iapPayload = "{YOUR_PRODUCT_IAP_PAYLOAD}";

// คำขอเพื่อซื้อผลิตภัณฑ์การสมัครสมาชิก
IAPV4::purchaseSubscriptionUpdate(marketPid, oldMarketPid, iapPayload, [=](ResultAPI const & result, IAPV4Receipt const & receipt) {
        if (result.isSuccess()) {
                                // คำขอเพื่อตรวจสอบใบเสร็จด้วยใบเสร็จที่ได้รับ
        }
        else {
                // การจัดการข้อผิดพลาด
        }
});
```

API Reference: com.hive.IAPV4.purchaseSubscriptionUpdate

val marketPid = "{YOUR_PRODUCT_MARKET_PID}"    
    val oldMarketPid = "{YOUR_PRODUCT_OLD_MARKET_PID}"    
    val iapPayload = "{YOUR_PRODUCT_IAP_PAYLOAD}"    


    // การขอซื้อผลิตภัณฑ์สมาชิก    
    IAPV4.purchaseSubscriptionUpdate(pid, oldMarketPid, iapPayload, object : IAPV4.IAPV4PurchaseListener {    
        override fun onIAPV4Purchase(result: ResultAPI, iapV4Receipt: IAPV4.IAPV4Receipt?) {    
            if (result.isSuccess()) {    
                    // การขอเพื่อยืนยันใบเสร็จด้วยใบเสร็จที่ได้รับ    
            } else {    
                   // การจัดการข้อผิดพลาด    
            }    
        }    
})

API Reference: com.hive.IAPV4.purchaseSubscriptionUpdate

String marketPid = "{YOUR_PRODUCT_MARKET_PID}";    
    String oldMarketPid = "{YOUR_PRODUCT_OLD_MARKET_PID}";    
    String iapPayload = "{YOUR_PRODUCT_IAP_PAYLOAD}";    


    // การขอซื้อผลิตภัณฑ์การสมัครสมาชิก    
    IAPV4.purchaseSubscriptionUpdate(pid, oldMarketPid, iapPayload, new IAPV4.IAPV4PurchaseListener() {    
        @Override    
        public void onIAPV4Purchase(ResultAPI result, IAPV4.IAPV4Receipt iapV4Receipt) {    
            if (result.isSuccess()) {    
                    // การขอเพื่อยืนยันใบเสร็จด้วยใบเสร็จที่ได้รับ    
            } else {    
                   // การจัดการข้อผิดพลาด    
            }    
        }    
});

API Reference: HIVEIAPV4::purchaseSubscriptionUpdate:oldMarketPid:additionalInfo:handler:

let marketPid = "{YOUR_PRODUCT_MARKET_PID}"    
    let oldMarketPid = "{YOUR_PRODUCT_OLD_MARKET_PID}"    
    let iapPayload = "{YOUR_PRODUCT_IAP_PAYLOAD}"    

    // คำขอเพื่อซื้อผลิตภัณฑ์สมาชิก    
    HIVEIAPV4.purchaseSubscriptionUpdate(marketPid, oldMarketPid: oldMarketPid, iapPayload: iapPayload) { result, receipt in    
        if result.isSuccess() {    
            // คำขอเพื่อยืนยันใบเสร็จด้วยใบเสร็จที่ได้รับ    
        } else {    
            // การจัดการข้อผิดพลาด    
        }    
}

API Reference: HIVEIAPV4::purchaseSubscriptionUpdate:oldMarketPid:additionalInfo:handler:

NSString* marketPid = @"{YOUR_PRODUCT_MARKET_PID}";    
    NSString* oldMarketPid = @"{YOUR_PRODUCT_OLD_MARKET_PID}";    
    NSString* iapPayload = @"{YOUR_PRODUCT_IAP_PAYLOAD}";    

    // คำขอเพื่อซื้อผลิตภัณฑ์สมาชิก    
    [HIVEIAPV4 purchaseSubscriptionUpdate:marketPid oldMarketPid:oldMarketPid iapPayload:iapPayload handler:^(HIVEResultAPI *result, HIVEIAPV4Receipt *receipt) {    
        if ([result isSuccess]) {    
                    // คำขอเพื่อตรวจสอบใบเสร็จด้วยใบเสร็จที่ได้รับ    
        } else {    
                   // การจัดการข้อผิดพลาด    
        }    
}];

การกู้คืนสถานะการสมัครสมาชิก

หากการสมัครสมาชิกปัจจุบันไม่สามารถใช้งานได้บนอุปกรณ์ของผู้สมัครสมาชิก ให้ใช้วิธี restoreSubscription() ในคลาส IAPV4 เพื่อกู้คืนการสมัครสมาชิกและขอใบเสร็จสำหรับการสมัครสมาชิกที่ถูกเรียกเก็บเงิน

ต่อไปนี้คือตัวอย่างโค้ดในการ implement วิธีการ restoreSubscription()

API Reference: hive .IAPV4.restoreSubscription

using hive;    
    IAPV4.restoreSubscription((ResultAPI result, List<IAPV4Receipt> receiptList) => {    
    if (result.isSuccess()) {    
    // TODO: Request receipt verification using the received receiptList    
         }    
});

API Reference: IAPV4 ::restoreSubscription

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    IAPV4::restoreSubscription([=](ResultAPI const & result, vector<reference_wrapper<IAPV4Receipt>> receiptList) {    
         if (result.isSuccess()) {    
    // TODO: Request receipt verification using the received receiptList    
         }    
});

API Reference: IAPV4.restoreSubscription

import com.hive.IAPV4    
    import com.hive.ResultAPI    
    IAPV4.restoreSubscription(object : IAPV4.IAPV4RestoreListener {    
         override fun onIAPV4Restore(result: ResultAPI, iapv4ReceiptList: ArrayList<IAPV4.IAPV4Receipt>?) {    
             if (result.isSuccess) {    
                 // TODO: Request receipt verification using the received iapv4ReceiptList    
             }    
         }    
})

API Reference: com .hive.IAPV4.restoreSubscription

import com.hive.IAPV4;    
    import com.hive.ResultAPI;    
    IAPV4.INSTANCE.restoreSubscription((result, iapv4ReceiptList) -> {    
         if (result.isSuccess()) {    
             // TODO: Request receipt verification using the received iapv4ReceiptList    
         }    
});

เอกสาร API: IAPV4Interface .restoreSubscription

import HIVEService    
    IAPV4Interface.restoreSubscription() { result, receiptList in    
    if result.isSuccess() {    
    // TODO: Request receipt verification using the received receiptList    
    }    
}

API Reference: HIVEIAPV4 ::restoreSubscription:

#import <HIVEService/HIVEService-Swift.h>    
    [HIVEIAPV4 restoreSubscription: ^(HIVEResultAPI *result, NSArray<HIVEIAPV4Receipt *> *receiptList) {    
         if ([result isSuccess]) {    
    // TODO: Request receipt verification using the received receiptList    
         }    
}];