Ämne: Vad är com.android.vending.billing? Google Play Billing Library förklaras!
Om du utvecklar en mobilapplikation, närmare bestämt en Android och din kund vill integrera köp i appen i applikationen och detta är den domän du inte har någon erfarenhet av. Du tittar frenetiskt på webben och ser com.android.vending .billing är lösningen men du är förvirrad över vad den gör och hur du integrerar den. Tillsammans med det kan du se en annan term som kallas “Google Play Billing Library” kopplad till den. Är de båda likadana? Hur ställer man in faktureringsbiblioteket och hur man sammanfogar det i din applikation?
Eller om du vill köpa en produkt från en applikation och har undrat hur denna X-applikation tar mina riktiga pengar och ger mig produkten i appen. Är det ens säkert att använda? Finns det några risker med att lita på applikationens faktureringsprocess? Kommer jag att bli bestulen? Det här är de vanligaste frågorna som normalt kommer att tänka på.
Tja, till att börja med är det säkert att använda applikationen om den är verifierad av Google Play och som utvecklare om du vill att din applikation ska verifieras snabbt, att använda com-paketet eller faktureringsbiblioteket är en bra början! I den här artikeln kommer vi att prata om com-paketet och faktureringsbiblioteket och hur man integrerar dem i din app.
Vad är com.android.vending.billing?
com-paketet heter com.android.vending.billing är ett paket som stöder fakturering i appen i din Android-applikation. Det här paketet användes i Android-applikationer där du skulle lägga till paketet i manifestfilen och lägga till några relevanta beroenden. Det är ett Google-API som ger tillstånd att lägga till köp i appen till din app och lägga till dem i manifestfilen gör att fakturering kan göras tillgänglig för din app.
Vad är Google Play Billing Library?
Google Play Billing-bibliotek är det moderna sättet att lägga till köp i din app. Det här biblioteket används för att integrera Google Plays faktureringssystem i din Android-app, som är en tjänst som uppmanar dig att sälja dina digitala produkter och innehåll i din app. Detta system ser till att du kan göra säkra inköp av produkter i din applikation oavsett om det är ett engångsköp eller prenumerationsbaserat.
Hur faktureringsbiblioteket integrerar faktureringssystemet till din Android-applikation kan beskrivas i ett blockschema:
Tillsammans med att lägga till systemet i Android-appen bör detta även läggas till din serverbackend för effektiva utvecklarflöden och säkra inköp av produkter.
Flöde av inköp av produkter
Genom kodexempel kommer vi att diskutera integrationen av Google Plays faktureringsbibliotek i din app. Men innan dess uppstår frågan: Vad är det normala flödet av ett köp av en X-produkt antingen genom ett abonnemang eller ett engångsköp. Vi kommer att prata om dem båda här.
Engångsköp
Följande gäller för ett engångsköp av ett köp i appen (IAP) som initieras i en app eller ett spel:
- Visa användaren vad de kan köpa.
- Starta köpflödet för att användaren ska acceptera köpet.
- Verifiera köpet på din server.
- Ge innehåll till användaren.
- Bekräfta leverans av innehållet. För X förbrukningsprodukt, konsumera köpet så att användaren kan köpa varan igen.
Prenumerationsbaserat köp
Prenumerationer har tillstånd som de är i och det förnyas vanligtvis om de inte avbryts manuellt. Tillstånden är nedan:
- Aktiva: Användaren har tillgång till prenumerationen.
- Inställt: Användaren har avbrutit men har fortfarande åtkomst tills den löper ut.
- Under respitperiod: Användaren upplevde ett betalningsproblem men har fortfarande åtkomst medan Google försöker igen med betalningsmetoden.
- Placerad i kö: Användaren upplevde ett betalningsproblem och har inte längre åtkomst medan Google försöker igen med betalningsmetoden.
- Pausad: Användaren pausade sin åtkomst och har inte åtkomst förrän de återupptas.
- Utgånget: Användaren har sagt upp och förlorat åtkomsten till prenumerationen.
Så här integrerar du Google Play Billing Library i din Android-app
I följande avsnitt kommer du att läsa om hur du lägger till com.android.vending.billing-biblioteket och behörigheterna i din Android-app eller -spel:
1. Initiera anslutningen till Google Play
Detta steg har delats upp i tre separata steg för att göra det lättare att förstå för dig.
Steg 1 – Lägg till beroende
Det första steget för att integrera biblioteket med din app är att se till att du initierar anslutningen till Google Play korrekt. För det lägger du till Google Play Billing Library-beroende till din app bygga.gradle fil.
dependencies { val billing_version = "6.0.1" implementation("com.android.billingclient:billing:$billing_version") } Or if you’re using the KTX module: dependencies { val billing_version = "6.0.1" implementation("com.android.billingclient:billing-ktx:$billing_version") }
Faktureringsversionen kan ändras med tiden, lägg till den som är mer stabil. När denna artikel skrevs är 6.0.1-versionen den mest stabila.
Steg 2 – Initiera Billing Client
När du har lagt till beroendet måste du lägga till faktureringsklienten som är huvudgränssnittet för kommunikation mellan Google Play Billing Library och resten av din app. Att skapa en BillingClientanvända sig av newBuilder(). Du kan skicka vilket sammanhang som helst till newBuilder()och BillingClient använder den för att få en applikationskontext. Det ser till att det inte finns några minnesläckor.
private val purchasesUpdatedListener = PurchasesUpdatedListener { billingResult, purchases -> // To be implemented in a later step. } private var billingClient = BillingClient.newBuilder(context) .setListener(purchasesUpdatedListener) .enablePendingPurchases() .build()
Steg 3 – Anslut till Google Play
När du har lagt till beroende och initialiserat faktureringsklienten upprättar du anslutningen till Google Play. Ring för det startConnection() Implementera också a BillingClientStateListener för att få ett återuppringning när installationen av klienten är klar och den är redo att göra ytterligare förfrågningar.
Det kommer att finnas tillfällen där dina anslutningar till Google Play kommer att gå förlorade, för att hantera dem, åsidosätt onBillingServiceDisconnected() återuppringningsmetod och se till att BillingClient kallar startConnection() metod för att återansluta till Google Play innan du gör ytterligare förfrågningar.
billingClient.startConnection(object : BillingClientStateListener { override fun onBillingSetupFinished(billingResult: BillingResult) { if (billingResult.responseCode == BillingResponseCode.OK) { // The BillingClient is ready. You can query purchases here. } } override fun onBillingServiceDisconnected() { // Try to restart the connection on the next request to // Google Play by calling the startConnection() method. } })
2. Visa produkter som finns att köpa
Du har sett till att du är ansluten till Google Play, nu börjar det roliga då vi nu måste visa upp produkterna för användarna. Men innan dess måste vi fråga dem eftersom det returnerar lokaliserad produktinformation. För prenumerationer, se till att din produkt visas följer alla Google Plays utvecklarpolicyer.
För att fråga efter produktinformation i appen, ring queryProductDetailsAsync(). För att hantera resultatet av den asynkrona operationen måste du också ange en lyssnare som implementerar ProduktdetaljerResponseListener gränssnitt. Du kan sedan åsidosätta onProductDetailsResponse()
val queryProductDetailsParams = QueryProductDetailsParams.newBuilder() .setProductList( ImmutableList.of( Product.newBuilder() .setProductId("product_id_example") .setProductType(ProductType.SUBS) .build())) .build() billingClient.queryProductDetailsAsync(queryProductDetailsParams) { billingResult, productDetailsList -> // check billingResult // process returned productDetailsList } )
3. Bearbeta resultatet
Google Play Billing Library lagrar sökresultaten i en lista med Produktinformation föremål. Du kan sedan anropa en mängd olika metoder för varje Produktinformation objekt i listan för att se relevant information om en produkt i appen, till exempel dess pris eller beskrivning. Några av de vanliga metoderna som kan användas är:
Data typ | Metodnamn | Beskrivning |
---|---|---|
Sträng | getDescription() | Returnerar beskrivningen av produkten. |
Sträng | hämta namn() | Returnerar namnet på produkten som säljs. |
ProductDetails.OneTimePurchaseOfferDetails | getOneTimePurchaseOfferDetails() | Returnerar erbjudandeinformationen för en engångsköpprodukt. |
Sträng | getProductType() | Returnerar produktens BillingClient.ProductType. |
Lista |
getSubscriptionOfferDetail() | Returnerar en lista som innehåller alla tillgängliga erbjudanden för att köpa en prenumerationsprodukt. |
Sträng | getTitle() | Returnerar titeln på produkten som säljs. |
4. Starta inköpsflödet
För att starta en köpförfrågan från din app ringer du launchBillingFlow() metod från din app huvudtråd. Denna metod tar en hänvisning till en BillingFlowParams objekt som innehåller det relevanta Produktinformation objekt som erhållits från anropet queryProductDetailsAsync(). För att skapa ett BillingFlowParams-objekt, använd BillingFlowParams.Builder klass.
// An activity reference from which the billing flow will be launched. val activity : Activity = ...; val productDetailsParamsList = listOf( BillingFlowParams.ProductDetailsParams.newBuilder() // retrieve a value for "productDetails" by calling queryProductDetailsAsync() .setProductDetails(productDetails) // to get an offer token, call ProductDetails.subscriptionOfferDetails() // for a list of offers that are available to the user .setOfferToken(selectedOfferToken) .build() ) val billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build() // Launch the billing flow val billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)
De launchBillingFlow() metod returnerar en av flera svarskoder, alla med int datatype, några av dem som är listade i tabellen nedan:
Svarskoder | Beskrivning |
---|---|
BILLING_UNAVAILABLE | Ett användarfaktureringsfel uppstod under bearbetningen. |
DEVELOPER_ERROR | Fel på grund av felaktig användning av API:et. |
FEL | Allvarligt fel under API-åtgärden. |
ITEM_READY_OWNED | Köpet misslyckades eftersom varan redan ägs. |
ITEM_NOT_OWNED | Begärd åtgärd på objektet misslyckades eftersom det inte ägs av användaren. |
ITEM_UNAVAILABLE | Den efterfrågade produkten går inte att köpa. |
OK | Framgång! |
USER_CANCELED | Transaktionen avbröts av användaren. |
På ett lyckat samtal till launchBillingFlow()visar systemet köpskärmen för Google Play.
Google Play-samtal onPurchasesUpdated() att leverera resultatet av köpoperationen till en lyssnare som implementerar PurchasesUpdatedListener gränssnitt. Lyssnaren anges med hjälp av setListener() metod när du initierade din BillingClient.
override fun onPurchasesUpdated(billingResult: BillingResult, purchases: List?) { if (billingResult.responseCode == BillingResponseCode.OK && purchases != null) { for (purchase in purchases) { handlePurchase(purchase) } } else if (billingResult.responseCode == BillingResponseCode.USER_CANCELED) { // Handle an error caused by a user canceling the purchase flow. } else { // Handle any other error codes. } }
Prenumerationer kontra engångsköp: Vilket är bättre?
Det beror på din affärsmodell och hur du vill generera intäkter från din applikation. Engångsköpet som namnet antyder är en engångsbetalning, vanligtvis används för att köpa hela applikationen eller innehållet i sig. Medan prenumerationsmetoden är den begränsade åtkomsten av produkten till användarna med avseende på tid, efter den inställda tiden, skulle de behöva betala för åtkomsten igen.
Om du bygger en applikation som har begränsad skala och är gjord för att utföra en begränsad uppsättning uppgifter, är engångsköpet bättre för det. Om du vill utöka din applikation så att den får förbättrad prestanda övertid eller nya funktionella funktioner är en prenumerationsbaserad strategi bättre, allt beror på målen med att bygga applikationen i första hand tillsammans med intäktsförväntningar, utgiftsvanor av dina kunder eller hur mycket tid du är villig att ägna dig åt det.
Är det säkert att använda biblioteket com.android.vending.billing (Google Play Billing)?
Som nämnts tidigare är Google Play Billing Library helt säkert att använda. Faktum är att det rekommenderas att göra dina appar och spel tillräckligt robusta för att bekämpa bedrägliga aktiviteter. Men som sådan med många andra bibliotek måste du fortfarande vara försiktig med de smarta lösningar som fortfarande kan hända. Vi kommer att diskutera en sådan som potentiellt kan göra din faktureringsprocess sårbar tillsammans med hur du åtgärdar det.
Om din app anropar faktureringstjänsten i appen utan att ställa in ett målpaket för avsikten. Detta kan göra det möjligt för ett skadligt paket att kringgå Google Play Butiks faktureringssystem och komma åt objekt som inte har köpts.
Hur man fixar:
- Om du använder IabHelper, vänligen börja använda senaste SDK.
- Om du manuellt anropar faktureringstjänsten i appen, se till att du ringer Intent.setPackage(“com.android.vending”) för alla avsikter till “com.android.vending.billing.InAppBillingService.BIND”.
- Logga in på din utvecklarkonsol och skicka in den uppdaterade versionen av din app.
- Kom tillbaka efter fem timmar – det kommer att visa ett varningsmeddelande om appen inte har uppdaterats korrekt.
Hur avinstallerar man com.android.vending.billing?
I äldre versioner kan du utelämna paketet com.android.vending.billing, men i senare versioner av Android-enheter är detta paket nu inbyggt. När du bygger applikationer är det här paketet redan inbyggt i manifestfilen, så du gör det inte måste skriva det själv. Nyckelpunkten är att det inte finns något känt sätt att avinstallera varken från AndroidManifest.xml-filen eller från själva enheten.
Vanliga frågor om Google Plays faktureringssystem
Här är några vanliga frågor om com.android.vending.billing eller Google Plays faktureringssystem:
Vilka appar behöver använda Google Plays faktureringssystem?
För större chanser att dina appar kommer in på Google Play som erbjuder köp i appar på produkter måste de använda Google Plays faktureringssystem.
Kan jag kommunicera med mina användare om alternativa sätt att betala?
Du kan inte göra det i din ansökan. Du måste göra det genom några alternativ utanför din ansökan.
Kan jag ha olika appfunktioner, priser och upplevelser beroende på plattform?
Du kan ha olika priser för olika appfunktioner och upplevelser. Du kan till och med skapa flera versioner av din app för att stödja olika plattformar och prismodeller.
Ändras din faktureringspolicy beroende på vilken kategori min app är i?
Oavsett vilken kategori du använder förblir faktureringspolicyn densamma.
Kan jag erbjuda mina kunder återbetalning direkt?
Du kan definitivt erbjuda återbetalningar till användare via Google Plays faktureringssystem, och du kan återbetala direkt eller någon kundsupport som du kan tillhandahålla.
Om du gillade att läsa den här artikeln finns det några fler Android-utvecklingsrelaterade förklaringsguider som du kan ha nytta av: