วงจรการสมัครใช้บริการ

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

จัดการวงจรสำหรับการสมัครใช้บริการแบบต่ออายุใหม่อัตโนมัติ

เมื่อสถานะการสมัครใช้บริการของผู้ใช้มีการเปลี่ยนแปลง เซิร์ฟเวอร์แบ็กเอนด์ของคุณจะได้รับ SubscriptionNotification ข้อความ

วันที่
รูปที่ 1 สถานะของวงจรและเหตุการณ์การเปลี่ยนสำหรับ การซื้อการสมัครใช้บริการแบบต่ออายุใหม่อัตโนมัติ

ในการอัปเดตสถานะในแบ็กเอนด์ของคุณ ให้เรียกใช้ purchases.subscriptionsv2.get API ที่มีโทเค็นการซื้อรวมอยู่ในการแจ้งเตือน ปลายทางนี้มี สถานะการสมัครใช้บริการล่าสุดที่ได้รับโทเค็นการซื้อ และถือว่า แหล่งข้อมูลที่เชื่อถือได้มากที่สุดสำหรับการจัดการการสมัครใช้บริการ

โทเค็นการซื้อจะใช้ได้ตั้งแต่ลงชื่อสมัครใช้การสมัครใช้บริการจนถึง 60 วันหลังจากนั้น วันหมดอายุ หลังจากวันดังกล่าว โทเค็นการซื้อจะใช้เพื่อ เรียก API สำหรับนักพัฒนาซอฟต์แวร์ Google Play

การซื้อการสมัครใช้บริการแบบต่ออายุใหม่อัตโนมัติใหม่

เมื่อผู้ใช้ซื้อการสมัครใช้บริการ ข้อความ SubscriptionNotification ที่มี ระบบจะส่งประเภท SUBSCRIPTION_PURCHASED ไปยังไคลเอ็นต์ RTDN ของคุณ คุณได้รับหรือไม่ การแจ้งเตือนนี้หรือการลงทะเบียน การซื้อในแอปใหม่ผ่าน PurchasesUpdatedListener หรือดึงข้อมูลการซื้อด้วยตนเองใน onResume() ของแอป คุณควรประมวลผลการซื้อใหม่ใน แบ็กเอนด์ โดยคุณต้องทำตามขั้นตอนต่อไปนี้:

  1. ค้นหาข้อมูล purchases.subscriptionsv2.get ปลายทางเพื่อรับการสมัครใช้บริการ แหล่งข้อมูล ที่มีสถานะของการสมัครใช้บริการล่าสุด
  2. ตรวจสอบว่าค่าของแอตทริบิวต์ subscriptionState คือ SUBSCRIPTION_STATE_ACTIVE
  3. ยืนยันการซื้อ
  4. ให้สิทธิ์เข้าถึงเนื้อหาแก่ผู้ใช้ บัญชีผู้ใช้ที่เชื่อมโยงกับ ก็สามารถระบุได้ด้วย ExternalAccountIdentifiers จากแหล่งข้อมูลการสมัครใช้บริการหากมีการตั้งค่าตัวระบุไว้ตอนซื้อ เวลาที่ใช้ setObfuscatedAccountId และ setObfuscatedProfileId

Play Billing Library ยังมีวิธีการ รับทราบการสมัครใช้บริการด้วย acknowledgePurchase() และวิธีตรวจสอบสถานะการตอบรับ isAcknowledged() อย่างไรก็ตาม เราขอแนะนำให้คุณจัดการการประมวลผลการซื้อในแบ็กเอนด์สำหรับ การรักษาความปลอดภัยที่ดีขึ้น

ทรัพยากรการสมัครใช้บริการสำหรับการซื้อใหม่มีลักษณะคล้ายกับรายการต่อไปนี้ ตัวอย่าง:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_PENDING", // need to acknowledge new purchases
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

การต่ออายุการสมัครรับข้อมูล

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

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ]
}

คุณไม่จำเป็นต้องรับทราบการต่ออายุการสมัครใช้บริการ

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

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

queryPurchasesAsync() จะแสดงผลการซื้อที่อยู่ในระยะเวลาผ่อนผันต่อไป หากแอปของคุณ อาศัย queryPurchasesAsync เพียงอย่างเดียวในการตรวจสอบว่าผู้ใช้มีสิทธิ์ได้รับ ของคุณ แอปของคุณควรจัดการระยะเวลาผ่อนผันโดยอัตโนมัติ เนื่องจาก การสมัครใช้บริการเหล่านี้จะแสดงว่าใช้งานอยู่ผ่านทาง Play Billing Library

การซิงค์สถานะการสมัครกับแบ็กเอนด์ช่วยให้คุณรับรู้ ของการปฏิเสธการชำระเงิน และให้บริบทมากขึ้น ในขณะที่คุณพยายามลดความไม่ตั้งใจ เลิกใช้งาน ฟัง SubscriptionNotification ข้อความ ที่มีประเภท SUBSCRIPTION_IN_GRACE_PERIOD เพื่อรับการแจ้งเตือนเมื่อผู้ใช้ป้อน ระยะเวลาผ่อนผัน ขณะที่ผู้ใช้อยู่ในระยะเวลาผ่อนผัน การสมัครรับข้อมูล แหล่งข้อมูล มี autoRenewEnabled = true Google Play ได้ขยายขอบเขตของ ค่า expiryTime จนกว่าระยะเวลาผ่อนผันจะสิ้นสุดลงเนื่องจากการให้สิทธิ์ ควรสิ้นสุดจนกว่าผู้ใช้จะยกเลิก หรือระยะเวลาผ่อนผันสิ้นสุดลง ความยาวสูงสุด ค่าของช่อง subscriptionState ในช่วงเวลานี้คือ SUBSCRIPTION_STATE_IN_GRACE_PERIOD แหล่งข้อมูลการสมัครใช้บริการมีลักษณะคล้ายกับ ตัวอย่างต่อไปนี้

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_IN_GRACE_PERIOD",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_future,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

Play แจ้งผู้ใช้ที่อยู่ในระยะเวลาผ่อนผันว่าการชำระเงินถูกปฏิเสธ และแจ้งให้แก้ไขปัญหาเกี่ยวกับวิธีการชำระเงินใน Play Store เมื่อ ผู้ใช้เข้าสู่ระยะเวลาผ่อนผัน คุณควรแนะนำให้ผู้ใช้แก้ไขปัญหา ในกรณีที่เป็นการดำเนินการที่ไม่สำเร็จ วิธีง่ายๆ ในการดำเนินการ คือการใช้ฟีเจอร์การรับส่งข้อความในแอป API หากคุณเรียกใช้ API นี้ เมื่อผู้ใช้เปิดแอปของคุณ ผู้ใช้จะเห็นข้อความ Play ในข้อความชั่วคราว แถบแสดงข้อความที่แจ้งให้ผู้ใช้ทราบว่าการชำระเงินถูกปฏิเสธ ข้อความนี้ มี Deep Link เพื่อให้ผู้ใช้แก้ไขวิธีการชำระเงินใน Google ด้วย เล่น

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

หากผู้ใช้ไม่แก้ไขวิธีการชำระเงินในช่วงระยะเวลาผ่อนผัน การสมัครใช้บริการเข้าสู่การระงับบัญชีและจะสูญเสียสิทธิ์

การเข้าถึงและการกู้คืนระยะเวลาผ่อนผัน

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

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

โปรดจดจำประเด็นต่อไปนี้

  • ในช่วงระยะเวลาผ่อนผัน ผู้ใช้ควรรักษาสิทธิประโยชน์ของการสมัครใช้บริการไว้ได้
  • เมื่อการสมัครใช้บริการกลับมาสมัครใช้บริการอีกครั้งในระยะเวลาผ่อนผัน วันที่ต่ออายุจะเป็น ไม่รีเซ็ต
  • หากคุณเพิ่มระยะเวลาผ่อนผัน เช่น จาก 7 วันเป็น 14 วัน ผู้ใช้ที่ อยู่ในระยะเวลาผ่อนผันและเข้าถึงสิทธิประโยชน์การสมัครใช้บริการได้มากขึ้น
  • หากคุณลดระยะเวลาผ่อนผัน ผู้ใช้ที่เข้าสู่ระยะเวลาผ่อนผันเดิมมากเพียงพอ ระยะเวลาที่จะเกินระยะเวลาผ่อนผันใหม่จะได้รับสิทธิประโยชน์จากการสมัครใช้บริการ ทันที ตัวอย่างเช่น หากคุณลดระยะเวลาผ่อนผันจาก 14 วันถึง 7 วัน ผู้ใช้ที่อยู่ในวันที่ 8-14 ของระยะเวลาผ่อนผันเดิมจะมี สิทธิประโยชน์การสมัครใช้บริการจะถูกเพิกถอนทันที
  • การสมัครใช้บริการจะยังคงอยู่ในสถานะใช้งานอยู่และคุณจะไม่ได้รับระยะเวลาผ่อนผัน RTDN ในช่วงระยะเวลาหนึ่ง จนกว่าระยะเวลาผ่อนผันแบบไม่มีเสียงจะสิ้นสุดลง

ระยะเวลาผ่อนผันแบบเงียบ

คุณกำหนดระยะเวลาผ่อนผันได้ 0 วัน แต่ Play จะรออย่างน้อย 1 วันเพื่อ เพื่อให้แน่ใจว่ามีเวลาเพียงพอสำหรับการลองชำระเงินซ้ำ ระยะเวลาผ่อนผันแบบเงียบนี้ สำหรับการประมวลผลการชำระเงิน ในช่วงเวลา 24 ชั่วโมงนี้ การสมัครใช้บริการจะยังคงอยู่ใน สถานะ ACTIVE

วิธีที่ดีที่สุดที่ให้คุณติดตามการเปลี่ยนแปลงสถานะการสมัครใช้บริการคือ ฟังและตอบสนองต่อการแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาซอฟต์แวร์ (RTDN) เรียกใช้ purchases.subscriptionsv2.get() ในเวลา RTDN แทนที่จะเป็นเวลาหมดอายุเพื่อให้ได้ค่าประมาณที่แม่นยำมากขึ้น ของการสมัครใช้บริการ

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

  • SUBSCRIPTION_ON_HOLD (หากเปิดใช้)
  • SUBSCRIPTION_CANCELED (หากยกเลิก)
  • SUBSCRIPTION_EXPIRED (หากหมดอายุแล้ว)
  • SUBSCRIPTION_RENEWED (หากต่ออายุเรียบร้อยแล้ว)

คุณยังเรียกใช้เมธอด subscriptionV2.get() ได้ทุกเมื่อหลังจาก ระยะเวลาผ่อนผันแบบเงียบ 24 ชั่วโมงเพื่อดูสถานะล่าสุดของการสมัครใช้บริการ

การระงับบัญชี

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

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

RTDN จะแจ้งให้คุณทราบเมื่อผู้ใช้เข้าสู่ช่วงการระงับบัญชีเพื่อให้คุณแจ้งได้ โดยเร็วที่สุดเพื่อแจ้งสาเหตุที่การเข้าถึงการสมัครใช้บริการถูกระงับ วิธีที่ตรงไปตรงมาคือการใช้การรับส่งข้อความในแอป API เรียกใช้ API นี้เมื่อ ผู้ใช้เปิดแอปจะแสดงข้อความให้ผู้ใช้เห็นในแถบแสดงข้อความชั่วคราว เพื่อแจ้งให้ทราบว่าการชำระเงินถูกปฏิเสธ ข้อความนี้ยังรวมถึง Deep Link เพื่อให้ผู้ใช้แก้ไขวิธีการชำระเงินใน Google Play

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

การสมัครใช้บริการจะไม่ส่งคืนโดย queryPurchasesAsync() ในระหว่างการระงับบัญชี ดังนั้นหากแอปของคุณใช้วิธีการนี้ในการแสดง การซื้อที่มีอยู่ คุณควรรองรับการระงับบัญชีโดยค่าเริ่มต้น

พร้อมนักพัฒนาซอฟต์แวร์แบบเรียลไทม์ คุณจะได้รับ SubscriptionNotification ข้อความ ประเภท SUBSCRIPTION_ON_HOLD เมื่อการสมัครใช้บริการเข้าสู่การระงับบัญชี โทร เวลา purchases.subscriptionsv2.get จากเซิร์ฟเวอร์แบ็กเอนด์ที่ปลอดภัยเพื่อดึงข้อมูลการสมัครใช้บริการใหม่ ระหว่างการระงับบัญชี ให้ระงับช่อง expiryTime ของการสมัครใช้บริการ ทรัพยากร ตั้งค่าเป็นการประทับเวลาที่ผ่านมา และตั้งค่าช่อง subscriptionState เป็น SUBSCRIPTION_STATE_ON_HOLD:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ON_HOLD",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_past,
      ...
    }
  ],
}

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

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

สำหรับการสมัครใช้บริการแบบผ่อนชำระ อาจมีการปฏิเสธการชำระเงินและการคืนเงินในกรณีที่ การพยายามชำระเงินส่วนบุคคล

หลังจากการกู้คืน Play Billing Library จะแสดงการสมัครใช้บริการอีกครั้งผ่าน เมธอด queryPurchasesAsync() หากคุณใช้วิธีนี้เพื่อพิจารณาว่า ผู้ใช้มีสิทธิ์ในการสมัครใช้บริการ แอปของคุณควรจัดการโดยอัตโนมัติ การสมัครใช้บริการที่กู้คืนจากการระงับบัญชี

ฟังภาษา SubscriptionNotification ข้อความ ที่มีประเภท SUBSCRIPTION_RECOVERED สำหรับรับการแจ้งเตือนเมื่อการสมัครใช้บริการ กู้คืน และผู้ใช้ควรได้รับสิทธิ์เข้าถึงอีกครั้ง หากต้องการค้นหาการสมัครใช้บริการ หลังจากได้รับการแจ้งเตือนนี้ ช่อง expiryTime ได้รับการตั้งค่าเป็นการประทับเวลา ในอนาคตและตั้งค่าช่อง subscriptionState เป็น SUBSCRIPTION_STATE_ACTIVE อีกครั้ง:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      ...
    }
  ],
}

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

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_past,
      ...
    }
  ],
}

ทันทีที่คุณได้รับแจ้งเกี่ยวกับการยกเลิกระหว่างการระงับบัญชี คุณจะ จะได้รับ RTDN ที่มีประเภท SUBSCRIPTION_EXPIRED ด้วยเนื่องจากผู้ใช้ จากการให้สิทธิ์แบบชำระเงินและการสมัครใช้บริการเลิกใช้งานไปแล้วเมื่อมีการยกเลิก คุณจัดการกับการหมดอายุนี้ได้ด้วยวิธีตามปกติ

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

สิทธิ์เข้าถึงและการกู้คืนบัญชี

รูปที่ 3 แสดงลำดับเวลาสำหรับการสมัครใช้บริการที่เข้าสู่การระงับบัญชีและ จากนั้นจะกู้คืนเมื่อผู้ใช้แก้ไขวิธีการชำระเงิน

วันที่
รูปที่ 3 ไทม์ไลน์สําหรับการสมัครใช้บริการที่เข้าสู่ การระงับบัญชีและกู้คืนบัญชีก่อนที่บัญชีจะสิ้นสุด

รูปที่ 4 แสดงไทม์ไลน์ของการสมัครใช้บริการ ซึ่งคล้ายกับตัวอย่างก่อนหน้านี้ ที่เข้าสู่ระยะเวลาผ่อนผันก่อนเข้าสู่การระงับบัญชี กู้คืนขณะพักสายได้

วันที่
รูปที่ 4 ไทม์ไลน์ของการสมัครใช้บริการที่เข้าสู่ระยะเวลาผ่อนผัน ระยะเวลา จากนั้นเข้าสู่การระงับบัญชี และสุดท้ายจึงกู้คืนบัญชีได้ก่อนบัญชี การระงับจะสิ้นสุด

โปรดจดจำประเด็นต่อไปนี้

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

วันหมดอายุ

เมื่อการสมัครใช้บริการหมดอายุ ผู้ใช้ควรสูญเสียสิทธิ์เข้าถึงการสมัครใช้บริการนั้น ต ส่งข้อความ SubscriptionNotification รายการประเภท SUBSCRIPTION_EXPIRED แล้ว กรณีนั้น เมื่อคุณได้รับการแจ้งเตือนนี้ ลองสอบถามนักพัฒนาแอป Google Play API เพื่อรับการสมัครใช้บริการล่าสุด แหล่งข้อมูล หลังจากที่คุณยืนยันว่า subscriptionState คือ SUBSCRIPTION_STATE_EXPIRED นำการให้สิทธิ์ออกและลงทะเบียนสถานะการซื้อเป็น "ไม่ถูกต้อง" ใน แบ็กเอนด์ แหล่งข้อมูลการสมัครใช้บริการจะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time_in_past,
      ...
    }
  ],
}

การยกเลิก

ผู้ใช้สามารถยกเลิกการสมัครใช้บริการจากศูนย์การสมัครใช้บริการของ Play โดยสมัครใจได้ หรือยกเลิกการสมัครใช้บริการโดยอัตโนมัติในกรณีที่ผู้ใช้ไม่กลับมาสมัครใช้บริการ อยู่ในการระงับบัญชี นักพัฒนาซอฟต์แวร์ยังสามารถทริกเกอร์ ยกเลิกด้วย purchases.subscriptions.cancel เมื่อยกเลิกการสมัครใช้บริการแล้ว ผู้ใช้จะยังคงเข้าถึงเนื้อหาได้จนถึงวันที่ สิ้นสุดรอบการเรียกเก็บเงินปัจจุบัน เมื่อรอบการเรียกเก็บเงินสิ้นสุดลง การเข้าถึงควร ถูกเพิกถอน

การยกเลิกการสมัครใช้บริการแบบไม่ผ่อนชำระและต่ออายุใหม่อัตโนมัติจะทำให้ การแจ้งเตือน SUBSCRIPTION_CANCELED รายการ วันและเวลา คุณได้รับการแจ้งเตือนนี้ การสมัครรับข้อมูล แหล่งข้อมูล ที่แสดงผลจาก Google Play Developer API มีช่อง subscriptionState ตั้งค่าเป็น SUBSCRIPTION_STATE_CANCELED และฟิลด์ expiryTime จะมีค่า วันที่ที่ผู้ใช้ควรเสียสิทธิ์เข้าถึงการสมัครใช้บริการ หากวันที่ดังกล่าวตรงกับ ผ่านไปแล้ว ผู้ใช้ควรสูญเสียสิทธิ์โดยทันที กรณีนี้เกิดขึ้นได้ ตัวอย่างเช่น หากผู้ใช้ยกเลิกการสมัครรับข้อมูลขณะที่ใช้บัญชี การระงับ เนื่องจากมีการปฏิเสธการชำระเงิน

แหล่งข้อมูลการสมัครใช้บริการสำหรับการซื้อที่ยกเลิกแล้วมีลักษณะคล้ายกับด้านล่างนี้ ตัวอย่าง:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time,
      ...
    }
  ],
}

สำหรับการสมัครใช้บริการแบบผ่อนชำระ SUBSCRIPTION_CANCELLATION_SCHEDULED ระบบจะส่งการแจ้งเตือนเมื่อมีการยกเลิกที่ผู้ใช้เป็นผู้เริ่มดำเนินการเมื่อการชำระเงินยังคงอยู่ สำหรับระยะเวลาผูกมัด การยกเลิกอยู่ระหว่างรอดำเนินการและมีผลในวันที่ สิ้นสุดระยะเวลาผูกมัดปัจจุบัน เมื่อคุณได้รับการแจ้งเตือนนี้ ฟิลด์ ทรัพยากรการสมัครใช้บริการที่ส่งคืนจาก Google Play Developer API มี ตั้งค่าฟิลด์ subscriptionState เป็น SUBSCRIPTION_STATE_ACTIVE เนื่องจาก การสมัครใช้บริการแบบผ่อนชำระจะยังคงมีผลจนกว่าจะสิ้นสุดระยะเวลาผูกมัด แต่ยังมีออบเจ็กต์การยกเลิกที่รอดำเนินการอยู่ที่ว่างเปล่า ระบบจะส่งการแจ้งเตือน SUBSCRIPTION_CANCELED ตามด้วย SUBSCRIPTION_EXPIRED เมื่อสิ้นสุดระยะเวลาผูกมัด

แหล่งข้อมูลการสมัครใช้บริการสำหรับการซื้อการสมัครใช้บริการแบบผ่อนชำระที่ การยกเลิกที่รอดำเนินการมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_plan01",
      "expiryTime": expiration_time,
      "autoRenewingPlan": {
        "autoRenewEnabled": true,
        "recurringPrice": {
          "currencyCode": "USD",
          "units": "1",
          "nanos": 990000000
        },
        "installmentDetails": {
          "initialCommittedPaymentsCount": 6,
          "remainingCommittedPaymentsCount": 5,
          "pendingCancellation": {}
      ...
        }
      }
    }
  ],
}

คุณสามารถดูช่อง canceledStateContext ในแหล่งข้อมูลการสมัครใช้บริการเพื่อ ดูสาเหตุที่การสมัครใช้บริการถูกยกเลิก (เช่น การสมัครใช้บริการ ถูกยกเลิกโดยผู้ใช้ โดยระบบ หรือโดยคุณ) หากการสมัครใช้บริการเป็น ที่ผู้ใช้ยกเลิก คุณสามารถดูที่ช่อง userInitiatedCancellation เพื่อ ดูสาเหตุที่ผู้ใช้ยกเลิกการสมัครใช้บริการ ซึ่งจะช่วยในการสื่อสาร

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

การเพิกถอน

การสมัครใช้บริการอาจถูกเพิกถอนได้จากหลายสาเหตุ ซึ่งรวมถึงแบ็กเอนด์ด้วย การเพิกถอนการสมัครรับข้อมูลโดยใช้ purchases.subscriptionsv2.revoke หรือการซื้อที่มีการเรียกเก็บเงินคืน ในกรณีนี้ ให้เพิกถอนคำขอ การให้สิทธิ์ทันที ข้อความ SubscriptionNotification พร้อมประเภท ระบบจะส่ง SUBSCRIPTION_REVOKED เมื่อเกิดเหตุการณ์นี้ขึ้น เมื่อคุณได้รับข้อมูลนี้ การแจ้งเตือน แหล่งข้อมูล ที่แสดงผลจาก Google Play Developer API มีช่อง subscriptionState ตั้งค่าเป็น SUBSCRIPTION_STATE_EXPIRED

แหล่งข้อมูลการสมัครใช้บริการสำหรับการซื้อที่เพิกถอนมีลักษณะคล้ายกับรายการต่อไปนี้ ตัวอย่าง:

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": expiration_time,
      ...
    }
  ]
}

การสมัครใช้บริการที่มีการเลื่อนเวลา

มีเหตุผลหลายประการที่คุณอาจต้องการขยายระยะเวลาของผู้ใช้ ตัวอย่างเช่น คุณอาจต้องการเสนอสิทธิ์เข้าถึงฟรีเป็น การส่งเสริมการขาย เช่น การให้ฟรี 1 สัปดาห์สำหรับการซื้อภาพยนตร์หรือให้ฟรี การเข้าถึงลูกค้า เป็นสัญลักษณ์แห่งความปรารถนาดี คุณสามารถใช้ purchases.subscriptions.defer จาก Play Developer API เพื่อเลื่อนวันที่เรียกเก็บเงินครั้งถัดไป การต่ออายุใหม่อัตโนมัติ เมื่อคุณทำเช่นนี้ SubscriptionNotification ส่งข้อความประเภท SUBSCRIPTION_DEFERRED แล้ว ระหว่างช่วงการเลื่อนเวลา ผู้ใช้สมัครรับข้อมูลเนื้อหาของคุณโดยมีสิทธิ์เข้าถึงเต็มรูปแบบแต่ไม่มีการเรียกเก็บเงิน ระบบจะอัปเดตวันที่ต่ออายุการสมัครใช้บริการเพื่อให้ตรงกับวันที่ใหม่

สำหรับแพ็กเกจแบบชำระเงินล่วงหน้า คุณสามารถใช้ Defer Billing API เพื่อเลื่อนวันที่หมดอายุได้

ทรัพยากรการสมัครใช้บริการสำหรับการสมัครใช้บริการที่มีการเลื่อนเวลามีลักษณะคล้ายกับ ตัวอย่างต่อไปนี้

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": timestamp_in_future,
      ...
    }
  ],
}

การสมัครใช้บริการที่หยุดชั่วคราว

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

การสมัครรับข้อมูลซ้ำ รายสัปดาห์ รายเดือน 3 เดือน 6 เดือน รายปี
ระยะเวลาการหยุดชั่วคราวที่ใช้ได้* 1 สัปดาห์
2 สัปดาห์
3 สัปดาห์
4 สัปดาห์
1 เดือน
2 เดือน
3 เดือน
1 เดือน
2 เดือน
3 เดือน
1 เดือน
2 เดือน
3 เดือน
ไม่มี
*อาจเปลี่ยนแปลงได้ทุกเมื่อ

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

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

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

เมื่อมีการหยุดการสมัครใช้บริการของผู้ใช้ชั่วคราว Play Billing Library จะไม่แสดง ผ่าน queryPurchasesAsync() หากการสมัครใช้บริการกลับมาทำงานอีกครั้ง เมธอด queryPurchasesAsync() แสดงผลอีกครั้ง

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

ข้อความ SubscriptionNotification ระบบจะส่งที่มีประเภท SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED เมื่อผู้ใช้เริ่มต้น การหยุดสมัครใช้บริการชั่วคราว ในขณะนี้ ผู้ใช้ควรรักษาการเข้าถึง การสมัครใช้บริการจนกว่าจะถึงวันที่ต่ออายุครั้งถัดไป และการสมัครใช้บริการ แหล่งข้อมูล มี autoRenewEnabled = true ค่าของช่อง subscriptionState ตอนนี้คือ SUBSCRIPTION_STATE_ACTIVE

ระบบจะส่งข้อความ SubscriptionNotification ประเภท SUBSCRIPTION_PAUSED เมื่อ การหยุดชั่วคราวจะมีผล ในกรณีนี้ ผู้ใช้ควรจะสูญเสียสิทธิ์การเข้าถึง การสมัครใช้บริการ และทรัพยากรการสมัครใช้บริการมี autoRenewEnabled = true และตั้งค่าช่อง subscriptionState เป็น SUBSCRIPTION_STATE_PAUSED คุณสามารถ ดูว่าการสมัครใช้บริการจะมีการต่ออายุอีกครั้งเมื่อใด โดยดูที่ PausedStateContext ออบเจ็กต์

ระบบจะส่งข้อความ SubscriptionNotification ประเภท SUBSCRIPTION_RENEWED หาก การสมัครใช้บริการจะกลับมาทำงานอีกครั้งโดยอัตโนมัติเมื่อสิ้นสุดระยะเวลาการหยุดชั่วคราว หรือหากผู้ใช้เลือกกลับมาสมัครใช้บริการต่อด้วยตนเอง ควรได้รับการจัดการ ตามที่อธิบายไว้ในการต่ออายุ

ระบบจะส่งข้อความ SubscriptionNotification ประเภท SUBSCRIPTION_ON_HOLD หาก มีการชำระเงินไม่สำเร็จขณะพยายามกลับมาสมัครใช้บริการอีกครั้งหลังจากหยุดชั่วคราว การจัดการนี้ควรได้รับการจัดการตามที่อธิบายไว้ในการระงับบัญชี

สมัครอีกครั้ง

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

วันที่
รูปที่ 7 บัญชี > ส่วนการสมัครใช้บริการของ แอป Google Play Store แสดงการสมัครใช้บริการที่ยกเลิกแล้วพร้อม ปุ่มสมัครใช้บริการอีกครั้ง

แม้ว่าปุ่มจะมีป้ายกำกับสมัครอีกครั้งเสมอ แต่ฟังก์ชันการทำงานจะขึ้นอยู่กับปุ่ม ตามสถานะการสมัครใช้บริการ

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

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

กู้คืนก่อนหมดอายุ

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

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

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date
      ...
    }
  ],
}

สมัครใช้บริการอีกครั้งหลังหมดอายุ

หากมีการกําหนดค่าแพ็กเกจเริ่มต้นแบบต่ออายุใหม่อัตโนมัติโดยใช้ Google Play Console หรือ API เพื่อให้ผู้ใช้สมัครอีกครั้ง สามารถซื้อการสมัครใช้บริการที่หมดอายุไปแล้วได้อีกครั้งใน Google Play Store

นี่คือการซื้อใหม่ Google Play จะออกโทเค็นการซื้อใหม่ล่าสุด แบ็กเอนด์ได้รับ RTDN ที่เป็นประเภท SUBSCRIPTION_PURCHASED สถานะการซื้อ สำหรับการซื้อนอกแอปประเภทนี้ไม่มีlinkedPurchaseToken ที่เกี่ยวข้องกับการซื้อครั้งแรกในกรณีดังกล่าว เนื่องจากผู้ซื้อ หมดอายุอย่างสมบูรณ์แล้ว รายการเหล่านี้เป็นการซื้อใหม่ๆ ที่แบ็กเอนด์ต้อง ประมวลผลและรับทราบเช่นเดียวกับการซื้ออื่นๆ

อัปเกรด ดาวน์เกรด และสมัครใช้บริการอีกครั้ง

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

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

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

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

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  ...
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "linkedPurchaseToken": old_purchase_token,
  ...
  "lineItems": [
    {
      "productId": "sub_variant_plan01",
      "expiryTime": next_renewal_date,
      "autoRenewingPlan": {
        "autoRenewEnabled": true
      }
    }
  ],
}

การเปลี่ยนแปลงราคา

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

เมื่อการเปลี่ยนแปลงราคามีผลกับสมาชิกปัจจุบันแบบเลือกใช้ คุณจะ ได้รับ RTDN หากผู้ใช้ดำเนินการเพื่อยืนยันหรือปฏิเสธราคาใหม่

จัดการการยืนยันผู้ใช้เกี่ยวกับการเปลี่ยนแปลงราคาแบบขอให้ผู้ใช้ยินยอม

เมื่อผู้ใช้ยอมรับการขึ้นราคาค่าสมัครใช้บริการ คุณจะได้รับ SubscriptionNotification ข้อความ ที่มีประเภท SUBSCRIPTION_PRICE_CHANGED_CONFIRMED มีราคาแบบไม่ได้ขอให้ผู้ใช้ยินยอม หรือเมื่อมีการต่ออายุการขึ้นราคาการสมัครใช้บริการ คุณจะได้รับ SubscriptionNotification ข้อความประเภท SUBSCRIPTION_RENEWED ให้รางวัล เช่นเดียวกับการต่ออายุอื่นๆ

จัดการกรณีที่ไม่ยอมรับการขึ้นราคาแบบขอให้ผู้ใช้ยินยอม

หากผู้ใช้ไม่ได้ยอมรับการขึ้นราคาแบบขอให้ผู้ใช้ยินยอมก่อนที่ผู้ใช้จะต้องต่ออายุ ในราคาที่สูงกว่า พวกเขาจะยกเลิกการสมัครโดยอัตโนมัติและคุณจะได้รับ SubscriptionNotification ข้อความ ที่มีประเภท SUBSCRIPTION_CANCELED จัดการกิจกรรมนี้ตามที่อธิบายไว้ใน การยกเลิก

ผู้ใช้ยังยกเลิกการสมัครใช้บริการในกรณีที่เลือกไม่รับการปรับขึ้นราคาได้ด้วย โดยใช้กลไกเดียวกัน

จัดการวงจรสำหรับแพ็กเกจแบบชำระเงินล่วงหน้า

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

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

วันที่
รูปที่ 8 สถานะของวงจรและเหตุการณ์การเปลี่ยนสำหรับ การสมัครใช้บริการ

ข้อความ SubscriptionNotification ระบบจะส่งที่มีประเภท SUBSCRIPTION_PURCHASED ไปยังไคลเอ็นต์ RTDN เมื่อใดก็ตามที่ มีการสมัครใช้บริการแพ็กเกจแบบชำระเงินล่วงหน้า ทั้งนี้รวมถึงการเติมเงินทุกรายการ เรียกใช้ purchases.subscriptionsv2.get วิธีการตรวจสอบสถานะการสมัครใช้บริการแพ็กเกจแบบชำระเงินล่วงหน้าล่าสุด

จะมีการออกโทเค็นการซื้อใหม่สำหรับการซื้อแบบเติมเงิน และคุณจะได้รับ โทเค็นการซื้อก่อนหน้าในฟิลด์ linkedPurchaseToken เป็นส่วนหนึ่งของ สถานะการซื้อการสมัครใช้บริการ โทเค็นการซื้อสามารถใช้ได้จากการสมัครใช้บริการ จนกว่าจะหมดอายุ 60 วัน หลังจากวันดังกล่าว โทเค็นการซื้อจะเป็น จะไม่สามารถใช้ในการเรียก Google Play Developer API ได้อีกต่อไป

ทรัพยากรการสมัครใช้บริการสำหรับการซื้อแพ็กเกจแบบชำระเงินล่วงหน้าจะมีลักษณะคล้ายกับ ตัวอย่างต่อไปนี้

{
  "kind": "androidpublisher#subscriptionPurchaseV2",
  "startTime": "2022-04-22T18:39:58.270Z",
  "regionCode": "US",
  "subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
  "latestOrderId": "GPA.3333-4137-0319-36762",
  "acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
  "lineItems": [
    {
      "productId": "prepaid_plan01",
      "expiryTime": expiry_date,
      "prepaidPlan": {
        "allowExtendAfterTime": timestamp_after_which_topups_are_allowed
      }
    }
  ]
}

คุณจะดูการสิ้นสุดการให้สิทธิ์ได้ในช่อง expiryTime เติมเงิน การซื้อจะเพิ่มเวลาการให้สิทธิ์ด้วยการสะสมเวลา ซึ่งหมายความว่าหาก ผู้ใช้เติมเงินก่อนที่การให้สิทธิ์เดิมจะสิ้นสุดลง ระบบจะเพิ่มเวลาใหม่ เพิ่มเติมจากวันที่หมดอายุก่อนหน้านี้

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

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