用于应用内购买的PHP脚本

时间:2010-11-20 16:39:10

标签: php iphone in-app-purchase sandbox

我正在为使用应用内购买功能的iPhone / iPad做一个应用程序。在服务器端,我加载了一个PHP脚本进行收据验证。以下是脚本的内容:

<?php
$receipt = json_encode(array("receipt-data" => $_GET["receipt"]));
// NOTE: use "buy" vs "sandbox" in production.
$url = "https://sandbox.itunes.apple.com/verifyReceipt";
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $url);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_handle, CURLOPT_HEADER, 0);
curl_setopt($curl_handle, CURLOPT_POST, true);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $receipt); 
$response_json = curl_exec($curl_handle);
$response = json_decode($response_json);
curl_close($curl_handle);
print $response->{'status'};
?>

我的问题是响应变量总是空的,我无法收到任何响应。 response_json也是空的,我无法理解哪个是问题。我认为是服务器方面的东西,但我不是php的专家,服务器不在我的直接控制之下。任何人都可以建议我解决问题的方法或测试哪种库存?

感谢的

1 个答案:

答案 0 :(得分:1)

如果curl_exec()失败,它将返回一个布尔值为FALSE。你盲目地将响应提供给json_decode并假设你会得到一些东西。解码布尔值false会给你一个空的var。相反,试试这个:

...
$response_json = curl_exec($curl_handle);
if ($response_json === FALSE) {
    die(curl_error($curl_handle));
}
$response = json_decode($response_json);
...