- (void) paymentQueue: (SKPaymentQueue *) queue updatedTransactions: (NSArray *) transactions
SKPaymentTransactionStatePurchased
{ ..... case SKPaymentTransactionStatePurchased: if ([transaction.payment.productIdentifier isEqualToString:PRICEPLAN1]) { //[server PurchasedClinicalToDoList]; [self completeTransaction: transaction]; } [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; break; }
5: GETTING VALIDATE
- (void) completeTransaction: (SKPaymentTransaction *)transaction { // NSString* receiptString = [[NSString alloc] initWithString:transaction.payment.productIdentifier]; NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL]; NSData *receipt = [NSData dataWithContentsOfURL:receiptURL]; NSString *jsonObjectString = [receipt base64EncodedStringWithOptions:0]; [self validateViaOwnServer:jsonObjectString]; [self validateDirectly: receipt]; }
6.ValidateViaServerSideCodes:
-(void)validateViaOwnServer :(NSString*)receipt { NSString* BASEURl = @"XXXXXXXXX/XXX/XXXX"; NSString *TestReceipt= [BASEURl stringByAppendingString:@"/InApp/iOS/updatePurchase"]; NSDictionary *params = @ {@"receipt" :receipt]}; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; [manager TestReceipt parameters:params success:^(AFHTTPRequestOperation *operation, id responseData) { } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }]; }
7. CHECK VALID:
-(void) validateDirectly :(NSData*)receipt {
8: SERVER HEART CODES (JAVA)
String URL = " https://buy.itunes.apple.com/verifyReceipt ";
try { URL url = new URL(URL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); //conn.setRequestProperty("Content-Type", "text/plain"); conn.setRequestProperty("Accept", "application/json"); conn.setRequestProperty("Content-Type", "application/json"); String input = "{\"receipt-data\": \""+receiptData+"\", \"password\": \"69744THESECRETKEYXXX\"}"; OutputStream os = conn.getOutputStream(); os.write(input.getBytes()); os.flush(); if (conn.getResponseCode() != 200) { throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode()); } BufferedReader br = new BufferedReader(new InputStreamReader( (conn.getInputStream()))); String output; System.out.println("Output from Server .... \n"); while ((output = br.readLine()) != null) { appleJson += output; // System.out.println(output); } conn.disconnect(); appleReceipt = gson.fromJson(appleJson, AppleReceipt.class); purchaseStartDate = appleReceipt.getReceipt().getIn_app().get(1).getOriginal_purchase_date_ms(); expiryDate = appleReceipt.getReceipt().getIn_app().get(1).getExpires_date_ms(); // System.out.println("Apple receipt expiry date="+appleReceipt.getReceipt().getIn_app().get(1).getExpires_date_ms()); // System.out.println("Apple receipt expiry date="+appleReceipt.getReceipt().getIn_app().get(1).getExpires_date_ms());
Yogesh lolusare
source share