Android Open Source - AmazonInAppPurchasing Amazon In App Purchasing






From Project

Back to project page AmazonInAppPurchasing.

License

The source code is released under:

Copyright 2012 Bob Easterday, Adobe Systems Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal ...

If you think the Android project AmazonInAppPurchasing listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.rahulrav.cordova.amazon.plugin;
//from   w  w w.j  a  va 2  s  .c om
import android.app.Activity;
import android.util.Log;

import com.amazon.inapp.purchasing.Offset;
import com.amazon.inapp.purchasing.PurchasingManager;
import com.rahulrav.cordova.amazon.util.Logger;
import com.rahulrav.cordova.amazon.util.Macros;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.PluginResult;
import org.apache.cordova.PluginResult.Status;
import org.json.JSONArray;
import org.json.JSONObject;

import java.util.HashSet;
import java.util.Set;

/**
 * Represents the main In-App Purchasing Plugin definition.
 *
 * @author Rahul Ravikumar
 *
 */
public class AmazonInAppPurchasing extends CordovaPlugin {
    CallbackContext callbackContext;
    @Override
    public boolean execute(final String request, JSONArray args, final CallbackContext callbackContext) {
        this.callbackContext = callbackContext;
        Logger.d(String.format("Executing (%s, %s, %s)", request, args, callbackContext.getCallbackId()));

        try {
            // register purchase observer
            final Activity activityContext = cordova.getActivity();
            final AmazonPurchasingObserver purchaseObserver = AmazonPurchasingObserver.getPurchasingObserver(this, activityContext);

            if (Macros.isEmpty(request) || !request.matches("(?i)(initialize|itemData|purchase|purchaseUpdates|userId)")) {
                Logger.e(String.format("Invalid Request %s", request));
                callbackContext.sendPluginResult(new PluginResult(Status.INVALID_ACTION));
            }

            // initialize request
            if (request.matches("(?i)initialize")) {

                // prevent repeated initialization
                if (purchaseObserver.isAlreadyInitialized()) {
                    // send the old response back
                    callbackContext.sendPluginResult(new PluginResult(Status.OK, purchaseObserver.sdkAvailableResponse()));
                }

                // sdk initialization request
                purchaseObserver.registerInitialization(callbackContext.getCallbackId());
                PurchasingManager.registerObserver(purchaseObserver);
            }

            // purchase request
            else if (request.matches("(?i)purchase")) {
                if (Macros.isEmptyJSONArray(args)) {
                    Logger.e("Invalid purchase request");
                    callbackContext.sendPluginResult(new PluginResult(Status.ERROR));
                }
                final String sku = args.optString(0);
                final String requestId = PurchasingManager.initiatePurchaseRequest(sku);
                PluginResult result = completeRequest(purchaseObserver, requestId, callbackContext.getCallbackId());
                callbackContext.sendPluginResult(result);
            }

            // purchase updates request
            else if (request.matches("(?i)purchaseUpdates")) {
                final String strOffset = !Macros.isEmptyJSONArray(args) ? args.optString(0, null) : null;
                final Offset offset = Macros.isEmpty(strOffset) ? Offset.BEGINNING : Offset.fromString(strOffset);
                final String requestId = PurchasingManager.initiatePurchaseUpdatesRequest(offset);
                PluginResult result = completeRequest(purchaseObserver, requestId, callbackContext.getCallbackId());
                callbackContext.sendPluginResult(result);
            }

            // item data request
            else if (request.matches("(?i)itemData")) {
                if (Macros.isEmptyJSONArray(args)) {
                    Logger.e("Invalid item data request");
                    callbackContext.sendPluginResult(new PluginResult(Status.ERROR));
                }

                final JSONArray skus = args.optJSONArray(0);

                final Set<String> skuSet = new HashSet<String>();
                for (int i = 0; i < skus.length(); i++) {
                    skuSet.add(skus.optString(i));
                }

                final String requestId = PurchasingManager.initiateItemDataRequest(skuSet);
                callbackContext.sendPluginResult(completeRequest(purchaseObserver, requestId, callbackContext.getCallbackId()));
            }

            // user id request
            else if (request.matches("(?i)userId")) {
                final String requestId = PurchasingManager.initiateGetUserIdRequest();
                PluginResult result = completeRequest(purchaseObserver, requestId, callbackContext.getCallbackId());
                callbackContext.sendPluginResult(result);
            }
            else {
                return false;
            }

        } catch (final Exception e) {
            Logger.e(String.format("Unable to execute request (%s. %s. %s)", request, args != null ? args.toString() : "", callbackContext.getCallbackId()), e);
        }
//        callbackContext.sendPluginResult(new PluginResult(Status.ERROR));
        return true;

    }
    /*
     * a helper method that completes a request
     */
    private PluginResult completeRequest(final AmazonPurchasingObserver purchaseObserver, final String requestId, final String callbackId) {
        purchaseObserver.addRequest(requestId, callbackId);
        final PluginResult result = new PluginResult(Status.NO_RESULT);
        result.setKeepCallback(true);
        return result;
    }
    public void echo(boolean success, JSONObject msg) {
        if (success){
            callbackContext.success(msg);
        }
        else {
            callbackContext.error(msg);
        }
    }
}




Java Source Code List

com.rahulrav.cordova.amazon.plugin.AmazonInAppException.java
com.rahulrav.cordova.amazon.plugin.AmazonInAppException.java
com.rahulrav.cordova.amazon.plugin.AmazonInAppPurchasing.java
com.rahulrav.cordova.amazon.plugin.AmazonInAppPurchasing.java
com.rahulrav.cordova.amazon.plugin.AmazonItemDataResponse.java
com.rahulrav.cordova.amazon.plugin.AmazonItemDataResponse.java
com.rahulrav.cordova.amazon.plugin.AmazonPurchaseResponse.java
com.rahulrav.cordova.amazon.plugin.AmazonPurchaseResponse.java
com.rahulrav.cordova.amazon.plugin.AmazonPurchaseUpdatesResponse.java
com.rahulrav.cordova.amazon.plugin.AmazonPurchaseUpdatesResponse.java
com.rahulrav.cordova.amazon.plugin.AmazonPurchasingObserver.java
com.rahulrav.cordova.amazon.plugin.AmazonPurchasingObserver.java
com.rahulrav.cordova.amazon.plugin.AmazonReceipt.java
com.rahulrav.cordova.amazon.plugin.AmazonReceipt.java
com.rahulrav.cordova.amazon.plugin.JSONValue.java
com.rahulrav.cordova.amazon.plugin.JSONValue.java
com.rahulrav.cordova.amazon.util.Logger.java
com.rahulrav.cordova.amazon.util.Logger.java
com.rahulrav.cordova.amazon.util.Macros.java
com.rahulrav.cordova.amazon.util.Macros.java
com.squareup.okhttp.Address.java
com.squareup.okhttp.ConnectionPool.java
com.squareup.okhttp.Connection.java
com.squareup.okhttp.HttpResponseCache.java
com.squareup.okhttp.OkHttpClient.java
com.squareup.okhttp.OkResponseCache.java
com.squareup.okhttp.ResponseSource.java
com.squareup.okhttp.Route.java
com.squareup.okhttp.TunnelRequest.java
com.squareup.okhttp.internal.AbstractOutputStream.java
com.squareup.okhttp.internal.Base64.java
com.squareup.okhttp.internal.DiskLruCache.java
com.squareup.okhttp.internal.Dns.java
com.squareup.okhttp.internal.FaultRecoveringOutputStream.java
com.squareup.okhttp.internal.NamedRunnable.java
com.squareup.okhttp.internal.Platform.java
com.squareup.okhttp.internal.StrictLineReader.java
com.squareup.okhttp.internal.Util.java
com.squareup.okhttp.internal.http.AbstractHttpInputStream.java
com.squareup.okhttp.internal.http.AbstractHttpOutputStream.java
com.squareup.okhttp.internal.http.HeaderParser.java
com.squareup.okhttp.internal.http.HttpAuthenticator.java
com.squareup.okhttp.internal.http.HttpDate.java
com.squareup.okhttp.internal.http.HttpEngine.java
com.squareup.okhttp.internal.http.HttpResponseCache.java
com.squareup.okhttp.internal.http.HttpTransport.java
com.squareup.okhttp.internal.http.HttpURLConnectionImpl.java
com.squareup.okhttp.internal.http.HttpsURLConnectionImpl.java
com.squareup.okhttp.internal.http.OkResponseCacheAdapter.java
com.squareup.okhttp.internal.http.OkResponseCache.java
com.squareup.okhttp.internal.http.RawHeaders.java
com.squareup.okhttp.internal.http.RequestHeaders.java
com.squareup.okhttp.internal.http.ResponseHeaders.java
com.squareup.okhttp.internal.http.RetryableOutputStream.java
com.squareup.okhttp.internal.http.RouteSelector.java
com.squareup.okhttp.internal.http.SpdyTransport.java
com.squareup.okhttp.internal.http.Transport.java
com.squareup.okhttp.internal.http.UnknownLengthHttpInputStream.java
com.squareup.okhttp.internal.spdy.IncomingStreamHandler.java
com.squareup.okhttp.internal.spdy.Ping.java
com.squareup.okhttp.internal.spdy.Settings.java
com.squareup.okhttp.internal.spdy.SpdyConnection.java
com.squareup.okhttp.internal.spdy.SpdyReader.java
com.squareup.okhttp.internal.spdy.SpdyStream.java
com.squareup.okhttp.internal.spdy.SpdyWriter.java
io.cordova.hellocordova.HelloCordova.java
org.apache.cordova.App.java
org.apache.cordova.AuthenticationToken.java
org.apache.cordova.CallbackContext.java
org.apache.cordova.Config.java
org.apache.cordova.CordovaActivity.java
org.apache.cordova.CordovaArgs.java
org.apache.cordova.CordovaChromeClient.java
org.apache.cordova.CordovaInterface.java
org.apache.cordova.CordovaPlugin.java
org.apache.cordova.CordovaResourceApi.java
org.apache.cordova.CordovaWebViewClient.java
org.apache.cordova.CordovaWebView.java
org.apache.cordova.DirectoryManager.java
org.apache.cordova.DroidGap.java
org.apache.cordova.ExifHelper.java
org.apache.cordova.ExposedJsApi.java
org.apache.cordova.FileHelper.java
org.apache.cordova.IceCreamCordovaWebViewClient.java
org.apache.cordova.JSONUtils.java
org.apache.cordova.LOG.java
org.apache.cordova.LinearLayoutSoftKeyboardDetect.java
org.apache.cordova.NativeToJsMessageQueue.java
org.apache.cordova.PluginEntry.java
org.apache.cordova.PluginManager.java
org.apache.cordova.PluginResult.java
org.apache.cordova.ScrollEvent.java
org.apache.cordova.Whitelist.java