Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Java Objective-C ActionScript
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
dist
lib
src
.gitignore
.gitmodules
README.md

README.md

Storekit iOS ANE

Download the latest binary from here

Android Setup

The following must be merged into the application descriptor in the manifestAdditions section:

<uses-permission android:name="com.android.vending.BILLING"/>
<application android:enabled="true" @ANDROID_DEBUGGABLE@>
  <activity android:name="com.jesusla.ane.CustomActivity"/>
  <service android:name="com.jesusla.google.BillingService"/>
  <receiver android:name="com.jesusla.google.BillingReceiver">
    <intent-filter>
      <action android:name="com.android.vending.billing.IN_APP_NOTIFY"/>
      <action android:name="com.android.vending.billing.RESPONSE_CODE"/>
      <action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED"/>
    </intent-filter>
  </receiver>
  <receiver android:name="com.amazon.inapp.purchasing.ResponseReceiver">
    <intent-filter>
      <action android:name="com.amazon.inapp.purchasing.NOTIFY"
              android:permission="com.amazon.inapp.purchasing.Permission.NOTIFY"/>
    </intent-filter>
  </receiver>
</application>

For Google Play In-App Billing:

<meta-data android:name="SKProvider" android:value="Google"/>
<meta-data android:name="SKIdentity" android:value="BASE64_ENCODED_PUBLIC_KEY"/>

For Amazon In-App Purchases:

<meta-data android:name="SKProvider" android:value="Amazon"/>

Usage

import com.jesusla.storekit.*;

// StoreKit listeners should be setup as soon as app starts
StoreKit.addEventListener(TransactionEvent.TRANSACTION_PURCHASED, storeKit_purchaseHandler);
StoreKit.addEventListener(TransactionEvent.TRANSACTION_FAILED, storeKit_failureHandler);
StoreKit.addEventListener(TransactionEvent.TRANSACTION_REVOKED, storeKit_revokeHandler);
StoreKit.addEventListener(TransactionEvent.TRANSACTION_VERIFY, storeKit_verifyHandler);

// Once listeners are setup, StoreKit should be initialized
// PRODUCTS should be an array of Product IDs, which need to be previously configured in
// iTunesConnect / GooglePlay / Amazon Market.
const PRODUCTS:Array = [
  'sku1', 'sku2', 'sku3', 'sku4', 'sku5', 'sku6'
];
StoreKit.init(PRODUCTS, initCallback);

function initCallback(success:Boolean):void

// initCallback is called with a flag indicating the initialization status
// If true, the system is ready to process orders. This flag can be
// obtained at any time with the canMakePayments property. The caller
// should adjust the UI appropriately in those cases when this flag is false.
StoreKit.canMakePayments;

// To request a purchase:
StoreKit.requestPayment('sku1', requestCallback);

// The success/failure of the purchase is reported in the optional
// request callback. A true value does not mean that the purchase
// went through. It simply means that the request was successful.
function requestCallback(success:Boolean):void

// As the transaction is processed, several events are fired.
// If there's a problem with the transaction (e.g. user cancels
// the transaction, the payment was declined, etc.) the event
// TRANSACTION_FAILED is fired. The failure must be acknowledged
// by finishing the transaction with acknowledgeTransaction()
function storeKit_failureHandler(event:TransactionEvent):void {
  // Acknowledge the failure. Omitting this step will
  // cause the event to be constantly fired for this
  // transaction until acknowledged.
  StoreKit.acknowledgeTransaction(event.transaction);
}

// If the transaction succeeds, the TRANSACTION_VERIFY event
// is fired. The client must now verify the transaction in an
// implementation-specific manner (e.g. verifying its cryptographic
// signature via a server-side request, etc.). The transaction
// should be acknowledged if verification passes. Otherwise,
// the transaction should be rejected.
function storeKit_verifyHandler(event:TransactionEvent):void {
  if (serverSideVerification(event.transaction))
    StoreKit.acknowledgeTransaction(event.transaction);
  else
    StoreKit.rejectTransaction(event.transaction);
}

// After being successfully verified, the TRANSACTION_PURCHASED
// event is fired. The transaction is now complete and should
// be fulfilled. It is important not to acknowledge the transaction
// before it is fulfilled.
function storeKit_purchaseHandler(event:TransactionEvent):void {
  if (fulfillTransaction(event.transaction))
    StoreKit.acknowledgeTransaction(event.transaction);
}

// Finally, the TRANSACTION_REVOKED event may be fired for
// transactions that are revoked/refunded server-side. The client must
// revoke the goods (e.g. deduct coins, etc) and acknowledge the
// transaction.
function storeKit_revokeHandler(event:TransactionEvent):void {
  if (revokeTransaction(event.transaction))
    StoreKit.acknowledgeTransaction(event.transaction);
}

// Transactions are plain objects with the following properties:
var transaction:Object = event.transaction;
transaction.vendor; // One of VENDOR_APPLE, VENDOR_GOOGLE, VENDOR_AMAZON
transaction.transactionState; // One of STATE_FAILED, STATE_VERIFY,
                              // STATE_PURCHASED, STATE_REVOKED
transaction.productIdentifier; // e.g. 'sku1' (String)

// Note that during a VERIFY, only the first two fields are guaranteed
// to be present. The rest of the fields will be vendor-specific.

// Finally, the app may request restoring completed transactions.
// This will cause all non-consumable historic transactions to be
// resent to the client with a STATE_PURCHASED state. The optional callback
// is notified with a flag indicating success/failure
StoreKit.restoreCompletedTransactions(restoreCallback);

function restoreCallback(success:Boolean):void
Something went wrong with that request. Please try again.