所以我正在使用expedia的API,并且已成功处理了许多API请求,但我无法让一个人工作,尽管我已经尝试并搜索了什么可能是问题。
我的功能如下:
global $cid, $apiKey, $sig, $minor_rev;
$url= 'http://api.ean.com/ean-services/rs/hotel/v3/paymentInfo?minorRev='.$minor_rev.'';
$url .= '&cid='.$cid.'';
$url .= '&sig='.$sig.'';
$url .= '&apiKey='.$apiKey.'';
$url .= '&customerUserAgent='.$PaymentTypeData['customerUserAgent'].'';
$url .= '&customerIpAddress='.$PaymentTypeData['customerIpAddress'].'';
$url .= '&customerSessionId='.$PaymentTypeData['customerSessionId'].'';
$url .= '&locale=en_US&_type=json';
$url .= '&currencyCode='.$PaymentTypeData['currencyCode'].'';
$url .= '&hotelId='.$PaymentTypeData['hotelId'].'';
$url .= '&supplierType=E';
$url .= '&rateType=MerchantStandard';
$header[] = "Accept: application/json";
$header[] = "Accept-Encoding: gzip, deflate";
$ch = curl_init();
curl_setopt( $ch, CURLOPT_HTTPHEADER, $header );
curl_setopt($ch,CURLOPT_ENCODING , "gzip");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$result = json_decode(curl_exec($ch), true);
$HotelPaymentResponse = array();
$HotelPaymentResponse[] = $result['HotelPaymentResponse'];
echo '<pre>';
echo $url;
print_r($result);
echo '<h1>GET HOTEL PAYMENT TYPES</h1>';
print_r($HotelPaymentResponse);
echo '</pre>';
return $HotelPaymentResponse;
当我回显URL并在浏览器中尝试它时结果如预期的那样,json形式的付款类型数组....但是对于我的生活让这个进入php数组的回报让我失望
以下是API规范的链接:http://developer.ean.com/docs/payment-types/
是的,我已经查看了经常发布在S.Overflow上的JSON指南......
任何帮助都会非常感激......
PS:
API表示休息将如下:
{
"HotelPaymentResponse": {
"@size": "4",
"@currencyCode": "USD",
"customerSessionId": "0ABAAAC9-9A32-7914-9E32-D7EC7F906769",
"PaymentType": [
{
"code": "AX",
"name": "American Express"
},
{
"code": "DS",
"name": "Discover"
},
{
"code": "CA",
"name": "Master Card"
},
{
"code": "VI",
"name": "Visa"
}
]
}
}
但我的数组正在返回:
Array
(
[0] =>
)
解决:
感谢通过以下评论并研究抛出的错误,505 - 我用Google搜索并发现有人说他们因为网址中的杂散空间而出错。我的错误是因为我的客户用户代理是从php的用户HTTP代理填充...删除并手动输入,现在我可以卷曲响应。
答案 0 :(得分:1)
当您使用true
作为json_decode
的第二个参数时,JSON对象将被解码为PHP关联数组,而不是对象。因此$result->HotelPaymentResponse
应为$result['HotelPaymentResponse']
。
或者不要将第二个参数用于json_decode()
。