Покупка из приложения подтверждает ошибку чека - PullRequest
2 голосов
/ 25 февраля 2012

Я создал приложение, в котором используется встроенная покупка.Транзакции успешно завершены во время тестирования с моей тестовой учетной записью пользователя, но я получил ошибку при проверке квитанции в песочнице: URL: https://sandbox.itunes.apple.com/verifyReceipt

- (void)recordTransaction:(SKPaymentTransaction *)transaction
{
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

    if ([transaction.payment.productIdentifier isEqualToString:@"com.udayKalangi.hansiMazak.hindijokes1"])
    {
        [[NSUserDefaults standardUserDefaults] setValue:transaction.transactionReceipt forKey:@"proUpgradeTransactionReceipt" ];
        [[NSUserDefaults standardUserDefaults] synchronize];
        NSData *receiptData = [NSData dataWithData:transaction.transactionReceipt];
        NSString *recieptString = [self  base64forData:receiptData];
        NSLog(@"JSON Created");
        urlData = [[NSMutableData data] retain];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"]];
        [request setHTTPMethod:@"POST"];
        [request setHTTPBody:[recieptString dataUsingEncoding:NSUTF8StringEncoding]];
        NSLog(@"will create connection");
        [[NSURLConnection alloc] initWithRequest:request delegate:self];    
    }
}

Я получил ответ:

url data: {"status": 21002, "exception": "java.lang.NullPointerException"}

1 Ответ

0 голосов
/ 23 апреля 2012

Извините, но вы все делаете неправильно.

Во-первых, в соответствии с http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.html необходимо установить данные квитанции base64 как «квитанция-данные», а затем отправить их в формате JSON для проверки. Похоже, вы это не делаете.

Но, скорее всего, вы не должны проверять чек на устройстве, делая это бессмысленно. Вы должны отправить данные на ваш сервер и проверить их в Apple для вас. Проверка на устройстве фактически не обеспечивает проверки. Цель проверки квитанции - убедиться, что она не была подделана, то есть, если кто-то скомпрометирует ваше приложение и сможет предоставить подделанную квитанцию, он сможет обойти проверку той же квитанции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...