Android Open Source - AmazonInAppPurchasing Amazon Purchasing Observer






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;
/* w  w  w.ja  va  2  s. c  o m*/
import android.content.Context;
import android.util.Log;

import com.amazon.inapp.purchasing.GetUserIdResponse;
import com.amazon.inapp.purchasing.GetUserIdResponse.GetUserIdRequestStatus;
import com.amazon.inapp.purchasing.ItemDataResponse;
import com.amazon.inapp.purchasing.PurchaseResponse;
import com.amazon.inapp.purchasing.PurchaseUpdatesResponse;
import com.amazon.inapp.purchasing.PurchasingObserver;

import org.apache.cordova.PluginResult;
import org.apache.cordova.PluginResult.Status;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.concurrent.ConcurrentHashMap;

/**
 * Provides a basic implementation of the basic {@link PurchasingObserver}
 * 
 * @author Rahul Ravikumar
 * 
 */
public class AmazonPurchasingObserver extends PurchasingObserver {

  private static AmazonPurchasingObserver instance;
  public static AmazonPurchasingObserver getPurchasingObserver(final AmazonInAppPurchasing plugin, final Context context) {
    if (instance == null) {
      instance = new AmazonPurchasingObserver(plugin, context);
    }
    return instance;
  }

  private final AmazonInAppPurchasing plugin;

  // is set to true when the sdk initialization is complete
  private boolean isInitialized;
  private JSONObject sdkAvailableResponse;

  // is the callback requestId used to initialize the PurchaseObserver
  private String initCallbackId;

  // represents the mapping from requestId -> callbackIds
  private final ConcurrentHashMap<String, String> requestCallbacks;

  /**
   * Associate the {@link AmazonPurchasingObserver} with the In-App Purchasing
   * plugin
   */
  private AmazonPurchasingObserver(final AmazonInAppPurchasing plugin, final Context context) {
    super(context);
    this.plugin = plugin;
    requestCallbacks = new ConcurrentHashMap<String, String>();
    isInitialized = false;
    sdkAvailableResponse = null;
  }

  protected AmazonInAppPurchasing getPlugin() {
    return plugin;
  }

  public boolean isAlreadyInitialized() {
    return isInitialized;
  }

  public JSONObject sdkAvailableResponse() {
    return sdkAvailableResponse;
  }

  public void addRequest(final String requestId, final String callbackId) {
    requestCallbacks.put(requestId, callbackId);
  }

  public void registerInitialization(final String initCallbackId) {
    this.initCallbackId = initCallbackId;
  }

  @Override
  public void onGetUserIdResponse(final GetUserIdResponse userIdResponse) {
      if (userIdResponse == null) {
      // should never happen
      throw new AmazonInAppException("'null' userId response.");
    }

    final String requestId = userIdResponse.getRequestId();
    final String callbackId = requestCallbacks.remove(requestId);
    try {
      final JSONObject jobj = new JSONObject();
      final GetUserIdRequestStatus userIdRequestStatus = userIdResponse.getUserIdRequestStatus();
      jobj.put("requestId", userIdResponse.getRequestId());
      jobj.put("userIdRequestStatus", userIdRequestStatus);
      if (userIdRequestStatus == GetUserIdRequestStatus.SUCCESSFUL) {
        jobj.put("userId", userIdResponse.getUserId());
      }
      final PluginResult pluginInResult = new PluginResult(Status.OK, jobj);
      pluginInResult.setKeepCallback(false);
      plugin.webView.sendPluginResult(pluginInResult, callbackId);
    } catch (final JSONException e) {
        Log.d("MINE", e.getMessage());
        final PluginResult pluginInResult = new PluginResult(Status.JSON_EXCEPTION);
        pluginInResult.setKeepCallback(false);
        plugin.webView.sendPluginResult(pluginInResult, callbackId);
    }
  }

  @Override
  public void onItemDataResponse(final ItemDataResponse itemDataResponse) {
    if (itemDataResponse == null) {
      // should never happen
      throw new AmazonInAppException("'null' item data response.");
    }

    final String requestId = itemDataResponse.getRequestId();
    final String callbackId = requestCallbacks.remove(requestId);
    try {
      final AmazonItemDataResponse amazonItemDataResponse = new AmazonItemDataResponse(itemDataResponse);
      final PluginResult pluginResult = new PluginResult(Status.OK, amazonItemDataResponse.toJSON());
      plugin.onMessage(callbackId, pluginResult);

    } catch (final JSONException e) {
      final PluginResult pluginInResult = new PluginResult(Status.JSON_EXCEPTION);
      plugin.onMessage(callbackId, pluginInResult);
    }

  }

  @Override
  public void onPurchaseResponse(final PurchaseResponse purchaseResponse) {
      Log.d("MINE", "Purchase response");
    if (purchaseResponse == null) {
      // should never happen
      throw new AmazonInAppException("'null' purchase response.");
    }

    final String requestId = purchaseResponse.getRequestId();
    final String callbackId = requestCallbacks.remove(requestId);
    try {
      final AmazonPurchaseResponse amazonPurchaseResponse = new AmazonPurchaseResponse(purchaseResponse);
      final PluginResult pluginResult = new PluginResult(Status.OK, amazonPurchaseResponse.toJSON());
        Log.d("MINE", amazonPurchaseResponse.toJSON().toString());
      pluginResult.setKeepCallback(false);
      plugin.webView.sendPluginResult(pluginResult, callbackId);
    } catch (final JSONException e) {
      final PluginResult pluginInResult = new PluginResult(Status.JSON_EXCEPTION);
      pluginInResult.setKeepCallback(false);
      plugin.webView.sendPluginResult(pluginInResult, callbackId);
    }
  }

  @Override
  public void onPurchaseUpdatesResponse(final PurchaseUpdatesResponse purchaseUpdatesResponse) {
    if (purchaseUpdatesResponse == null) {
      // should never happen
      throw new AmazonInAppException("'null' purchase updates response.");
    }

    final String requestId = purchaseUpdatesResponse.getRequestId();
    final String callbackId = requestCallbacks.remove(requestId);
    try {
      final AmazonPurchaseUpdatesResponse amazonPurchaseUpdatesResponse = new AmazonPurchaseUpdatesResponse(purchaseUpdatesResponse);
      final PluginResult pluginResult = new PluginResult(Status.OK, amazonPurchaseUpdatesResponse.toJSON());
      pluginResult.setKeepCallback(false);
      plugin.webView.sendPluginResult(pluginResult, callbackId);
    } catch (final JSONException e) {
      final PluginResult pluginInResult = new PluginResult(Status.JSON_EXCEPTION);
      pluginInResult.setKeepCallback(false);
      plugin.webView.sendPluginResult(pluginInResult, callbackId);
    }
  }

  @Override
  public void onSdkAvailable(final boolean isSdkAvailable) {
    isInitialized = true;
    try {
        final JSONObject jobj = new JSONObject();
        jobj.put("isSdkAvailable", isSdkAvailable);
        // update the sdk available response
        sdkAvailableResponse = jobj;
        Log.d("MINE", jobj.toString());
        final PluginResult pluginInResult = new PluginResult(Status.OK, jobj);
        pluginInResult.setKeepCallback(false);
        plugin.webView.sendPluginResult(pluginInResult, this.initCallbackId);
    } catch (final JSONException e) {
        final PluginResult pluginInResult = new PluginResult(Status.JSON_EXCEPTION);
        pluginInResult.setKeepCallback(false);
        plugin.webView.sendPluginResult(pluginInResult, this.initCallbackId);
    }
  }
}




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