最近业务上需要查询快递,所以确定了使用快递100的api
所以我们调用接口,查看文档是这样的
$com="快递公司编号";
$num="快递单号";
$post_data = array();
$post_data["customer"] = '客户编号';
$key= '客户key';
$param["com"] = $com;
$param["num"] = $num;
$post_data["param"] = json_encode($param);
$url='http://poll.kuaidi100.com/poll/query.do';
$post_data["sign"] = md5($post_data["param"].$key.$post_data["customer"]);
$post_data["sign"] = strtoupper($post_data["sign"]);
$o="";
foreach ($post_data as $k=>$v)
{
$o.= "$k=".urlencode($v)."&"; //默认UTF-8编码格式
}
$post_data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$result = curl_exec($ch);
$data = str_replace("\"",'"',$result);
$data = json_decode($result,true);
这样打印出来会导致数据是true或者是1
原因是$result = curl_exec($ch);这个curl执行函数如果没有设置返回值的情况下返回的是true或false
所以必须加上这个设置项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
测试结果完美解决,可以拿到物流接口返回数据。