J'ai suivi ce document http://developer.android.com/google/play/billing/billing_integrate.html pour créer une application de test, qui démarre une procédure d'achat dans l'application, après avoir cliqué sur un bouton.
J'ai publié l'application en tant que version alpha et testé l'achat in-app et cela fonctionne.Quand ai-je besoin de la classe IabHelper pour effectuer un achat InApp?
Mon problème est, que je suis confus par d'autres exemples dans-app-achat. Ils utilisent tous une classe appelée "IabHelper" pour faire l'achat in-app. Mais il semble que l'on n'a pas besoin de cette classe pour faire un achat in-app. La classe est même utilisée dans l'exemple officiel "TrivalDrive" de V3 In-App-Billing, mais elle n'est jamais mentionnée dans le guide de facturation intégrée à l'application que j'ai posté ci-dessus.
Donc, quelqu'un pourrait m'expliquer s'il vous plaît, pourquoi et quand je devrais utiliser la classe IabHelper?
Merci d'avance.
Voici une version simplifiée du code i utiliser pour faire une in-app-achat:
private void doPurchase() {
try {
Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(), "premium.upgrade",
"inapp", "");
if (buyIntentBundle != null && buyIntentBundle.getInt("RESPONSE_CODE") == 0) {
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
startIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(),
Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));
}
} catch (SendIntentException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1001) {
String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
if (resultCode == RESULT_OK) {
try {
JSONObject jo = new JSONObject(purchaseData);
String sku = jo.getString("productId");
Log.i(">>>", "You have bought the "
+ sku
+ ". Excellent choice, "
+ "adventurer!");
} catch (JSONException e) {
Log.e(">>>", "Failed to parse purchase data.");
e.printStackTrace();
}
}
}
}
Dang. Il est assez pathétique que Google ne puisse même pas écrire une implémentation sans bug de l'achat in-app. – trans
@trans Oui, c'est un peu étrange car c'est une partie si fondamentale de la plate-forme. Néanmoins, j'ai utilisé une bibliothèque appelée [Checkout] (https://github.com/serso/android-checkout) pendant un certain temps sans rencontrer de problèmes visibles. Je le recommande fortement pour tout ce qui concerne IAB. – reVerse