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

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

การตั้งค่า Play Billing Library

เพิ่มการพึ่งพา Play Billing Library ลงในแอป Android วิธีใช้ API การเรียกเก็บเงินระบบอื่นที่คุณต้องใช้ในเวอร์ชัน 5.2 ขึ้นไป หากคุณจำเป็นต้องทำดังนี้ ย้ายข้อมูลจากเวอร์ชันก่อนหน้า โปรดทำตามวิธีการในการย้ายข้อมูล คำแนะนำก่อนที่จะลองใช้การเรียกเก็บเงินระบบอื่น

เชื่อมต่อกับ Google Play

ขั้นตอนแรกในกระบวนการผสานรวมจะเหมือนกับที่อธิบายไว้ใน คู่มือการผสานรวม Google Play Billing โดยมีการแก้ไขเล็กน้อย การเริ่มต้น BillingClient

  • คุณต้องเรียกใช้วิธีการใหม่เพื่อระบุว่าคุณต้องการเสนอให้ ตัวเลือกการเรียกเก็บเงิน: enableUserChoiceBilling
  • คุณต้องลงทะเบียน UserChoiceBillingListener สำหรับจัดการเคสต่างๆ ที่ผู้ใช้เลือกการเรียกเก็บเงินระบบอื่น

ตัวอย่างต่อไปนี้แสดงการเริ่มต้น BillingClient ด้วยรายการเหล่านี้ การแก้ไข:

Kotlin

val purchasesUpdatedListener =
   PurchasesUpdatedListener { billingResult, purchases ->
       // Handle new Google Play purchase.
   }

val userChoiceBillingListener =
   UserChoiceBillingListener { userChoiceDetails ->
       // Handle alternative billing choice.
   }

var billingClient = BillingClient.newBuilder(context)
   .setListener(purchasesUpdatedListener)
   .enablePendingPurchases()
   .enableUserChoiceBilling(userChoiceBillingListener)
   .build()

Java

private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
    @Override
    public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
        // Handle new Google Play purchase.
    }
};

private UserChoiceBillingListener userChoiceBillingListener = new UserChoiceBillingListener() {
    @Override
    public void userSelectedAlternativeBilling(
        UserChoiceDetails userChoiceDetails) {
        // Handle new Google Play purchase.
    }
};

private BillingClient billingClient = BillingClient.newBuilder(context)
    .setListener(purchasesUpdatedListener)
    .enablePendingPurchases()
    .enableUserChoiceBilling(userChoiceBillingListener)
    .build();

หลังจากเริ่มต้น BillingClient แล้ว คุณจะต้องสร้างการเชื่อมต่อเพื่อ Google Play ตามที่อธิบายไว้ในคู่มือการผสานรวม

แสดงผลิตภัณฑ์ที่พร้อมจำหน่าย

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

เปิดขั้นตอนการเรียกเก็บเงินแบบให้ผู้ใช้ตัดสินใจ

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

เมื่อนักพัฒนาแอปโทรติดต่อ launchBillingFlow() ระบบการเรียกเก็บเงินของ Google Play ดำเนินการตรวจสอบต่อไปนี้

  • ระบบจะตรวจสอบว่าประเทศใน Google Play ของผู้ใช้ ประเทศที่รองรับการเรียกเก็บเงินระบบอื่นแบบให้ผู้ใช้ตัดสินใจ (เช่น ประเทศ) Google Play จะตรวจสอบหากประเทศใน Google Play ของผู้ใช้รองรับ เปิดใช้การเรียกเก็บเงินระบบอื่นตามการกำหนดค่าของ BillingClient
    • หากเปิดใช้การเรียกเก็บเงินระบบอื่นแบบให้ผู้ใช้ตัดสินใจแล้ว จะแสดง UX แบบให้ผู้ใช้ตัดสินใจ
    • หากไม่ได้เปิดใช้การเรียกเก็บเงินระบบอื่นแบบให้ผู้ใช้ตัดสินใจ ระบบจะทำการซื้อ แสดง UX ระบบการเรียกเก็บเงินของ Google Play แบบมาตรฐาน โดยไม่มีผู้ใช้
  • หากประเทศใน Google Play ของผู้ใช้ไม่ใช่ประเทศที่รองรับ ระบบจะดำเนินการต่อไปนี้ ขั้นตอนการซื้อแสดง UX ระบบการเรียกเก็บเงินของ Google Play แบบมาตรฐาน โดยผู้ใช้

ประเทศใน Play ของผู้ใช้เป็นประเทศที่รองรับ

ประเทศใน Play ของผู้ใช้ไม่ใช่ประเทศที่รองรับ

enabledUserChoiceBilling ถูกเรียกในระหว่างการตั้งค่า BillingClient

ผู้ใช้เห็น UX แบบตัวเลือกของผู้ใช้

ผู้ใช้เห็น UX ระบบการเรียกเก็บเงินของ Google Play แบบมาตรฐาน

ไม่เรียกใช้ enabledUserChoiceBilling ระหว่างการตั้งค่า BillingClient

ผู้ใช้เห็น UX ระบบการเรียกเก็บเงินของ Google Play แบบมาตรฐาน

ผู้ใช้เห็น UX ระบบการเรียกเก็บเงินของ Google Play แบบมาตรฐาน

จัดการตัวเลือกของผู้ใช้

วิธีจัดการขั้นตอนการซื้อที่เหลือจะแตกต่างกันไป ขึ้นอยู่กับว่า ผู้ใช้เลือกระบบการเรียกเก็บเงินของ Google Play หรือระบบการเรียกเก็บเงินระบบอื่น

เมื่อผู้ใช้เลือกระบบการเรียกเก็บเงินระบบอื่น

หากผู้ใช้เลือกระบบการเรียกเก็บเงินระบบอื่น Google Play จะเรียกใช้ UserChoiceBillingListener เพื่อแจ้งแอปว่าจำเป็นต้องเปิด ขั้นตอนการซื้อในระบบการเรียกเก็บเงินระบบอื่น โดยเฉพาะอย่างยิ่ง ฟิลด์ มีการเรียกเมธอด userSelectedAlternativeBilling()

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

UserChoiceBillingListener ควรดำเนินการดังต่อไปนี้

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

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

ตัวอย่างต่อไปนี้แสดงวิธีใช้งาน UserChoiceBillingListener:

Kotlin

private val userChoiceBillingListener =
    UserChoiceBillingListener { userChoiceDetails ->
        // Get the products being purchased by the user.
        val products = userChoiceDetails.products

        // Send external transaction token to developer backend server
        // this devBackend object is for demonstration purposes,
        // developers can implement this step however best fits their
        // app to backend communication.
        devBackend.sendExternalTransactionStarted(
            userChoiceDetails.externalTransactionToken,
            user
        )

        // Launch alternative billing
        // ...
        // The developer backend handles reporting the transaction
        // to Google Play's backend once the alternative billing
        // purchase is completed.
    }

Java

private userChoiceBillingListener userChoiceBillingListener = new UserChoiceBillingListener() {
    @Override
    public void userSelectedAlternativeBilling(
           UserChoiceDetails userChoiceDetails) {
       // Get the products being purchased by the user.
       List<Product> products =
              userChoiceDetails.getProducts();

       // Send external transaction token to developer backend server
       // this devBackend object is for demonstration purposes,
       // developers can implement this step however best fits their
       // app to backend communication.
       devBackend.sendExternalTransactionStarted(
              userChoiceDetails.getExternalTransactionToken(),
              user
       );

       // Launch alternative billing
       // ...
       // The developer backend handles reporting the transaction
       // to Google Play's backend once the alternative billing
       // purchase is completed.
    }
};

เมื่อผู้ใช้เลือกระบบการเรียกเก็บเงินของ Google Play

หากผู้ใช้เลือกระบบการเรียกเก็บเงินของ Google Play ผู้ใช้จะใช้ สำหรับการซื้อผ่าน Google Play

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

จัดการกับการเปลี่ยนแปลงในการสมัครใช้บริการ

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

หัวข้อนี้จะอธิบายวิธีจัดการสถานการณ์การเปลี่ยนแปลงที่พบบ่อยบางส่วน

อัปเกรดและดาวน์เกรดขั้นตอน

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

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

การสมัครใช้บริการที่ซื้อผ่านระบบการเรียกเก็บเงินระบบอื่น

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

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

Kotlin

// The external transaction ID from the current
// alternative billing subscription.
val externalTransactionId = //... ;

val billingFlowParams = BillingFlowParams.newBuilder()
    .setProductDetailsParamsList(
        listOf(
            BillingFlowParams.ProductDetailsParams.newBuilder()
                // Fetched via queryProductDetailsAsync.
                .setProductDetails(productDetailsNewPlan)
                // offerIdToken can be found in
                // ProductDetails=>SubscriptionOfferDetails.
                .setOfferToken(offerTokenNewPlan)
                .build()
        )
    )
    .setSubscriptionUpdateParams(
        BillingFlowParams.SubscriptionUpdateParams.newBuilder()
            .setOriginalExternalTransactionId(externalTransactionId)
            .build()

val billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)

// When the user selects the alternative billing flow,
// the UserChoiceBillingListener is triggered.

Java

// The external transaction ID from the current
// alternative billing subscription.
String externalTransactionId = //... ;

BillingFlowParams billingFlowParams =
        BillingFlowParams.newBuilder()
            .setProductDetailsParamsList(
                ImmutableList.of(
                    ProductDetailsParams.newBuilder()
                        // Fetched via queryProductDetailsAsync.
                        .setProductDetails(productDetailsNewPlan)
                        // offerIdToken can be found in
                        // ProductDetails=>SubscriptionOfferDetails
                        .setOfferToken(offerTokenNewPlan)
                    .build()
                )
            )
            .setSubscriptionUpdateParams(
                SubscriptionUpdateParams.newBuilder()
                    .setOriginalExternalTransactionId(externalTransactionId)
                    .build()
            )
            .build();

BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);

// When the user selects the alternative billing flow,
// the UserChoiceBillingListener is triggered.

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

การสมัครใช้บริการที่ซื้อผ่านระบบการเรียกเก็บเงินของ Google Play

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

  1. ระบุ offerToken ของข้อเสนอที่เลือกสำหรับแพ็กเกจใหม่ ดังนี้

val offerTokenNewPlan = productDetailsNewPlan
             .getSubscriptionOfferDetails(selectedOfferIndex)
             .getOfferToken()

String offerTokenNewPlan = productDetailsNewPlan
                     .getSubscriptionOfferDetails(selectedOfferIndex)
                     .getOfferToken();
  1. ส่งข้อมูลที่ถูกต้องไปยังระบบการเรียกเก็บเงินของ Google Play เพื่อประมวลผล การซื้อใหม่ รวมถึงโทเค็นการซื้อสำหรับการสมัครใช้บริการที่มีอยู่

val billingFlowParams =
    BillingFlowParams.newBuilder().setProductDetailsParamsList(
        listOf(
            BillingFlowParams.ProductDetailsParams.newBuilder()
                .setProductDetails(productDetailsNewPlan)
                .setOfferToken(offerTokenNewPlan)
                .build()
        )
    )
    .setSubscriptionUpdateParams(
        BillingFlowParams.SubscriptionUpdateParams.newBuilder()
            .setOldPurchaseToken(oldToken)
            .setReplaceProrationMode(BillingFlowParams.ProrationMode.IMMEDIATE_AND_CHARGE_FULL_PRICE)
            .build()
        )
        .build()

BillingClient.launchBillingFlow(activity, billingFlowParams)

BillingFlowParams billingFlowParams =
        BillingFlowParams.newBuilder()
            .setProductDetailsParamsList(
                ImmutableList.of(
                    ProductDetailsParams.newBuilder()
                        // Fetched via queryProductDetailsAsync
                        .setProductDetails(productDetailsNewPlan)
                        // offerIdToken can be found in
                        // ProductDetails=>SubscriptionOfferDetails.
                        .setOfferToken(offerTokenNewPlan)
                        .build()
                )
            )
            .setSubscriptionUpdateParams(
                SubscriptionUpdateParams.newBuilder()
                    // purchaseToken can be found in
                    // Purchase#getPurchaseToken
                    .setOldPurchaseToken("old_purchase_token")
                    .setReplaceProrationMode(ProrationMode.IMMEDIATE_AND_CHARGE_FULL_PRICE)
                    .build()
            )
            .build();

BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);

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

การยกเลิกและการกู้คืนการสมัครใช้บริการ

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

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

การสมัครใช้บริการที่ซื้อผ่านระบบการเรียกเก็บเงินระบบอื่น

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

การสมัครใช้บริการที่ซื้อผ่านระบบการเรียกเก็บเงินของ Google Play

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

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

การสมัครรับข้อมูลซ้ำ

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

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

ทดสอบการเรียกเก็บเงินระบบอื่น

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

ขั้นตอนถัดไป

เมื่อเสร็จสิ้นการผสานรวมในแอป คุณก็พร้อมที่จะผสานรวม แบ็กเอนด์