• AppStore 内购验证的方法


    AppStore增加了验证内购(In App Purchasement)的方法, 就是苹果提供一个url地址, 开发测试用:

    https://sandbox.itunes.apple.com/verifyReceipt

    产品用:

    https://buy.itunes.apple.com/verifyReceipt

    当购买成功时, 会得到苹果返回的一个收据(receipt), 苹果推荐的方法是将收据发给开发者的server, 由server像上述地址post http消息, 进行验证, 苹果将结果返回.到底是真正的购买还是虚假的购买.

    没有自己server的小伙伴可以用app进行发送, 代码如下.

    #define ITMS_SANDBOX_VERIFY_RECEIPT_URL     @"https://sandbox.itunes.apple.com/verifyReceipt"
    
    #pragma mark - VerifyFinishedTransaction
    -(void)verifyFinishedTransaction:(SKPaymentTransaction *)transaction{
        if(transaction.transactionState == SKPaymentTransactionStatePurchased){
            NSString *transactionIdentifier =  transaction.transactionIdentifier;
            NSData *transactionReceipt  = transaction.transactionReceipt;
            //将transactionIdentifer和加密后的transactionReceipt数据发送给server端
            
            NSString* receipent = [NSString stringWithFormat:@"%s", transactionReceipt.bytes];
            
            NSLog(@"receipent = %@", receipent);
            
            // 在app上做验证, 仅用于测试
            NSString *payload = [NSString stringWithFormat:@"{"receipt-data" : "%@", "password" : "%@"}",
                                 receipent, transactionIdentifier];
            NSData *payloadData = [payload dataUsingEncoding:NSUTF8StringEncoding];
            NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:ITMS_SANDBOX_VERIFY_RECEIPT_URL]];
            [request setHTTPMethod:@"POST"];
            [request setHTTPBody:payloadData];
            NSError* err;
            NSURLResponse *theResponse = nil;
            NSData *data=[NSURLConnection sendSynchronousRequest:request
                                               returningResponse:&theResponse
                                                           error:&err];
            NSError *jsonParsingError = nil;
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&jsonParsingError];
            NSLog(@"%@", dict);
            NSLog(@"done");
            }
    }
  • 相关阅读:
    Android开发环境
    安卓学习
    Shuffle'm Up POJ
    Duizi and Shunzi HDU
    Find a path HDU
    Cyclic Nacklace HDU
    Keywords Search HDU
    HDU 1495 非常可乐
    J
    Fire Game FZU
  • 原文地址:https://www.cnblogs.com/dqshll/p/3731386.html
Copyright © 2020-2023  润新知