php对接快递鸟

对接快递鸟

功能:通过快递查询物流信息和轨迹订阅

在这里插入图片描述

封装请求代码
<?php

namespace App\Packages\Kdniao\src;

class Base
{

    private $appKey;// 快递鸟的AppKey
    private $EBusinessID;// 快递鸟的EBusinessID
    private $dataSign;// 数据内容签名,具体算法请参考API文档;
    private $dataType;// 返回数据类型:2-json;
    private $sort;//轨迹按时间排序,0-升序,1-降序,默认0;
    //即时物流查询
    const API_SEL_URL = 'https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx';
    //轨迹订阅
    const API_TRACK_URL = 'https://api.kdniao.com/api/dist';


    public function __construct()
    {
        $this->init();
    }

    /**
     * 初始化
     */
    public function init()
    {
        $this->appKey = config('kdniao.appKey');
        $this->EBusinessID = config('kdniao.EBusinessID');;
        $this->dataSign = '数据签名'; // 数据内容签名,具体算法请参考API文档;
        $this->dataType = '2'; // 返回数据类型:2-json;
        $this->sort = 1;//轨迹按时间排序,0-升序,1-降序,默认0;
    }

    /**
     * @param $requestData
     * @param $type
     * @return void
     * 重组请求参数
     */
    public function requestData($requestData, $type)
    {
        //数组字符串
        $requestData = json_encode($requestData);

        //签名:把(请求体(未编码)+ApiKey)进行MD5加密(32位小写),然后Base64编码,最后进行URL(utf-8)编码
        $sign = urlencode(base64_encode(md5($requestData . $this->appKey)));

        //公共参数
        $data = [
            'EBusinessID' => $this->EBusinessID, // 商家ID
            'RequestType' => $type, // 请求指令类型,接口编码
            'DataSign' => $this->dataSign, // 数据内容签名,具体算法请参考API文档
            'DataType' => $this->dataType, // 返回数据类型:2-json
            'RequestData' => urlencode($requestData),
            'DataSign' => $sign
        ];

        return $data;
    }


    /**
     * @param $data
     * @return void
     * 即时查询
     * 接口指令    8001
     * 批量请求    不支持,并发不超过15次/S
     * 计费规则    40个自然日内同一(物流编码+单号)不限查询次数,计费1单;
     * 查询无轨迹不计费
     * 轨迹排序    默认按照发生时间的升序排列
     */
    public function sel($data)
    {
        //请求参数
        $requestData = [
            'ShipperCode' => $data['express_company_code'],//快递公司编码
            'LogisticCode' => $data['express_num'],//快递单号
            'Sort' => $this->sort,//轨迹按时间排序,0-升序,1-降序,默认0
        ];

        if (isset($data['phone'])) {
            //寄件人or收件人 手机号后四位,顺丰必填
            $requestData['CustomerName'] = substr($data['phone'], -4);
        }

       //重组请求参数,8001是接口编码
        $data = self::requestData($requestData, '8001');

        load_helper('Network');
        $res = http_post(self::API_SEL_URL, $data);
        return $res;
    }


    /**
     * @param $data
     * @return void
     * 轨迹订阅
     * 接口指令    8008
       批量请求    不支持,并发不超过30次/S
       计费规则    40个自然日内1个物流编码+1个单号不限查询次数,订阅成功即计算使用1单
       推送周期    0.5~4小时
       接口地址    https://api.kdniao.com/api/dist
     */
    public function track($data)
    {
        //请求参数
        $requestData = [
            'ShipperCode' => $data['express_company_code'],//快递公司编码
            'LogisticCode' => $data['express_num'],//快递单号
            'Sort' => $this->sort,//轨迹按时间排序,0-升序,1-降序,默认0
        ];

        if (isset($data['phone'])) {
            //寄件人or收件人 手机号后四位,顺丰必填
            $requestData['CustomerName'] = substr($data['phone'], -4);
        }

        //自定义回调地址,物流轨迹优先按此地址推送,重点:生效前提:官网必须有已配置的回调地址
        if (isset($data['callBackUrl'])) {
            $requestData['CallbackUrl'] = $data['callBackUrl'];
        }

        //重组请求参数,8008是接口编码
        $data = self::requestData($requestData, '8008');

        load_helper('Network');
        $res = http_post(self::API_TRACK_URL, $data);
        return $res;
    }
}
config配置文件
<?php
return [
    'appKey' => env('KDNIAO_APP_KEY', ''),//快递鸟提供的appkey
    'EBusinessID' => env('KDNIAO_EBUSINESS_ID', ''),//快递鸟提供的EBusinessID
];
发起请求
$kdNiao = new \App\Packages\Kdniao\src\Base();

//即时查询
 $data = [
     'express_company_code' => 'SF',//快递公司编码,参考官方提供的编码地址https://www.yuque.com/kdnjishuzhichi/dfcrg1/mza2ln
     'express_num' => 'xxxxxx',//快递单号
     'phone' => 'xxxxxx'//收货人或者寄货人手机号码,顺丰必填,其他除外
 ];
 $res = $kdNiao->sel($data);
 
 
 
//轨迹订阅
$data = [
    'express_company_code' => 'SF',
    'express_num' => 'xxxxxx',
    'phone' => 'xxxxx',//顺丰必填,其他除外
    'callBackUrl' => 'http://xxxx.com'//回调地址
];
$res = $kdNiao->track($data);
请求结果如下

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值