我目前正在嘗試使用服務器端驗證(在PHP中)使用AppStore驗證我的應用內購買回執。在應用程序購買服務器驗證
這裏是我的代碼:
// ViewController.m:
NSString *receiptDataString = [[NSString alloc] initWithData:[transaction transactionReceipt] encoding:NSUTF8StringEncoding];
NSString *verificationDataString = [NSString stringWithFormat:@"receiptData=%@", receiptDataString];
NSData *verificationData = [NSData dataWithBytes:[verificationDataString UTF8String] length:[verificationDataString length]];
NSMutableURLRequest *verificationRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://update.csundm.de/inapp/verifyReceipt.php"]];
[verificationRequest setHTTPMethod:@"POST"];
[verificationRequest setHTTPBody:verificationData];
NSData *verificationResultData = [NSURLConnection sendSynchronousRequest:verificationRequest returningResponse:nil error:nil];
NSString *verificationResultString = [[NSString alloc] initWithData:verificationResultData encoding:NSUTF8StringEncoding];
NSLog(@"%@", verificationResultString);
********************************************************
// verifyReceipt.php:
$receiptData = $_POST["receiptData"];
$receiptDataEncoded = base64_encode($receiptData);
$receiptJSONString = json_encode(Array("receipt-data" => $receiptDataEncoded));
$contextData = array (
"method" => "POST",
"header" => "Connection: close\r\n".
"Content-Length: ".strlen($receiptJSONString)."\r\n",
"content" => $receiptJSONString);
$context = stream_context_create (array ('https' => $contextData));
$result = file_get_contents ("https://sandbox.itunes.apple.com/verifyReceipt", false, $context);
$jsonResult = json_decode($result);
if ($jsonResult -> {"status"} != 0) {
echo "Receipt invalid: ".$result;
}
else {
echo "Receipt valid";
}
不幸的是我得到»收據無效:{‘地位’:21000}«任何人能想象的問題可能是什麼?我甚至無法在互聯網上找到有關此錯誤代碼的信息。我發現了一個錯誤說明,但他們表示這隻適用於不可續訂訂閱。
非常感謝,用親切的問候,朱利安
正如我已經在我的問題中寫道:我知道它關於自動更新訂閱。但我想知道與他人的問題。爲什麼它不會讀取我的JSON對象?有人可以檢查我的代碼嗎? –