我一直在搜索,但找不到完全相同的内容。虽然操作系统上有很多相关的问题,但它们并没有告诉我我到底在想什么。
我是一名编程员,而不是一个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;
....
然后它将query_inserts插入到我的表中以记录购买,并将信息返回给我的应用程序。
问题是,现在 app_item_id 字段不存在。我的猜测是,在提交应用程序之前,不会返回此字段。这导致我的服务器软件只返回“false”。如果我从safari调用api,则打印“false”一词而不是格式化的json结果。
所以我需要错误检查最后一行,以确保该字段存在,然后将其粘贴在$ insertPurchase [6] [“Value”]中,如果没有放在那里。
我假设可以使用isset,但是不明白如何使用它来检测json结果中的这些内容。
很抱歉,如果这个问题太基础了。
答案 0 :(得分:1)
这应该有效:
if(isset($data1->receipt->app_item_id))
{
$insertPurchase[6]["Value"]=$data1->receipt->app_item_id;
} else {
$insertPurchase[6]["Value"]="";
}