Air-Extension-Inappbilling ist eine Adobe Air native Erweiterung (ANE) zum Kauf von Produkten für mehrere Android-Märkte (Einheimische und global).
........... راهنمــــــای فـــــــارسی ..........
Wir haben 2 Projekte Vorlage vorbereitet:

Es verwendet Google Play In-App-Abrechnungs-Version 3-API.
Unterstützte Funktionen:
Bitte lesen Sie Dokumente und versuchen Sie es ane, bevor Sie Fragen stellen.
http://developer.android.com/google/play/billing/index.html
http://help.adobe.com/en_us/air/extensions/index.html
Fügen Sie Iabilling.ane Datei vom Paketordner zu Ihrem Adobe Air -Projekt hinzu.
Tutorial: Wie man Anes in Flashbuilder, Flash (Animate) und FlashDevelop einbettet
Fügen Sie alle Anwendungselemente in "_Items" -Array ein.
Holen Sie sich Base64Key von der Marktkonsole und ersetzen Sie durch '== 5AMP1E8A5E64KE7 =='.
Auch wenn Sie einen neuen Markt hinzufügen möchten, mussten Sie mit 'Bineurl' und 'Packageurl' einen neuen Fall hinzufügen.
import com.gerantech.extensions.iab.Iab ;
import com.gerantech.extensions.iab.Purchase ;
import com.gerantech.extensions.iab.events.IabEvent ;
...
// provide all sku items
_items = new Array ( "my.product.id1" , "my.product.id2" , "my.product.id3" ) ;
var _marketName : String = "google" ;
var base64Key : String , bindURL : String , package URL:String;
switch ( _marketName ) {
case "google" :
base64Key = "==5AMP1E8A5E64KE7==" ;
bindURL = "com.android.vending.billing.InAppBillingService.BIND" ;
packageURL = "com.android.vending" ;
break;
case "cafebazaar" :
base64Key = "==5AMP1E8A5E64KE7==" ;
bindURL = "ir.cafebazaar.pardakht.InAppBillingService.BIND" ;
packageURL = "com.farsitel.bazaar" ;
break;
case "myket" :
base64Key = "==5AMP1E8A5E64KE7==" ;
bindURL = "ir.mservices.market.InAppBillingService.BIND" ;
packageURL = "ir.mservices.market" ;
break;
case "cando" :
base64Key = "==5AMP1E8A5E64KE7==" ;
bindURL = "com.ada.market.service.payment.BIND" ;
packageURL = "com.ada.market" ;
break;
default:
trace( "BillingManager ::: market name[" + _marketName + "] is invalid." );
break;
}
Iab . instance . addEventListener (IabEvent . SETUP_FINISHED , iabSetupFinishedHandler) ;
Iab . instance . startSetup(base64Key, bindURL, package URL);
...
function iabSetupFinishedHandler(event : IabEvent) : void {
trace( "BillingManager ::: iabSetupFinishedHandler" , event.result.message);
Iab.instance.removeEventListener(IabEvent.SETUP_FINISHED, iabSetupFinishedHandler);
queryInventory();
}Manchmal können Benutzer den Kauffluss nicht ausfüllen, was zu Netzwerkproblemen oder anderen tödlichen Fehlern führt. Sie können Elemente nach der Initialisierung auf eine bessere Benutzererfahrung wiederherstellen.
/**Getting purchased product details, Iab should be initialized first</br>
* if put items args getting purchased and not purchased product details
*/
function queryInventory() : void {
//restoring purchased in-app items and subscriptions
Iab.instance.addEventListener(IabEvent.QUERY_INVENTORY_FINISHED, iabQueryInventoryFinishedHandler);
Iab.instance.queryInventory();
}
...
function iabQueryInventoryFinishedHandler(event : IabEvent) : void {
Iab.instance.removeEventListener(IabEvent.QUERY_INVENTORY_FINISHED, iabQueryInventoryFinishedHandler);
if ( !event.result.succeed ) {
trace ( "iabQueryInventoryFinishedHandler failed to finish." ) ;
return ;
}
// consume all consumable items
/*for each(var k:String in _items) {
var purchase:Purchase = Iab.instance.getPurchase(k);
if( purchase == null || purchase.itemType == Iab.ITEM_TYPE_SUBS )
continue;
consume(purchase.sku);
}*/
} Wenn der Benutzer getippt oder auf die Schaltfläche "Kaufen" geklickt hat. Vergessen Sie nicht, um diesen Artikel zu kaufen.
Für Verbrauchsmaterialien sollten Sie Artikel sofort konsumieren, nachdem der Kauf in der Listener -Methode fertig ist.
// making the purchase, Iab should be initialized first
Iab . instance . addEventListener (IabEvent . PURCHASE_FINISHED , iabPurchaseFinishedHandler) ;
Iab . instance . purchase(sku, Iab . ITEM_TYPE_INAPP , payload) ;
...
function iabPurchaseFinishedHandler(event : IabEvent) : void {
trace( "BillingManager ::: iabPurchaseFinishedHandler" , event.result.message);
Iab.instance.removeEventListener(IabEvent.PURCHASE_FINISHED, iabPurchaseFinishedHandler);
if (!event.result.succeed) {
trace (event . result . response, event . result . message ) ;
return ;
}
var purchase:Purchase = Iab.instance.getPurchase(event.result.purchase.sku);
if( purchase == null )
queryInventory();
else // if you want immediatly consume after purchase
consume(purchase.sku);
}Für nicht konsumierbare Elemente muss diese Methode nicht verwendet werden.
function consume(sku : String ) : void {
trace( "BillingManager ::: consume" , sku);
Iab.instance.addEventListener(IabEvent.CONSUME_FINISHED, iabConsumeFinishedHandler);
Iab.instance.consume(sku);
}
function iabConsumeFinishedHandler(event : IabEvent) : void {
trace( "BillingManager ::: iabConsumeFinishedHandler" , event.result.message);
Iab.instance.removeEventListener(IabEvent.CONSUME_FINISHED, iabConsumeFinishedHandler);
if (!event.result.succeed) {
trace ( "iabConsumeFinishedHandler failed to consume:" , event . result . message ) ;
return ;
}
}Fügen Sie Abrechnungsberechtigungen basierend auf ausgewählten Markt hinzu. Fügen Sie Ihrer Air Aplication-App.xml-Datei in <ifestadditions> die folgenden Zeilen hinzu.
<!-- In APP Billing permissions -->
< uses-permission android : name = " android.permission.INTERNET " />
<!-- For Google --> < uses-permission android : name = " com.android.vending.BILLING " />
<!-- For CafeBazaar --> <!-- <uses-permission android:name="com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR" /> -->
<!-- For Myket --> <!-- <uses-permission android:name="ir.mservices.market.BILLING" /> -->
< application android : enabled = " true " >
< activity android : name = " com.gerantech.extensions.IabActivity "
android : theme = " @android:style/Theme.Translucent.NoTitleBar.Fullscreen "
android : background = " #30000000 "
android : screenOrientation = " portrait "
android : configChanges = " orientation|keyboardHidden " />
</ application >Erweiterungs -ID -Erweiterungs -ID hinzufügen: com.gerantech.extensions.iabilling
< extensions >
< extensionID >com.gerantech.extensions.iabilling</ extensionID >
</ extensions >http://developer.android.com/google/play/billing/billing_testing.html
Ane ist für Air 18.0+ gebaut, um für eine andere Version umzubauen. Machen Sie Folgendes: