function appleVerify($receipt_data,$orderId = 0)
{/** 21000 App Store不能读取你提供的JSON对象
* 21002 receipt-data域的数据有问题
* 21003 receipt无法通过验证
* 21004 提供的shared secret不匹配你账号中的shared secret
* 21005 receipt服务器当前不可用
* 21006 receipt合法,但是订阅已过期。服务器接收到这个状态码时,receipt数据仍然会解码并一起发送
* 21007 receipt是Sandbox receipt,但却发送至生产系统的验证服务
* 21008 receipt是生产receipt,但却发送至Sandbox环境的验证服务
* $receipt_data 苹果返回的支付凭证
* 正式 : https://buy.itunes.apple.com/verifyReceipt
* 沙箱 : https://sandbox.itunes.apple.com/verifyReceipt*/
$env = App::environment();if($env == 'online'){
//线上环境$url = 'https://buy.itunes.apple.com/verifyReceipt';
}else{
//沙盒环境$url = 'https://sandbox.itunes.apple.com/verifyReceipt';
}$num = 0;while (1){$num ++;$response = Curl::to($url)->withData(array('receipt-data' => $receipt_data))->asJson(true)->post();if($response['status'] != 21005 || $num >= 3){break;
}
}//$response = json_decode($response,true);
// $data['status']==0 成功
// $data['receipt']['in_app'][0]['transaction_id'] 苹果订单号
// $data['receipt']['in_app'][0]['product_id']; 商品价格
// $data['receipt']['in_app'][0]['purchase_date_ms']
$status = 0;$purchaseTime = 0;if ($response['status'] == 0) {$status = 1;try{$inapps = $response['receipt']['in_app'];$purchaseTime = $inapps[0]['purchase_date_ms'];if(!empty($orderId)){foreach ($inapps as $item){if($orderId == $item['transaction_id']){$purchaseTime = $item['purchase_date_ms'];break;
}
}
}
}catch (Exception $e){return ['status'=>0,'purcaseTime' => 0];
}
}return ['status'=>$status,'purcaseTime' => $purchaseTime];
}