public static Transaction convertJSONPurchaseToTransaction(String inAppPurchaseData) throws JSONException { if (inAppPurchaseData == null) { // this can happen when purchase was cancelled, ie for test product id 'android.test.canceled' throw new JSONException("inAppPurchaseData was null."); } JSONObject object = new JSONObject(inAppPurchaseData); Transaction transaction = new Transaction(); transaction.setStoreName(PurchaseManagerConfig.STORE_NAME_ANDROID_GOOGLE); if (object.has(PURCHASE_TOKEN)) { transaction.setTransactionData(object.getString(PURCHASE_TOKEN)); } if (object.has(ORDER_ID)) { transaction.setOrderId(object.getString(ORDER_ID)); } transaction.setIdentifier(object.getString(PRODUCT_ID)); transaction.setPurchaseTime(new Date(object.getLong(PURCHASE_TIME))); if (object.has(PURCHASE_STATE)) { fillTransactionForPurchaseState(transaction, object.getInt(PURCHASE_STATE)); } return transaction; }
/** Just used for testing... */ public static void main(String[] args) { // test in sandbox-mode PurchaseVerifieriOSApple verifier = new PurchaseVerifieriOSApple(true); // our sample receipt for the sandbox (returns error 21004) String receipt = "{\n" + "\"signature\" = \"AluGxOuMy+RT1gkyFCoD1i1KT3KUZl+F5FAAW0ELBlCUbC9dW14876aW0OXBlNJ6pXbBBFB8K0LDy6LuoAS8iBiq3529aRbVRUSKCPeCDZ7apC2zqFYZ4N7bSFDMeb92wzN0X/dELxlkRH4bWjO67X7gnHcN47qHoVckSlGo/mpbAAADVzCCA1MwggI7oAMCAQICCGUUkU3ZWAS1MA0GCSqGSIb3DQEBBQUAMH8xCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEzMDEGA1UEAwwqQXBwbGUgaVR1bmVzIFN0b3JlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA5MDYxNTIyMDU1NloXDTE0MDYxNDIyMDU1NlowZDEjMCEGA1UEAwwaUHVyY2hhc2VSZWNlaXB0Q2VydGlmaWNhdGUxGzAZBgNVBAsMEkFwcGxlIGlUdW5lcyBTdG9yZTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMrRjF2ct4IrSdiTChaI0g8pwv/cmHs8p/RwV/rt/91XKVhNl4XIBimKjQQNfgHsDs6yju++DrKJE7uKsphMddKYfFE5rGXsAdBEjBwRIxexTevx3HLEFGAt1moKx509dhxtiIdDgJv2YaVs49B0uJvNdy6SMqNNLHsDLzDS9oZHAgMBAAGjcjBwMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUNh3o4p2C0gEYtTJrDtdDC5FYQzowDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBSpg4PyGUjFPhJXCBTMzaN+mV8k9TAQBgoqhkiG92NkBgUBBAIFADANBgkqhkiG9w0BAQUFAAOCAQEAEaSbPjtmN4C/IB3QEpK32RxacCDXdVXAeVReS5FaZxc+t88pQP93BiAxvdW/3eTSMGY5FbeAYL3etqP5gm8wrFojX0ikyVRStQ+/AQ0KEjtqB07kLs9QUe8czR8UGfdM1EumV/UgvDd4NwNYxLQMg4WTQfgkQQVy8GXZwVHgbE/UC6Y7053pGXBk51NPM3woxhd3gSRLvXj+loHsStcTEqe9pBDpmG5+sk4tw+GK3GMeEN5/+e1QT9np/Kl1nj+aBw7C0xsy0bFnaAd1cSS6xdory/CUvM6gtKsmnOOdqTesbp0bs8sn6Wqs0C9dgcxRHuOMZ2tm8npLUm7argOSzQ==\";\n" + "\"purchase-info\" = \"ewoJInF1YW50aXR5IiA9ICIxIjsKCSJwdXJjaGFzZS1kYXRlIiA9ICIyMDExLTEwLTEyIDIwOjA1OjUwIEV0Yy9HTVQiOwoJIml0ZW0taWQiID0gIjQ3MjQxNTM1MyI7CgkiZXhwaXJlcy1kYXRlLWZvcm1hdHRlZCIgPSAiMjAxMS0xMC0xMiAyMDoxMDo1MCBFdGMvR01UIjsKCSJleHBpcmVzLWRhdGUiID0gIjEzMTg0NTAyNTAwMDAiOwoJInByb2R1Y3QtaWQiID0gImNvbS5kYWlseWJ1cm4ud29kMW1vbnRoIjsKCSJ0cmFuc2FjdGlvbi1pZCIgPSAiMTAwMDAwMDAwOTk1NzYwMiI7Cgkib3JpZ2luYWwtcHVyY2hhc2UtZGF0ZSIgPSAiMjAxMS0xMC0xMiAyMDowNTo1MiBFdGMvR01UIjsKCSJvcmlnaW5hbC10cmFuc2FjdGlvbi1pZCIgPSAiMTAwMDAwMDAwOTk1NzYwMiI7CgkiYmlkIiA9ICJjb20uZGFpbHlidXJuLndvZCI7CgkiYnZycyIgPSAiMC4wLjgiOwp9\";\n" + "\"environment\" = \"Sandbox\";\n" + "\"pod\" = \"100\";\n" + "\"signing-status\" = \"0\";\n" + "}\n"; // build a sample transaction (only receipt is important for validation) Transaction transaction = new Transaction(); transaction.setTransactionData(receipt); if (verifier.isValid(transaction)) { System.out.println("Purchase is VALID!"); } } }
public static Transaction transactionFullEditionEuroGooglePlaySandbox() { Transaction transaction = new Transaction(); transaction.setPurchaseCostCurrency("EUR"); transaction.setPurchaseCost(100); transaction.setStoreName(PurchaseManagerConfig.STORE_NAME_ANDROID_GOOGLE); transaction.setPurchaseTime(new Date()); transaction.setIdentifier(PRODUCT_IDENTIFIER_FULL_EDITION); transaction.setTransactionData("minodojglppganfbiedlabed.AO-J1OyNtpooSraUdtKlZ_9gYs0o20ZF_0ryTNACmvaaaG5EwPX0hPruUdGbE3XejoXYCYzJA2xjjAxrDLFhmu9WC4fvTDNL-RDXCWjlHKpzLOigxCr1QhScXR8uXtX8R94iV6MmMHqD"); return transaction; }
Transaction transaction = new Transaction(); transaction.setIdentifier(purchase.getSku()); transaction.setOrderId(purchase.getOrderId());
/** Converts a Receipt to our transaction object. */ static Transaction convertReceiptToTransaction(int i, String requestId, Receipt receipt, final UserData userData) { // build the transaction from the purchase object Transaction transaction = new Transaction(); transaction.setIdentifier(receipt.getSku()); transaction.setOrderId(receipt.getReceiptId()); transaction.setStoreName(PurchaseManagerConfig.STORE_NAME_ANDROID_AMAZON); transaction.setRequestId(requestId); transaction.setUserId(userData.getUserId()); transaction.setPurchaseTime(receipt.getPurchaseDate()); transaction.setPurchaseText("Purchased: " + receipt.getSku().toString()); // transaction.setPurchaseCost(receipt.getSku()); // TODO: GdxPay: impl. // parsing of COST + CURRENCY via skuDetails.getPrice()! // transaction.setPurchaseCostCurrency(null); if (receipt.isCanceled()) { // order has been refunded or cancelled transaction.setReversalTime(receipt.getCancelDate()); // transaction.setReversalText(receipt..getPurchaseState() == 1 ? // "Cancelled" : "Refunded"); } else { // still valid! transaction.setReversalTime(null); transaction.setReversalText(null); } transaction.setTransactionData(receipt.toJSON().toString()); // transaction.setTransactionDataSignature(purchase.getSignature()); return transaction; }
Transaction transaction = new Transaction();
Transaction transaction = new Transaction();