Πλήρης οδηγός για την ενημέρωση και την ανάπτυξη της Βιβλιοθήκης χρεώσεων του Google Play v7

  • Η Βιβλιοθήκη χρεώσεων του Google Play v7 απαιτεί ενημέρωση εξαρτήσεων, αντικατάσταση παρωχημένων API και προσαρμογή του χειρισμού σφαλμάτων, διατηρώντας παράλληλα τη συμβατότητα με προηγούμενες ενσωματώσεις.
  • Τα RTDN με το Google Cloud Pub/Sub σάς επιτρέπουν να συγχρονίζετε το backend σχεδόν σε πραγματικό χρόνο, να επαληθεύετε τις αγορές και να μειώνετε την απάτη διαχειριζόμενοι σωστά το purchaseToken και το obfuscatedAccountId.
  • Νέες προαιρετικές λειτουργίες, όπως οι εικονικές δόσεις και οι εκκρεμείς αγορές σε προπληρωμένα προγράμματα, διευρύνουν την ευελιξία των συνδρομών, επηρεάζοντας αρκετές αγορές.
  • Οι προθεσμίες κατάργησης για τα PBL 5 και 6 καθιστούν απαραίτητο τον άμεσο σχεδιασμό της μετεγκατάστασης, ειδικά σε οικοσυστήματα όπως το .NET MAUI, όπου η επίσημη υποστήριξη εξακολουθεί να είναι περιορισμένη.

Βιβλιοθήκη χρεώσεων Google Play έκδοση 7

Αν εργάζεστε με αγορές εντός εφαρμογής σε Android, αργά ή γρήγορα θα πρέπει να αντιμετωπίσετε το Βιβλιοθήκη χρεώσεων Google Play έκδοση 7Δεν είναι απλώς μια ακόμη ενημέρωση: συνοδεύεται από αλλαγές στο API, νέες λειτουργίες συνδρομής, απαιτήσεις κονσόλας και πολύ σαφείς προθεσμίες από την Google. Η αγνόησή της δεν αποτελεί πλέον επιλογή, εάν θέλετε να συνεχίσετε να δημοσιεύετε ή να ενημερώνετε την εφαρμογή σας στο Google Play χωρίς εκπλήξεις.

Σε όλο αυτό το άρθρο θα δείτε πώς Ενημέρωση και εφαρμογή της Βιβλιοθήκης Χρέωσης Google Play έκδοσης 7 Βήμα προς βήμα: από τις διαφορές μεταξύ των PBL 5 και 6, μέχρι τον τρόπο ενσωμάτωσης συνδρομών, εφάπαξ αγορών, RTDN, δοκιμών με το Play Billing Lab και τον τρόπο επιβίωσης σε οικοσυστήματα όπως το .NET MAUI, όπου η επίσημη υποστήριξη υστερεί. Η ιδέα είναι ότι, όταν ολοκληρώσετε την ανάγνωση, μπορείτε να προετοιμάσετε τη μετεγκατάστασή σας με σιγουριά και χωρίς να ξοδέψετε ούτε δεκάρα.

Επισκόπηση της Βιβλιοθήκης Χρέωσης Google Play έκδοση 7

Η Βιβλιοθήκη Χρέωσης Google Play 7 εισάγει σημαντικές βελτιώσεις στον τρόπο διαχείρισης των λογαριασμών Πληρωμές, συνδρομές και ειδικά προγράμματαΩστόσο, έχει σχεδιαστεί για να κάνει τη μετεγκατάσταση σχετικά ομαλή. Τα καλά νέα είναι ότι πολλά από τα νέα API είναι προαιρετικά: μπορείτε να ενημερώσετε την εξάρτηση, να τροποποιήσετε μερικές αναφορές και η βασική σας ενσωμάτωση θα εξακολουθεί να λειτουργεί.

Αυτή η έκδοση εστιάζει σε τρεις βασικούς τομείς: νέες επιλογές συνδρομής (όπως εικονικές ποσοστώσεις), καλύτερη υποστήριξη για εκκρεμείς αγορές σε προπληρωμένα προγράμματακαι αλλαγές στο API που διορθώνουν ό,τι ήταν ήδη παρωχημένο σε προηγούμενες εκδόσεις (PBL 5 και 6). Επιπλέον, η Google προσαρμόζει ορισμένα στοιχεία χειρισμού σφαλμάτων και τον τρόπο χειρισμού των εκκρεμών συναλλαγών για την αποφυγή ασυνεπειών.

Για να ξεκινήσετε, στην ενότητα της εφαρμογής σας πρέπει να ενημερώσετε την εξάρτηση στο αρχείο σας build.gradle:

dependencies {
    def billingVersion = "7.0.0"
    implementation "com.android.billingclient:billing:$billingVersion"
}

Μόλις γίνει αυτό, ήρθε η ώρα να ελέγξετε τον κώδικα που χρησιμοποιεί παλαιότερα API. Πολλές κλήσεις σχετίζονται με αναλογική κατανομή συνδρομής και εναλλακτική χρέωση Έχουν μετονομαστεί ή καταργηθεί, επομένως είναι καλή ιδέα να ρίξετε μια καλή ματιά σε όλες τις αναφορές στο BillingClient και το BillingFlowParams πριν από τη μεταγλώττιση και την ανάρτηση οποιουδήποτε στοιχείου στο Play Console.

Στρατηγικές δημιουργίας εσόδων με εφάπαξ αγορές και συνδρομές

Όταν πουλάτε ψηφιακά προϊόντα μέσα στην εφαρμογή σας, η απλή επικόλληση του παραθύρου διαλόγου αγοράς και η ολοκλήρωση της διαδικασίας δεν είναι αρκετή: ο σχεδιασμός ενός απρόσκοπτη εμπειρία χρήστη σε όλο τον κύκλο αγοράςΑυτό ισχύει τόσο για μεμονωμένα προϊόντα (αναλώσιμα ή μη αναλώσιμα) όσο και για συνδρομές. Όσο πιο φυσική και απρόσκοπτη είναι η διαδικασία, τόσο υψηλότερες είναι οι μετατροπές και τόσο χαμηλότερο είναι το ποσοστό ακυρώσεων.

Μια τυπική ροή αγοράς με το Play Billing, είτε πρόκειται για συνδρομή είτε για ένα μεμονωμένο στοιχείο, συνήθως ακολουθεί αυτά τα σαφώς καθορισμένα στάδια, τα οποία θα πρέπει επίσης να γνωρίζει το backend σας:

  • Ο χρήστης εξετάζει τα διαθέσιμα προϊόντα και επιλέγει ένα.
  • Η εφαρμογή ξεκινά τη διαδικασία χρέωσης του Google Play για να ολοκληρώσει την πληρωμή.
  • Η αγορά ολοκληρώνεται και η εφαρμογή σας λαμβάνει το αποτέλεσμα.
  • Ο διακομιστής σας επικυρώνει την αγορά σε σχέση με το API προγραμματιστών Google Play.
  • Το αντίστοιχο περιεχόμενο ή δικαίωμα παραχωρείται στον χρήστη στο σύστημά σας.
  • Η Google ενημερώνεται ότι η αγορά έχει διεκπεραιωθεί (καταναλωθεί ή επιβεβαιωθεί).

Στην περίπτωση των αναλώσιμων προϊόντων, είναι ζωτικής σημασίας να καταναλώστε το διακριτικό την κατάλληλη στιγμή για να επιτρέψετε απρόσκοπτες επαναγορές και βοήθεια Αποκλεισμός τυχαίων αγορών στο Google PlayΣτις συνδρομές, πρέπει να ελέγχετε τις ανανεώσεις, τις περιόδους χάριτος, τις αναστολές και τις ακυρώσεις, ώστε ο χρήστης να λαμβάνει ακριβώς αυτό που έχει πληρώσει και ούτε μια ημέρα λιγότερο.

Η ενσωμάτωση στην εφαρμογή είναι μόνο η μισή δουλειά: ο διακομιστής σας πρέπει να διατηρεί ένα αξιόπιστο αρχείο δικαιωμάτων και καταστάσεων αγοράςΑυτό είναι ιδιαίτερα σημαντικό εάν προσφέρετε πρόσβαση σε πολλαπλές πλατφόρμες ή χρειάζεστε λεπτομερή στατιστικά στοιχεία σχετικά με τα έσοδα, τη διατήρηση και την απώλεια πελατών. Εδώ έρχονται στο προσκήνιο οι ειδοποιήσεις προγραμματιστών σε πραγματικό χρόνο (RTDN), οι οποίες λειτουργούν ως το «μαύρο κουτί» του κύκλου ζωής αγοράς.

Με το RTDN μπορείτε να αντιδράτε σε σχεδόν πραγματικό χρόνο σε κρίσιμα συμβάντα: μια νέα αγορά, μια αποτυχία ανανέωσης, μια συνδρομή που εισέρχεται σε περίοδο χάριτος ή μια ακυρωμένη αγορά. Αυτό σας επιτρέπει να αναπτύξετε στρατηγικές για ανάκτηση συνδρομητών και πρόληψη απάτης, όπως αυτόματη αποστολή email σε περίπτωση αποτυχίας μιας πληρωμής ή προσαρμογές δικαιωμάτων εάν ο πελάτης δεν λάβει το μήνυμα λόγω προβλημάτων δικτύου.

Ειδοποιήσεις προγραμματιστών σε πραγματικό χρόνο (RTDN) και Google Cloud Pub/Sub

Τα RTDN χρησιμοποιούν Google Cloud Pub/Sub ως σύστημα ανταλλαγής μηνυμάτων σε πραγματικό χρόνο μεταξύ του Google Play και του backend σας. Το Google Play δημοσιεύει συμβάντα σχετικά με ένα θέμα Pub/Sub και εσείς εγγράφεστε σε αυτό το θέμα για να λαμβάνετε μηνύματα κάθε φορά που αλλάζει η κατάσταση μιας αγοράς ή συνδρομής.

Η βασική ροή είναι απλή: Το Google Play στέλνει ένα μήνυμα με κωδικοποίηση base64 στο θέμα Pub/Sub, ο συνδρομητής σας το εξάγει, το αποκωδικοποιεί και επεξεργάζεται την ειδοποίηση. Μέσα στο πεδίο data Μέσα στο μήνυμα θα βρείτε ένα αντικείμενο JSON Ειδοποίηση Προγραμματιστήτο οποίο περιλαμβάνει πληροφορίες όπως η έκδοση του μηνύματος, το όνομα του πακέτου, η ώρα του συμβάντος και συγκεκριμένα δεδομένα για εφάπαξ αγορές, συνδρομές, ακυρωμένες αγορές ή δοκιμαστικές εκδόσεις.

{
  "version": string,
  "packageName": string,
  "eventTimeMillis": long,
  "oneTimeProductNotification": OneTimeProductNotification,
  "subscriptionNotification": SubscriptionNotification,
  "voidedPurchaseNotification": VoidedPurchaseNotification,
  "testNotification": TestNotification
}

Χάρη σε αυτά τα μηνύματα μπορείτε Διατηρήστε το backend σας συγχρονισμένο ακόμα και αν η συσκευή του χρήστη παρουσιάσει βλάβηΦανταστείτε ότι ένας χρήστης πραγματοποιεί με επιτυχία μια αγορά, το Google Play την επιβεβαιώνει, αλλά η κινητή συσκευή χάνει τη σύνδεση πριν η εφαρμογή σας λάβει την κλήση από τη Βιβλιοθήκη Χρέωσης. Χωρίς το RTDN, μπορεί να μην το μάθετε ποτέ. Με το Pub/Sub, ο διακομιστής σας λαμβάνει μια ξεχωριστή ειδοποίηση και μπορεί να παραχωρήσει το δικαίωμα ανεξάρτητα από τον πελάτη.

Ρύθμιση παραμέτρων Cloud Pub/Sub για RTDN

Πριν ενεργοποιήσετε το RTDN στην κονσόλα Google Play, πρέπει να προετοιμάσετε ένα έργο στο Πλατφόρμα Google Cloud (GCP) και ρυθμίστε εκεί το Pub/Sub. Η διαδικασία είναι σχετικά απλή, αλλά είναι καλύτερο να την ακολουθήσετε προσεκτικά για να αποφύγετε τυχόν εκπλήξεις με δικαιώματα ή ονόματα πόρων.

Δημιουργία του θέματος

Πρώτα πρέπει να δημιουργήσετε ένα Θέμα δημοσίευσης/υποθέματος το οποίο θα λειτουργεί ως το σημείο δημοσίευσης στο Google Play. Από την κονσόλα Google Cloud, επιλέξτε το έργο σας, μεταβείτε στην ενότητα Δημοσίευση/Υποβολή και δημιουργήστε ένα νέο θέμα ακολουθώντας τον επίσημο οδηγό "δημιουργία θέματος". Το αποτέλεσμα θα έχει ένα όνομα στην ακόλουθη μορφή:

projects/{project_id}/topics/{topic_name}

Αυτό το πλήρες όνομα είναι αυτό που θα πρέπει να επικολλήσετε στο Play Console όταν ενεργοποιείτε τις ειδοποιήσεις.

Δημιουργία συνδρομής

Για να διαβάσετε τα μηνύματα σε αυτό το νήμα, χρειάζεστε ένα Συνδρομή Pub/SubΜπορείτε να το διαμορφώσετε ως ώθηση ή ως τραβήξτεΣτο εργαστήριο αναφοράς codelab, εργαζόμαστε με την υπηρεσία pull subscription, όπου το backend σας ξεκινά τα αιτήματα για την ανάκτηση μηνυμάτων.

Θα πρέπει να ελέγξετε τις επιλογές στον οδηγό συνδρομητών του Cloud Pub/Sub για να αποφασίσετε εάν η επιλογή push ή pull είναι καταλληλότερη για την αρχιτεκτονική σας. Μόλις αποφασίσετε, ακολουθήστε την τεκμηρίωση "προσθήκη συνδρομής" και συνδέστε την με το θέμα που δημιουργήσατε νωρίτερα. Από εκείνο το σημείο και μετά, όλα τα μηνύματα που δημοσιεύει το Google Play στο θέμα θα είναι προσβάσιμα στον συνδρομητή σας.

Δικαιώματα για δημοσίευση στο θέμα σας από το Google Play

Το Pub/Sub δεν θα επιτρέψει στο Google Play να δημοσιεύσει τίποτα, εκτός εάν του δώσετε ρητή άδεια. λογαριασμός υπηρεσίαςΣτην κονσόλα Google Cloud, πρέπει να μεταβείτε στις ρυθμίσεις δικαιωμάτων θέματος και να προσθέσετε την κύρια:

[email protected]

Παραχωρήστε σε αυτόν τον λογαριασμό τον ρόλο του Εκδότης/Υποεκδότης (Εκδότης). Αποθηκεύστε τις αλλαγές και από εκείνη τη στιγμή και μετά, το Google Play θα μπορεί να στέλνει RTDN στο θέμα σας χωρίς προβλήματα εξουσιοδότησης.

Ενεργοποίηση RTDN στο Google Play Console

Βιβλιοθήκη χρεώσεων Google Play έκδοση 7

Μόλις διαμορφωθεί το Pub/Sub, πρέπει να υποδείξετε στο Play Console πού θα στέλνει ειδοποιήσεις. Εντός της εφαρμογής σας στο Google Play Console, μεταβείτε στη διεύθυνση Δημιουργία εσόδων με το Play > Ρυθμίσεις δημιουργίας εσόδων και εντοπίστε την ενότητα ειδοποιήσεων προγραμματιστών σε πραγματικό χρόνο.

Εκεί θα χρειαστείτε:

  • Επιλέξτε το πλαίσιο για να ενεργοποιήσετε τις ειδοποιήσεις σε πραγματικό χρόνο.
  • Εισαγάγετε το πλήρες όνομα του θέματος Pub/Sub στο αντίστοιχο πεδίο, τηρώντας τη μορφή projects/{project_id}/topics/{topic_name}.
  • Στείλτε ένα δοκιμαστικό μήνυμα χρησιμοποιώντας το κουμπί δοκιμής.

Το μήνυμα δοκιμής είναι απαραίτητο για την επαλήθευση ότι το Η ενσωμάτωση έχει υλοποιηθεί σωστά.Αν έχετε μια συνδρομή pull, μπορείτε να μεταβείτε στην κονσόλα Cloud, να επιλέξετε τη συνδρομή, να κάνετε κλικ στην επιλογή "Προβολή μηνυμάτων" και να εξαγάγετε το δοκιμαστικό μήνυμα. Μην ξεχάσετε να το κάνετε αυτό. ack οποιουδήποτε μηνύματος διαβάζετε για να αποφύγετε επαναλαμβανόμενες λήψεις.

Για συνδρομές push, επαληθεύστε ότι το τελικό σας σημείο λαμβάνει το μήνυμα και απαντά με έναν έγκυρο κωδικό HTTP. Εάν κάτι πάει στραβά, η κονσόλα θα εμφανίσει ένα σφάλμα κατά τη δημοσίευση της δοκιμής, το οποίο συνήθως σχετίζεται με το όνομα του θέματος ή τα δικαιώματα λογαριασμού υπηρεσίας.

Εγγραφείτε σε δοκιμαστικές εκδόσεις εφαρμογών στο Google Play Store
σχετικό άρθρο:
Πλήρης οδηγός για την εγγραφή σε δοκιμαστικές εκδόσεις εφαρμογών στο Google Play Store και την πρόσβαση σε εκδόσεις beta, πρώιμη πρόσβαση και δωρεάν δοκιμές.

Τέλος, μπορείτε να διαμορφώσετε τους τύπους ειδοποιήσεων που θέλετε να λαμβάνετε: μόνο συνδρομές και ακυρωμένες αγορές ή όλες οι ειδοποιήσεις, συμπεριλαμβανομένων των εφάπαξ αγορών (συμβάντα όπως ONE_TIME_PRODUCT_PURCHASED και ONE_TIME_PRODUCT_CANCELED). Εάν χρησιμοποιείτε επίσης μοναδικά προϊόντα, είναι συνήθης πρακτική να ενεργοποιήσετε ολόκληρο το σύνολο για να διατηρήσετε την ορατότητα σε όλα.

Δημιουργήστε έναν συνδρομητή Pub/Sub στο backend σας

Με το θέμα και τη συνδρομή έτοιμα, ήρθε η ώρα να εφαρμόσουμε ένα συνδρομητής που διαβάζει και επεξεργάζεται RTDNΗ Google παρέχει παραδείγματα σε διάφορες γλώσσες. Μια τυπική περίπτωση στην Java χρησιμοποιεί τις βιβλιοθήκες-πελάτες Cloud Pub/Sub για να ξεκινήσει ένα Subscriber που ακούει μηνύματα και καλεί MessageReceiver.

Το γενικό μοτίβο είναι πάντα το ίδιο: ανακτάς το μήνυμα, αποκωδικοποιείς το πεδίο data Μετατρέπετε το base64 σε κείμενο, αναλύετε το JSON και εξάγετε τα σχετικά πεδία (όπως packageName, oneTimeProductNotification o subscriptionNotification) και αποφασίστε τι θα κάνετε στο σύστημά σας. Μετά την επιτυχή επεξεργασία της ειδοποίησης, πρέπει Επιβεβαιώστε το μήνυμα με ένα ack ώστε να μην το στείλει ξανά το Pub/Sub.

Το παράδειγμα κώδικα δείχνει πώς ο δέκτης εκτυπώνει την έκδοση και το όνομα του πακέτου, αλλά σε μια πραγματική υλοποίηση θα πηγαίνατε παραπέρα: Θα επικυρώνατε την αγορά, παραχωρώντας το δικαίωμα στον σωστό χρήστηΘα ενημερώσετε τη βάση δεδομένων σας και, εάν είναι απαραίτητο, θα καλέσετε το API του Play Developer για να καταναλώσετε ή να αναγνωρίσετε την αγορά.

Σύνδεσμος ειδοποιήσεων προς τον χρήστη: χρησιμοποιώντας obfuscatedAccountId

Ένα συνηθισμένο πρόβλημα κατά τη διαχείριση αγορών από τον διακομιστή είναι η γνώση του χρήστη σε ποιον ανήκει μια συγκεκριμένη ειδοποίηση RTDN. Για αυτό, το Billing Client API σάς επιτρέπει να επισυνάψετε ένα κρυμμένο αναγνωριστικό λογαριασμού όταν ξεκινάτε τη ροή αγοράς: obfuscatedAccountId.

Η ιδέα είναι ότι χρησιμοποιείτε ένα σταθερό αναγνωριστικό από το σύστημά σας (για παράδειγμα, το εσωτερικό αναγνωριστικό του χρήστη) αλλά κρυφό για λόγους απορρήτου και ασφάλειαςΑυτή η τιμή σχετίζεται με την αγορά και στη συνέχεια εμφανίζεται στις πληροφορίες που επιστρέφονται από το Google Play Developer API, έτσι ώστε όταν λάβετε το RTDN και επαληθεύσετε το διακριτικό, να γνωρίζετε με βεβαιότητα σε ποιον λογαριασμό στη βάση δεδομένων σας θα πρέπει να παραχωρήσετε το δικαίωμα.

Από την πλευρά του πελάτη, κατά την προετοιμασία του BillingFlowParamsΑπλά πρέπει να φτιάξεις τη λίστα με ProductDetailsParams και καλέστε setObfuscatedAccountId(obfuscatedAccountId) πριν από την εκκίνηση της ροής. Αυτό δεν αλλάζει την ορατή εμπειρία χρήστη, αλλά απλοποιεί σημαντικά τη διαδικασία. λογική κατανομής αγορών στο backend και βοηθά την Google να εντοπίζει απάτες.

Επαλήθευση αγορών χρησιμοποιώντας το API προγραμματιστών Google Play

Πριν από την παραχώρηση οποιωνδήποτε δικαιωμάτων στον διακομιστή σας, είναι υποχρεωτικό να επαληθεύσετε ότι η αγορά είναι νόμιμη καλώντας το API προγραμματιστών Google PlayΔεν αρκεί να βασίζεστε σε αυτά που λέει ο πελάτης ή ακόμα και το RTDN: πρέπει να επικυρώσετε τα purchaseToken απευθείας στα επίσημα τελικά σημεία και, εάν είναι απαραίτητο, διαχείριση επιστροφών χρημάτων.

Στην περίπτωση μοναδικών προϊόντων, θα χρησιμοποιήσετε το τελικό σημείο purchases.products:getΓια τις συνδρομές, η διαδρομή οδηγεί μέσα από purchases.subscriptionsv2:getΗ συνιστώμενη ροή είναι:

  • εξάγετε το purchaseToken από το μήνυμα Δημοσίευση/Υποβολή.
  • Ελέγξτε τη βάση δεδομένων σας για να δείτε αν την έχετε ήδη επεξεργαστεί. Κάθε διακριτικό είναι παγκοσμίως μοναδικόΕπομένως, είναι τέλειο ως πρωτεύον κλειδί για την αποφυγή διπλότυπων.
  • Εάν είναι καινούργιο, καλέστε το API προγραμματιστή Google Play με το πακέτο, το SKU και το purchaseToken.
  • Επαληθεύστε ότι η απάντηση υποδεικνύει μια κατάσταση αγοράς ΑΓΟΡΑ (δεν ΕΚΚΡΕΜΕΙ ή δεν έχει ακυρωθεί).
  • Εάν όλα ταιριάζουν, καταχωρίστε το διακριτικό και παραχωρήστε το αντίστοιχο δικαίωμα στον συσχετισμένο χρήστη.

Για να επικοινωνήσετε με το Play Developer API από την Java, μπορείτε να χρησιμοποιήσετε AndroidPublisher, αρχικοποιημένο με διαπιστευτήρια λογαριασμού υπηρεσίας σε μορφή JSON. Ρυθμίζετε το εύρος AndroidPublisherScopes.ANDROIDPUBLISHERΔημιουργείτε τον πελάτη και καλείτε τη μέθοδο purchases().products().get(...)Εάν η κλήση αποτύχει λόγω προσωρινού προβλήματος δικτύου ή υπηρεσίας, συνιστάται υλοποίηση επαναλήψεων με εκθετική υποχώρηση για να μην χάσετε την εκδήλωση.

Επιβεβαίωση ή ολοκλήρωση της αγοράς από τον διακομιστή

Μόλις επαληθεύσετε την αγορά και παραχωρήσετε την εξουσιοδότηση στο σύστημά σας, το επόμενο βήμα είναι να ειδοποιήσετε την Google ότι η συναλλαγή έχει διεκπεραιωθεί με επιτυχία. Για προϊόντα μεμονωμένων προϊόντων, έχετε δύο επιλογές: καταναλώστε την αγορά ή απλά αναγνωρίστε την.

Τα αναλώσιμα προϊόντα (π.χ. εικονικό νόμισμα, ζωές κ.λπ.) πρέπει να περνούν από το τελικό σημείο purchases.products:consumeΑυτό σηματοδοτεί το διακριτικό ως χρησιμοποιημένο και επιτρέπει στον χρήστη να αγοράσει ξανά το ίδιο αντικείμενο χωρίς διένεξη. Για μη αναλώσιμα προϊόντα (όπως το ξεκλείδωμα της premium έκδοσης εφ' όρου ζωής), πρέπει να καλέσετε purchases.products:acknowledge, το οποίο ενημερώνει την Google ότι ο χρήστης έχει ήδη το σχετικό δικαίωμα.

Χρησιμοποιούνται συνδρομές purchases.subscriptions:acknowledgeυποδεικνύοντας ότι η συνδρομή έχει υποβληθεί σε επεξεργασία και έχει εκχωρηθεί με επιτυχία στον χρήστη. Εάν δεν επιβεβαιώσετε μια αγορά εντός εύλογου χρονικού πλαισίου, η Google ενδέχεται να υποθέσει ότι υπάρχει πρόβλημα και να αντιστρέψει τη συναλλαγή, επομένως είναι σημαντικό να η επιστροφή γίνεται αμέσως μετά την παραχώρηση του δικαιώματος.

Στον βοηθό του AndroidPublisher μπορείτε να προσθέσετε μεθόδους όπως executeProductPurchasesConsume y executeProductPurchasesAcknowledge που καλούν τα αντίστοιχα τελικά σημεία. Και πάλι, συνιστάται η εφαρμογή επαναλήψεων σε περίπτωση περιστασιακών αποτυχιών, για να διασφαλιστεί ότι κανένα διακριτικό δεν παραμένει σε επικίνδυνη ενδιάμεση κατάσταση.

Προηγμένες δοκιμές με το Play Billing Lab

Μια πτυχή που πολλοί προγραμματιστές υποτιμούν είναι η φάση των δοκιμών. Για να ξεκινήσετε με κάποιο βαθμό σιγουριάς, πρέπει να είστε σε θέση να προσομοιώσετε σφάλματα δικτύου, μη τυπικές απαντήσεις και ακραίες περιπτώσειςΕδώ ακριβώς έρχεται το Play Billing Lab, μια δωρεάν εφαρμογή στο Google Play που έχει σχεδιαστεί ειδικά για τη δοκιμή των ενσωματώσεων της Βιβλιοθήκης Χρέωσης Play.

Το Play Billing Lab περιλαμβάνει ένα προσομοιωτής απαντήσεων που επιτρέπει την επιβολή διαφορετικών BillingResponseCode στις κλήσεις της εφαρμογής σας στη Βιβλιοθήκη Χρέωσης. Με αυτόν τον τρόπο, μπορείτε να αναδημιουργήσετε σενάρια όπου, για παράδειγμα, ο πελάτης δεν μπορεί να ολοκληρώσει την αγορά λόγω προβλήματος δικτύου, αλλά το backend σας επεξεργάζεται σωστά το RTDN και τελικά παραχωρεί το δικαίωμα χωρίς παρέμβαση του χρήστη.

Για να επικοινωνήσει η εφαρμογή σας με τον προσομοιωτή, πρέπει να ενεργοποιήσετε τη δοκιμή "παρακάμψεων χρέωσης" χρησιμοποιώντας μεταδεδομένα στο AndroidManifest.xml:

<manifest ... >
  <application ... >
    ...
    <meta-data
        android:name="com.google.android.play.largest_release_audience.NONPRODUCTION"
        android:value="" />
    <meta-data
        android:name="com.google.android.play.billingclient.enableBillingOverridesTesting"
        android:value="true" />
  </application>
</manifest>

Η ετικέτα enableBillingOverridesTesting Ενεργοποιήστε τις προσομοιωμένες δοκιμές απόκρισης στη Βιβλιοθήκη Χρέωσης. Η ετικέτα NONPRODUCTION είναι ένα είδος υπενθύμισης ότι αυτή η έκδοση δεν πρέπει να τεθεί σε παραγωγή με ενεργές τις παρακάμψεις. Κατά την προετοιμασία της τελικής έκδοσης για τους χρήστες, βεβαιωθείτε ότι Καταργήστε αυτά τα μεταδεδομένα ή χρησιμοποιήστε ξεχωριστό μανιφέστο.

Μόλις ολοκληρωθεί η διαμόρφωση, από την εφαρμογή Play Billing Lab, συνδεθείτε με έναν λογαριασμό δοκιμαστή αδειών χρήσης, ενεργοποιήστε την επιλογή "Simulate Play Billing Library response" και επιλέξτε τους κωδικούς σφάλματος που θέλετε να επιστρέψετε για κάθε API (για παράδειγμα, ένα συγκεκριμένο σφάλμα στο consumeAsyncΣτη συνέχεια, απλώς ανοίγετε την εφαρμογή σας και εκτελείτε τη ροή που θέλετε να δοκιμάσετε: ο προσομοιωτής θα επιστρέψει τις διαμορφωμένες απαντήσεις και μπορείτε να επαληθεύσετε ότι η λογική επανάληψης, ο χειρισμός σφαλμάτων και το RTDN συμπεριφέρονται όπως αναμένεται.

Βασικές αλλαγές API κατά τη μετεγκατάσταση στη Βιβλιοθήκη χρέωσης Play 7

Πέρα από το RTDN και τις δοκιμές, η μετάβαση στο PBL 7 περιλαμβάνει την αντιμετώπιση ορισμένων συγκεκριμένων σημείων API. Για όσους προέρχονται από το PBL 5 ή 6, αξίζει να ελέγξετε τις πιο σχετικές αλλαγές για να διασφαλίσετε ότι το έργο μεταγλωττίζεται ομαλά και η επιχειρηματική λογική παραμένει συνεπής.

Πρώτον, τα API που σχετίζονται με Λειτουργία αναλογίας Οι επιλογές αλλαγής συνδρομής έχουν καταργηθεί. Τώρα, χρησιμοποιούνται τα εξής: Λειτουργία αντικατάστασης για τη διαχείριση αλλαγών προγράμματος (αναβαθμίσεις, υποβαθμίσεις κ.λπ.). Εάν εξακολουθείτε να χρησιμοποιείτε μεθόδους όπως setReplaceProrationMode o setReplaceSkusProrationModeΘα πρέπει να τα μετεγκαταστήσετε στις νέες παραλλαγές του setSubscriptionReplacementMode και προσαρμόστε τη λογική σύμφωνα με την ενημερωμένη τεκμηρίωση.

Το API έχει επίσης αφαιρεθεί launchPriceConfirmationFlowη οποία είχε ήδη επισημανθεί ως παρωχημένη. Για να χειριστείτε τις αλλαγές στις τιμές των συνδρομών, θα πρέπει να ανατρέξετε στις νέες ροές εργασίας και τις συστάσεις στον οδηγό αλλαγής τιμολόγησης, ο οποίος περιγράφει λεπτομερώς τον τρόπο σωστής ενημέρωσης του χρήστη και τον τρόπο διαχείρισης της συγκατάθεσης.

Ένα άλλο σημαντικό σημείο είναι η Εναλλακτικά API χρέωσηςΟι μέθοδοι BillingClient.Builder.enableAlternativeBilling, AlternativeBillingListener y AlternativeChoiceDetails έχουν εξαφανιστεί υπέρ μιας πιο ευθυγραμμισμένης ονοματολογίας: τώρα πρέπει να χρησιμοποιήσετε BillingClient.Builder.enableUserChoiceBilling() δίπλα UserChoiceBillingListener y UserChoiceDetailsΣύμφωνα με την ίδια την Google, πρόκειται ουσιαστικά για αλλαγή ονόματος χωρίς αλλαγές στη συμπεριφορά, σε ένα πλαίσιο που χαρακτηρίζεται από συμφωνίες όπως Η Google και η Epic Games συμφωνούν να ανοίξουν το Android.

Τέλος, εισάγεται ένας νέος κωδικός σφάλματος. ΣΦΑΛΜΑ_ΔΙΚΤΥΟΥ en BillingResultκαι οι έννοιες και οι προϋποθέσεις του SERVICE_TIMEOUT και SERVICE_UNAVAILABLEΕάν έχετε προσαρμοσμένη λογική χειρισμού σφαλμάτων (για παράδειγμα, να αποφασίζετε πότε θα εμφανίζεται ένα μήνυμα στον χρήστη, πότε θα γίνεται σιωπηλή επανάληψη κ.λπ.), συνιστάται να την ελέγξετε για να λάβετε υπόψη αυτές τις νέες λεπτομέρειες.

Εκκρεμείς συναλλαγές και απουσία αναγνωριστικού παραγγελίας μέχρι την ΑΓΟΡΑ

Μια ανεπαίσθητη αλλαγή στο PBL 7 είναι ότι η βιβλιοθήκη δεν δημιουργεί πλέον ένα Αναγνωριστικό παραγγελίας για εκκρεμείς αγορές. Εν εστω κασος, ελ orderId Θα είναι διαθέσιμο μόνο όταν η αγορά φτάσει στην κατάσταση ΑΓΟΡΑΣΜΕΝΗ. Αυτό επηρεάζει ιδιαίτερα τις ροές εργασίας όπου χρησιμοποιήσατε το αναγνωριστικό παραγγελίας ως κύρια αναφορά από την αρχή.

Η σύσταση της Google είναι να βασίζεστε στο purchaseToken για τα αρχεία και τις συμφωνίες σαςτουλάχιστον όσο εκκρεμεί η συναλλαγή. Εάν βρείτε μια αγορά που έχει εξαφανιστεί από το Play, ελέγξτε Τι να κάνετε εάν η αγορά εξαφανιστεί.

Αν δεν έχετε ασχοληθεί ακόμη με εκκρεμή υπόλοιπα, ανατρέξτε στον οδηγό ενσωμάτωσης της Βιβλιοθήκης χρεώσεων και στην τεκμηρίωση που βρίσκεται στη διεύθυνση διαχείριση κύκλου ζωής προμηθειώνΕκεί θα βρείτε τις διαφορετικές καταστάσεις, πώς να αντιδράσετε σε κάθε μία και πώς τα RTDN εντάσσονται σε αυτό το παζλ.

Νέες προαιρετικές δυνατότητες στο PBL 7: εικονικές δόσεις και προπληρωμές

Ανάμεσα στα «ωραία» νέα χαρακτηριστικά του PBL 7 είναι το εικονικές συνδρομές με χρέωση (εικονικές συνδρομές με δόσεις) και εκτεταμένη υποστήριξη για εκκρεμείς αγορές για προπληρωμένες συνδρομές. Αυτές οι λειτουργίες δεν είναι υποχρεωτικές, αλλά μπορούν να σας δώσουν μεγαλύτερη ευελιξία κατά την προσαρμογή του επιχειρηματικού σας μοντέλου σε διαφορετικές αγορές.

Οι εικονικές δόσεις επιτρέπουν σε έναν χρήστη να πληρώσει για μια μακροπρόθεσμη συνδρομή σε μικρές περιοδικές πληρωμέςΑντί για μία μόνο μεγάλη πληρωμή, η Google εξηγεί ότι για σκοπούς χρέωσης προγραμματιστών, συνεχίζετε να λαμβάνετε μηνιαίες πληρωμές στο πλαίσιο ενός ετήσιου προγράμματος με μηνιαίες δόσεις. Εάν ένας χρήστης χάσει μια πληρωμή, ούτε εσείς ούτε η Google θα πρέπει να επιχειρήσετε να ανακτήσετε προηγούμενες δόσεις. Αυτό καθιστά την πρακτική χρήση του αρκετά παρόμοια με μια τυπική μηνιαία συνδρομή, τουλάχιστον αρχικά.

Προς το παρόν, αυτές οι χρεώσεις συνδρομής είναι διαθέσιμες μόνο σε Βραζιλία, Γαλλία, Ιταλία και ΙσπανίαΗ Google συνιστά να παρακολουθείτε το Play Console για νέες υποστηριζόμενες χώρες. Η διαμόρφωση γίνεται μέσω ProductDetails.InstallmentPlanDetails και ακολουθώντας τον συγκεκριμένο οδηγό για να τα ενσωματώσετε στην εφαρμογή σας.

Παράλληλα, η υποστήριξη επεκτείνεται εκκρεμείς αγορές για προπληρωμένες συνδρομέςΤώρα μπορείτε να προσφέρετε μοντέλα όπου ο χρήστης ξεκινά την αγορά στην εφαρμογή και ολοκληρώνει την πληρωμή αργότερα με άλλα μέσα, και η Βιβλιοθήκη Χρέωσης γνωρίζει πώς να χειριστεί σωστά αυτήν τη ροή. Η ενεργοποίηση γίνεται καλώντας enablePendingPurchases() κατά την αρχικοποίηση του BillingClient και, ειδικά για προπληρωμένα προγράμματα, χρησιμοποιώντας PendingPurchasesParams.Builder.enablePrepaidPlans().

Περίοδοι απόσβεσης για τη Βιβλιοθήκη χρέωσης Play 5 και 6

Με το PBL 7 να βρίσκεται σε εξέλιξη, η Google έχει ορίσει σαφείς ημερομηνίες για κατάργηση της υποστήριξης για τις εκδόσεις 5 και 6Αν βρίσκεστε ακόμα σε κάποιο από αυτά, πρέπει να σημειώσετε το ημερολόγιο με κόκκινο χρώμα:

  • Η Βιβλιοθήκη Χρέωσης Google Play 5 θα καταργηθεί επίσημα στις 31 Αυγούστου 2024, για νέες εφαρμογές και ενημερώσεις. Είναι δυνατό να ζητήσετε παράταση έως την 1η Νοεμβρίου 2024, αλλά αυτό δεν είναι κάτι στο οποίο πρέπει να βασίζεστε μακροπρόθεσμα.
  • Η Βιβλιοθήκη χρέωσης Google Play 6 μπορεί να χρησιμοποιηθεί για τη δημοσίευση νέων εφαρμογών έως την 1η Αυγούστου 2025 και για την ενημέρωση υπαρχουσών εφαρμογών έως την 1η Νοεμβρίου 2025.

Μετά από αυτήν την ημερομηνία, εάν δεν έχετε κάνει μετεγκατάσταση τουλάχιστον στην έκδοση 6 ή, ιδανικά, στην έκδοση 7, θα χρειαστεί να κάνετε ενημέρωση στην πιο πρόσφατη έκδοση. έκδοση 7Θα έχετε μπλοκαρισμένες ενημερώσεις στο Play Console. Παρόλο που η εφαρμογή σας θα συνεχίσει να λειτουργεί στις συσκευές των χρηστών, θα έχετε "παγώσει", δεν θα μπορείτε να διορθώσετε σφάλματα ή να προσθέσετε νέες λειτουργίες που εξαρτώνται από τη δημοσίευση στο κατάστημα.

Η περίπτωση του .NET MAUI και οι τρέχοντες περιορισμοί

Αν εργάζεστε με .NET MAUI και συνδρομές σε Android, πιθανότατα έχετε ήδη διαβάσει ή έχετε βιώσει ότι δεν είναι τόσο απλό. Πολλά έργα χρησιμοποίησαν Plugin.InAppBilling από τον James Montemagno, αλλά το πρόσθετο είναι αρχειοθετημένο και δεν συντηρείται, επομένως δεν θα ενημερωθεί για να υποστηρίζει τη Βιβλιοθήκη Χρέωσης 7. Ταυτόχρονα, το επίσημο πακέτο Xamarin.Android.Google.BillingClient Έχει παραμείνει αγκυροβολημένο στο οικοσύστημα Xamarin.Android και δεν είναι άμεσα συμβατό με το .NET MAUI.

Η πρακτική συνέπεια είναι ότι η Προειδοποιήσεις για το Play Console Η εφαρμογή σας δεν χρησιμοποιεί τη Βιβλιοθήκη Χρέωσης 7.0.0 ή νεότερη έκδοση, η οποία αποκλείει τις ενημερώσεις εάν συνεχίσετε να χρησιμοποιείτε παλαιότερες βιβλιοθήκες. Ορισμένοι προγραμματιστές έχουν επιλέξει δραστικές λύσεις, όπως η προσωρινή απενεργοποίηση των συνδρομών για να είναι δυνατή η μεταφόρτωση μιας έκδοσης, αλλά προφανώς αυτό δεν είναι βιώσιμο εάν το επιχειρηματικό σας μοντέλο εξαρτάται από αυτήν τη δημιουργία εσόδων.

Σε αυτό το πλαίσιο, πολλές ομάδες εξετάζουν εναλλακτικές λύσεις όπως SDK τρίτων κατασκευαστών Αυτές οι υπηρεσίες υποστηρίζουν ήδη το PBL 7 από κάτω και παρουσιάζουν ένα πιο σταθερό, cross-platform API (για παράδειγμα, λύσεις backend συνδρομής με SDK για Android, iOS και άλλες πλατφόρμες). Αυτές οι υπηρεσίες συνήθως χειρίζονται τις μετεγκαταστάσεις εκδόσεων της Βιβλιοθήκης χρεώσεων και παρουσιάζουν ένα σταθερό περιτύλιγμα, μειώνοντας σημαντικά το άγχος με κάθε νέα κατάργηση της Google.

Μέχρι η Microsoft και η ομάδα MAUI να προσφέρουν ένα Το επίσημο πακέτο ενημερώθηκε και είναι πλήρως συμβατό Με τη Βιβλιοθήκη Χρέωσης 7, οι επιλογές περιλαμβάνουν: την εφαρμογή της δικής σας σύνδεσης με την εγγενή Βιβλιοθήκη Χρέωσης, τη χρήση μιας υπηρεσίας τρίτου μέρους ή την επανεξέταση του τρόπου ενσωμάτωσης των αγορών στο έργο MAUI. Σε κάθε περίπτωση, είναι καλύτερο να μην αφήσετε την απόφαση για την τελευταία στιγμή, επειδή οι προθεσμίες του Play είναι καθορισμένες.

Βιβλιοθήκη χρεώσεων Google Play έκδοση 7
σχετικό άρθρο:
Πώς να ζητήσετε επιστροφή χρημάτων για αγορές στο Google Play βήμα προς βήμα

Συνολικά, η ενημέρωση της Βιβλιοθήκης Χρέωσης Google Play v7 περιλαμβάνει την αναθεώρηση των εξαρτήσεων, τον καθαρισμό παρωχημένων API, την ενίσχυση της λογικής backend με επαλήθευση αγοράς και RTDN, και την αξιοποίηση εργαλείων δοκιμών όπως το Play Billing Lab για την αποκάλυψη όλων των σφαλμάτων πριν από την κυκλοφορία. Όσοι αφιερώσουν χρόνο για να βελτιώσουν αυτήν τη μετεγκατάσταση θα είναι σε θέση να διαχειριστούν καλύτερα τα προπληρωμένα προγράμματα, τις εικονικές χρεώσεις, τα σφάλματα δικτύου και τις αλλαγές στον κύκλο ζωής των συνδρομών και θα έχουν πολύ καλύτερες πιθανότητες να διατηρήσουν σταθερά έσοδα και μια βελτιωμένη εμπειρία χρήστη στο Google Play. Κοινοποιήστε τις πληροφορίες, ώστε περισσότεροι χρήστες να μπορούν να μάθουν για το θέμα.


Προσθήκη ως προτιμώμενης πηγής