gpt4 book ai didi

php - 应用内购买服务器验证

转载 作者:行者123 更新时间:2023-11-29 04:36:25 25 4
gpt4 key购买 nike

我目前正在尝试使用服务器端验证(使用 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";
}

不幸的是,我收到»收据无效:{“status”:21000}«有人能想象问题是什么吗?我什至无法在互联网上找到有关此错误代码的信息。我发现了一个错误描述,但他们说这仅适用于不可续订的订阅。

非常感谢,谨致问候,朱利安

最佳答案

先尝试在 iphone/客户端进行编码,然后将编码后的数据发送到 php/服务器端。 object-c 上的 base64'ing 的输出看起来类似于 PHP 端的 chunk_split(base64_encode($receiptData), 65) 的输出,因此略有不同。

我还尝试使用上面的代码在服务器端对其进行编码,但这似乎也不起作用,即使将所有新行规范化为使用 \r 并删除任何尾随空格在对其进行编码之前。一定是我遗漏了一些小细节,无论如何,只需在 iPhone 端对其进行编码即可省去麻烦。

关于php - 应用内购买服务器验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11013837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com