物流服务–查询物流

我使用的是快递鸟的服务,因为查询物流每天有500次免费请求的就会
地址

但是,这个我要做的功能是快递查询,这里的快递查询是收费的,但是,他提供了沙箱调试,

里面生成的一些都是测试数据

调用后会生成数据

但是,在laravel中,怎么去调用它呢,其实,我觉得,最快的方法就是去下载它的demo
http://www.kdniao.com/documents-demo

下载PHP版的

然后去定义一个路由

//物流查询
$api->post('orders/{order}/express', [AppHttpControllersApiOrderController::class, 'express']);

然后,从它的demo中可以看出来,请请求它,大概分为两步
准备请求参数和发送请求

准备请求参数

$EBusinessID = 'test1731069';//商户ID
$AppKey = 'a85af963-830d-4cc5-ab55-3c2062c50340';//API key
$ReqUrl = 'http://www.kdniao.com/UserCenter/v2/SandBox/SandboxHandler.ashx?action=CommonExcuteInterface';//请求地址(如当前这个是沙箱地址)
//准备请求参数
// 组装应用级参数
$requestData = "{" .
"'CustomerName': ''," .
 "'OrderCode': ''," .
"'ShipperCode': 'YTO'," .
"'LogisticCode': 'YT00003618100'," .
"}";
$datas = array(
'EBusinessID' => $EBusinessID,
'RequestType' => '1002', //免费即时查询接口指令1002/在途监控即时查询接口指令8001/地图版即时查询接口指令8003
'RequestData' => urlencode($requestData),//加密
'DataType' => '2',
);
$datas['DataSign'] = $this->encrypt($requestData, $AppKey);

还有一个单独的加密函数

/**
 * 电商Sign签名生成
 * @param data 内容
 * @param ApiKey ApiKey
 * @return DataSign签名
 */
public function encrypt($data, $ApiKey)
{
    return urlencode(base64_encode(md5($data . $ApiKey)));
}

发送请求

//发送请求--laravel提供的
$result = Http::asForm()->post($ReqUrl, $datas);
//转换成json格式
$retData = json_decode(json_decode($result, true)['ResponseData'], true);
return $this->response->array($retData);

相关推荐: laravel在使用ajax时需要csrf请求头的时候

一般来说 laravel在处理一些请求的时候,是需要带请求头的, 然而,在使用ajax的时候也是需要配置的,但是在每一个ajax请求的时候都特意去写的话,就会显得代码质量很低, 所以,可以在全局配置他 比如,我有一个全局的app.blade文件,可以在里面加上…

版权声明:
作者:linrux
链接:https://www.tot7.cn/technology/php/91.html
来源:阿信博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>