0

我一直在搜索,找不到完全相同的副本。尽管操作系统上有很多相关问题,但它们并没有告诉我我在寻找什么。

我是 ac 编码器而不是 php 编码器,所以我只是在伪装自己的方式,因为我的 php 家伙不可用。我有服务器软件可以检查来自苹果的应用内购买收据并对结果进行处理,包括将它们放在我的服务器数据库的表中。

$endpoint="https://sandbox.itunes.apple.com/verifyReceipt";
$response=$objDB->verifyreceiptProcess($endpoint,$postData);
// parse the response data
$data1 = json_decode($response);  //  Response of sandbox

if( $data1->status == 0){  //  Sandbox Status =0
   $insertPurchase[0]["Field"]="user_id";
   $insertPurchase[0]["Value"]=$params['user_id'];
   $insertPurchase[1]["Field"]="product_id";
   $insertPurchase[1]["Value"]=$data1->receipt->product_id;
   $insertPurchase[2]["Field"]="receiptData";
   $insertPurchase[2]["Value"]=substr($params['receipt'],0,50);
   $insertPurchase[3]["Field"]="game_title";
   $insertPurchase[3]["Value"]=$params['game_id'];
   $insertPurchase[4]["Field"]="date_of_purchasing";
   $insertPurchase[4]["Value"]=$data1->receipt->purchase_date;
   $insertPurchase[5]["Field"]="apple_transaction_id";
   $insertPurchase[5]["Value"]=$data1->receipt->transaction_id; 
   $insertPurchase[6]["Field"]="app_item_id";
   $insertPurchase[6]["Value"]=$data1->receipt->app_item_id;
   ....

然后稍后它将查询插入到我的表中以记录购买,并将信息返回给我的应用程序。

问题是现在字段app_item_id不存在。我的猜测是,在提交应用程序之前,不会返回此字段。这会导致我的服务器软件只返回“false”。如果我从 safari 调用 api,则会打印“false”这个词,而不是格式化的 json 结果。

所以我需要错误检查最后一行,以确保该字段存在,然后将其粘贴到 $insertPurchase[6]["Value"] 中,如果没有将 "" 放在那里。

我认为 isset 可以使用,但不明白如何使用它来检测 json 结果中这么深的东西。

对不起,如果这个问题太基本了。

4

1 回答 1

1

这应该有效:

if(isset($data1->receipt->app_item_id))
{
    $insertPurchase[6]["Value"]=$data1->receipt->app_item_id;
} else {
     $insertPurchase[6]["Value"]="";
}
于 2013-10-28T16:04:13.130 回答