/** * Serialize purchase data to json * * @param purchase purchase data * @return json string * @throws JSONException */ private String purchaseToJson(Purchase purchase) throws JSONException { return new JSONStringer() .object() .key("itemType") .value(purchase.getItemType()) .key("orderId") .value(purchase.getOrderId()) .key("packageName") .value(purchase.getPackageName()) .key("sku") .value(purchase.getSku()) .key("purchaseTime") .value(purchase.getPurchaseTime()) .key("purchaseState") .value(purchase.getPurchaseState()) .key("developerPayload") .value(purchase.getDeveloperPayload()) .key("token") .value(purchase.getToken()) .key("originalJson") .value(purchase.getOriginalJson()) .key("signature") .value(purchase.getSignature()) .key("appstoreName") .value(purchase.getAppstoreName()) .endObject() .toString(); }
public void onConsumeFinished(Purchase purchase, IabResult result) { Log.d(TAG, "Consumption finished. Purchase: " + purchase + ", result: " + result); purchase.setSku( SkuManager.getInstance().getSku(purchase.getAppstoreName(), purchase.getSku())); if (result.isFailure()) { Log.e(TAG, "Error while consuming: " + result); UnityPlayer.UnitySendMessage( EVENT_MANAGER, CONSUME_PURCHASE_FAILED_CALLBACK, result.getMessage()); return; } Log.d(TAG, "Consumption successful. Provisioning."); String jsonPurchase; try { jsonPurchase = purchaseToJson(purchase); } catch (JSONException e) { UnityPlayer.UnitySendMessage( EVENT_MANAGER, CONSUME_PURCHASE_FAILED_CALLBACK, "Couldn't serialize the purchase"); return; } UnityPlayer.UnitySendMessage( EVENT_MANAGER, CONSUME_PURCHASE_SUCCEEDED_CALLBACK, jsonPurchase); }