私は、最初のアプリ内購入 iPhone アプリケーションをテストしようとして、過去数日間を過ごしてきました。残念ながら、iTunes サーバーと通信して transactionReceipt を確認する方法が見つかりません。
このテクノロジーを試すのは初めてなので、サーバー サポートを使用する代わりに、iPhone から直接レシートを確認することにしました。しかし、Google コードから JSON API を使用して作成された JSON onobject を使用して POST 要求を送信しようとすると、iTunes は常に奇妙な応答を返します (代わりに、「ステータス = 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 オブジェクトを作成するために使用する方法に問題があると思います。
HTTPBody に追加する前の JSON オブジェクトは次のようになります。
string to send: {"receipt-data":"{\n\t\"signature\" = \"AUYMbhY
...........
D0gIjEuMCI7Cn0=\";\n\t\"pod\" = \"100\";\n\t\"signing-status\" = \"0\";\n}"}
私が得た応答:
完全な応答 { 例外 = "java.lang.IllegalArgumentException: 引用符で囲まれていない文字列を読み取ろうとしたときに、プロパティ リストの解析に失敗しました。使用できる文字が見つかりませんでした。行番号: 1、列: 0."; ステータス = 21002; }
ご指導ありがとうございました。