J'ai parcouru la bibliothèque de facturation Play https://developer.Android.com/google/play/billing/billing_library_overview Vous devez reconnaître tous les achats dans les trois jours. Le défaut de reconnaître correctement les achats entraîne le remboursement de ces achats. Le processus n'est pas clair sur la façon de reconnaître les achats. C'est ce que j'ai essayé. Est-ce la bonne façon de procéder? Merci d'avance
@Override
public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> purchases) {
if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.OK&&purchases!=null){
Toast.makeText(this, "Purchase Successful", Toast.LENGTH_SHORT).show();
for(Purchase purchase:purchases){
handlePurchase(purchase);
}
}else if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.USER_CANCELED){
Toast.makeText(this, "Purchase Cancelled", Toast.LENGTH_SHORT).show();
}else if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED){
Toast.makeText(this, "Already Purchased", Toast.LENGTH_SHORT).show();
} else{
Toast.makeText(this, billingResult.getDebugMessage(), Toast.LENGTH_SHORT).show();
}
//in handlePurchase()
if(!purchase.isAcknowledged())
{
AcknowledgePurchaseParams acknowledgePurchaseParams
= AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.setDeveloperPayload(purchase.getDeveloperPayload())
.build();
client.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener() {
@Override
public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
if(billingResult.getResponseCode()== BillingClient.BillingResponseCode.OK){
Toast.makeText(RemoveAdsActivity.this, "Purchase Acknowledged", Toast.LENGTH_SHORT).show();
}
}
});
}
Il mentionne la reconnaissance des achats près de la moitié du chemin lien . Il existe différentes façons de reconnaître l'achat en fonction du type.
private BillingClient mBillingClient = BillingClient.newBuilder(mActivity).setListener(this).build();
//For non-consumables:
mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener());
//For Consumables:
client.consumeAsync(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);
Le lien que j'ai publié comprend un exemple sur la façon de gérer les abonnements.
[~ # ~] mise à jour [~ # ~]
Voici un exemple plus étendu sur la façon de reconnaître les achats non consommables :
Créez d'abord l'objet AcknowledgePurchaseParams
Class. Pour cela, vous avez besoin du jeton d'achat que vous devriez pouvoir obtenir facilement car vous devez l'appeler dans votre méthode onPurchasesUpdated
ou une autre méthode à laquelle vous avez transmis l'achat après onPurchasesUpdated
:
AcknowledgePurchaseParams acknowledgePurchaseParams =
AcknowledgePurchaseParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
Créez ensuite votre écouteur qui sera utilisé comme deuxième paramètre. Cela vous permettra de faire quelque chose une fois l'achat confirmé. J'affiche un message de snack-bar dans cet exemple (selon le commentaire de worbel, vous pouvez, et devriez probablement, vérifier le résultat de ce résultat de facturation):
AcknowledgePurchaseResponseListener acknowledgePurchaseResponseListener = new AcknowledgePurchaseResponseListener() {
@Override
public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
getMessage("Purchase acknowledged");
}
};
Une fois ces éléments créés, utilisez votre BillingClient pour appeler la méthode acknowledgePurchase
:
mBillingClient.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);
L'achat doit être reconnu avec succès.
Cela utilise acknowledgePurchase
pour les articles non consommables.
Achats consommables
Ceci est similaire, seulement ce qu'ils sont appelés est changé - Voir l'explication de ce qu'ils sont dans l'exemple ci-dessus:
Premier paramètre - Paramètres - configuration:
ConsumeParams consumeParams = ConsumeParams.newBuilder()
.setPurchaseToken(purchase.getPurchaseToken())
.build();
Deuxième paramètre - Écouteur - configuration:
ConsumeResponseListener consumeResponseListener = new ConsumeResponseListener() {
@Override
public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
getMessage("Purchase acknowledged");
}
}
Utilisez maintenant votre BillingClint et consumeAsync:
mBillingClient.consumeAsync(consumeParams, consumeResponseListener);