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

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

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

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

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

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

เกาหลี การชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกไม่สำเร็จ ทำให้บริการสมัครสมาชิกหมดอายุแล้ว กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง หลังจากชำระเงินแล้ว กรุณาคลิกปุ่ม "กู้คืน" เพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
อังกฤษ The subscription service has expired because the auto subscription payment has failed. Go to the your Google Play subscription settings, check your payment method and try again. Be sure to click Restore after purchase to check your subscription status.
ญี่ปุ่น 購読自動決済が行われなかったため、購読サービスが終了しました。 Google Playの購読設定に移動して決済方法を確認し、もう一度お試しください。 決済した後、必ず【復元】ボタンをタップして購読状態を確認してください。
จีนแบบย่อ 由于自动付款失败,订阅服务已到期。 前往谷歌商店的订阅设置,查看付款方式后重新进行付款吧。 付款后请务必点击复原(restore)按键查看订阅状态。
จีนแบบดั้งเดิม 自動續訂扣款失敗,已取消訂閱服務。 請至Google Play的[訂閱]設定中,確認付款方式後,再次付款。 付款完畢後,請務必點選[回復]按鈕,並確認訂閱狀態。
ฝรั่งเศส Le service d'abonnement est interrompu : le paiement automatique ne s'est pas déroulé normalement. Veuillez procéder de nouveau au paiement en vous rendant dans les paramètres d'abonnement de Google Play. Après le paiement, confirmez bien le statut de l'abonnement en appuyant sur le bouton "Reprendre".
เยอรมัน Der Abonnement ist abgelaufen, weil die automatische Zahlung für das Abonnement fehlgeschlagen ist. Gehe zu den Einstellungen deiner Google Play-Abonnements, überprüfe deine Zahlungsmethode und versuche es erneut. Bitte stelle sicher, dass du nach dem Kauf auf Wiederherstellen klickst, um den Status deines Abonnements zu überprüfen.
รัสเซีย Срок действия подписки истек, поскольку не удалось произвести автоматическую оплату за подписку. Перейдите в настройки подписки Google Play, проверьте метод оплаты и повторите вновь. После оплаты подтвердите статус подписки, нажав на кнопку «Возобновить».
สเปน La subscripción del servicio ha expirado porque ha fallado el método de pago automático de la subscripción. Ve a los ajustes de subscripción de tu Google Play, comprueba tu método de pago e inténtalo de nuevo. Asegúrate de pulsar Restaurar después de comprar para comprobar el estado de tu subscripción.
โปรตุเกส O serviço de assinatura expirou porque houve uma falha no pagamento automático da assinatura. Acesse as suas configurações de assinatura da Google Play, verifique o seu método de pagamento e tente novamente. Certifique-se de clicar em Recuperar após a compra, para conferir o status da sua assinatura.
อินโดนีเซีย Layanan berlangganan dihentikan karena pembayaran otomatis telah gagal. Silakan buka pengaturan langganan Google Play, periksa metode pembayaranmu dan coba lagi. Pastikan kamu klik Pulihkan setelah membeli untuk melihat status berlangganan.
เวียดนาม Dịch vụ đăng ký đã hết hạn do thanh toán đăng ký tự động không thành công. Vui lòng vào thiết lập đăng ký của Google Play để kiểm tra phương thức thanh toán của bạn và thanh toán lại. Đừng quên nhấn vào nút Khôi Phục (Restore) sau khi thanh toán để kiểm tra tình trạng đăng ký của bạn.
ไทย บริการจากการสมัครบริการหมดอายุแล้ว เนื่องจากชำระเงินอัตโนมัติไม่สำเร็จ กรุณาไปที่หน้าตั้งค่า Subscription ใน Google Play แล้วตรวจสอบวิธีการชำระเงินอีกครั้ง อย่าลืมกด Restore หลังซื้อ เพื่อตรวจสอบสถานะการสมัครของคุณ
อิตาลี Il servizio di abbonamento è scaduto perché il pagamento dell'abbonamento automatico è fallito. Vai alle impostazioni degli abbonamenti di Google Play, controlla il metodo di pagamento e riprova. Assicurati di fare clic su Ripristina dopo l'acquisto per controllare lo stato dell'abbonamento.
ตุรกี Abone otomatik ödeme düzgün gerçekleşmediği için abonelik hizmeti sona erdi. Google Play Abonelik ayarına gidip ödeme yöntemini kontrol edip tekrar ödeme yapınız. Ödemeyi yaptıktan sonra geri yükle (restore) butonuna tıklayıp abonelik durumunuzu kontrol ediniz.
อาหรับ انتهت صلاحية خدمة الاشتراك بسبب فشل دفع الاشتراك الآلي. انتقل إلى إعداداتك في غوغل بلاي وتحقق من طريقة الدفع و حاول مرة أخرى. تأكد من النقر فوق زر استعادة الأشتراك بعد الشراء للتحقق من حالة اشتراكك.
  • ข้อความแจ้งเตือนเมื่ออยู่ในสถานะรอดำเนินการ
เกาหลี การชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกล้มเหลว ทำให้บริการสมัครสมาชิกหมดอายุ กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง หลังจากชำระเงินแล้ว กรุณาคลิกปุ่มกู้คืน (restore) เพื่อเช็คสถานะการสมัครสมาชิกของคุณ
อังกฤษ บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติล้มเหลว ไปที่การตั้งค่าการสมัครสมาชิกใน Google Play ตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง อย่าลืมคลิกที่ Restore หลังจากการซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
ญี่ปุ่น การชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกไม่สำเร็จ ทำให้บริการสมัครสมาชิกสิ้นสุดลง กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองอีกครั้ง หลังจากชำระเงินแล้ว กรุณาคลิกปุ่ม【復元】เพื่อเช็คสถานะการสมัครสมาชิกของคุณ
จีนแบบย่อ บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติล้มเหลว ไปที่การตั้งค่าการสมัครสมาชิกใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง หลังจากชำระเงินแล้ว กรุณาคลิกปุ่มกู้คืน (restore) เพื่อตรวจสอบสถานะการสมัครสมาชิก
จีนแบบดั้งเดิม การชำระเงินอัตโนมัติสำหรับการสมัครสมาชิกล้มเหลว ทำให้บริการสมัครสมาชิกยกเลิก กรุณาไปที่การตั้งค่าการสมัครใน Google Play เพื่อตรวจสอบวิธีการชำระเงินและชำระเงินใหม่อีกครั้ง หลังจากชำระเงินแล้ว กรุณาคลิกปุ่ม[回復]เพื่อตรวจสอบสถานะการสมัครสมาชิก
ฝรั่งเศส บริการสมัครสมาชิกหยุดชะงักเนื่องจากการชำระเงินอัตโนมัติไม่สำเร็จ กรุณาทำการชำระเงินใหม่โดยไปที่การตั้งค่าการสมัครสมาชิกใน Google Play หลังจากการชำระเงิน กรุณายืนยันสถานะการสมัครสมาชิกโดยการกดปุ่ม "Reprendre"
เยอรมัน บริการสมัครสมาชิกหมดอายุเนื่องจากการชำระเงินอัตโนมัติล้มเหลว ไปที่การตั้งค่าการสมัครสมาชิกใน Google Play ตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง กรุณาแน่ใจว่าคุณคลิกที่ "Wiederherstellen" หลังจากการซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
รัสเซีย บริการสมัครสมาชิกหมดอายุเนื่องจากไม่สามารถทำการชำระเงินอัตโนมัติได้ กรุณาไปที่การตั้งค่าการสมัครสมาชิกใน 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 ตรวจสอบวิธีการชำระเงินและลองใหม่อีกครั้ง กรุณาแน่ใจว่าคุณคลิกที่ปุ่ม "استعادة" หลังจากการซื้อเพื่อตรวจสอบสถานะการสมัครสมาชิกของคุณ
Note

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

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

แผนภาพ

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

การสนับสนุนการสมัครสมาชิก Google V2

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: 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

โปรดติดต่อทีม สถาปนิกโซลูชัน, แพลตฟอร์ม Com2US เพื่อดำเนินการระบบการสมัครสมาชิกแบบต่ออายุอัตโนมัติ

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

เมื่อผู้ใช้เข้าสู่ร้านค้าผลิตภัณฑ์การสมัครสมาชิกในเกม จะต้องเรียกใช้เมธอด 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 มีประเภทการแสดงผลของตัวเอง ลำดับของสัญลักษณ์สกุลเงินและราคาอาจแสดงผลแตกต่างกันในหลายประเทศขึ้นอยู่กับระบบปฏิบัติการ
  • ตรวจสอบให้แน่ใจว่าได้แสดงสัญลักษณ์สกุลเงินของแต่ละประเทศให้ตรงกับตารางของมัน อ้างอิงจากนโยบาย 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
            }

    }];
import HIVEService
IAPV4Interface.getSubscriptionProductInfo { result, productInfoList, balance in
    if result.isSuccess() {
        // Implementation of the desired features by the game studio, such as shop UI.   
        productInfoList?.forEach { .. }
    } 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 Reference: 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    
         }    
}];