物流服务--查询物流

我使用的是快递鸟的服务,因为查询物流每天有500次免费请求的就会
地址
在这里插入图片描述
但是,这个我要做的功能是快递查询,这里的快递查询是收费的,但是,他提供了沙箱调试,
在这里插入图片描述
里面生成的一些都是测试数据
在这里插入图片描述
调用后会生成数据
在这里插入图片描述
但是,在laravel中,怎么去调用它呢,其实,我觉得,最快的方法就是去下载它的demo
http://www.kdniao.com/documents-demo

下载PHP版的
在这里插入图片描述
然后去定义一个路由

//物流查询
$api->post('orders/{order}/express', [\App\Http\Controllers\Api\OrderController::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);

在这里插入图片描述

posted @ 2022-11-20 01:49  小信吖  阅读(214)  评论(0)    收藏  举报