В последние дни я пытался протестировать свое первое приложение iphone для покупок в приложении. К сожалению, я не могу найти способ поговорить с сервером iTunes, чтобы проверить транзакцию Receipt.
Поскольку это моя первая попытка использования этой технологии, я решил проверить квитанцию непосредственно с iPhone, а не с помощью поддержки сервера. Но после попытки отправить запрос POST с объектом JSON, созданным с использованием API-интерфейса JSON из кода Google, itunes всегда возвращает странный ответ (вместо строки «status = 0», которую я жду).
Вот код, который я использую для подтверждения чека:
- (void)recordTransaction:(SKPaymentTransaction *)transaction {
NSString *receiptStr = [[NSString alloc] initWithData:transaction.transactionReceipt encoding:NSUTF8StringEncoding];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"algo mas",@"receipt-data",nil];
NSString *jsonString = [jsonDictionary JSONRepresentation];
NSLog(@"string to send: %@",jsonString);
NSLog(@"JSON Created");
urlData = [[NSMutableData data] retain];
//NSURL *sandboxStoreURL = [[NSURL alloc] initWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://sandbox.itunes.apple.com/verifyReceipt"]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"will create connection");
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
возможно я что-то забываю в заголовках запроса, но думаю, что проблема в том, какой метод я использую для создания объекта JSON.
Вот как выглядит объект JSON, прежде чем я добавлю его в HTTPBody:
string to send: {"receipt-data":"{\n\t\"signature\" = \"AUYMbhY
...........
D0gIjEuMCI7Cn0=\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}"}
Ответы, которые я получил:
полный ответ {
exception = "java.lang.IllegalArgumentException: не удалось выполнить синтаксический анализ списка свойств при попытке прочитать строку без кавычек. Допустимые символы не найдены. В строке номер: 1, столбец: 0.";
статус = 21002;
}
Большое спасибо за ваше руководство.