第三方平台对接达达配送

第三方平台对接达达配送

一.百度搜索达达开放平台注册好开发者账号,将开发者的app_key和app_secret填入到第三方平台数据库中
二.封装公共类调用

    private static $dmerchhant;  //注册商户
    private static $daddstore;  //创建门店
    private static $update;  //门店更新
    private static $recharge;  //充值
    private static $query;  //充值
    private static $dcitys;  //获取城市信息
    private static $reasons;  //取消订单原因列表
    private static $addOrder;    //下单
    private static $reAddOrder;    //重新下单
    private static $formalCancel;    //商家取消订单
    private static $rider;    //骑手信息
    private static $accept;    //模拟接单
    private static $fetch;    //模拟接单
    private static $finish;    //模拟完成
    private static $cancel;    //模拟取消
    private static $expire;    //模拟过期
    private static $back;    //模拟拒绝返还商品

    public function __construct()
    {
        /*self::$dmerchhant = 'http://newopen.qa.imdada.cn/merchantApi/merchant/add';
        self::$daddstore = 'http://newopen.qa.imdada.cn/api/shop/add';
        self::$recharge = 'http://newopen.qa.imdada.cn/api/recharge';
        self::$query = 'http://newopen.qa.imdada.cn/api/balance/query';
        self::$dcitys = 'http://newopen.qa.imdada.cn/api/cityCode/list';
        self::$reasons = 'http://newopen.qa.imdada.cn/api/order/cancel/reasons';
        self::$addOrder = 'http://newopen.qa.imdada.cn/api/order/addOrder';
        self::$formalCancel = 'http://newopen.qa.imdada.cn/api/order/formalCancel';
        self::$rider = 'http://newopen.qa.imdada.cn/api/order/status/query';
        self::$accept = 'http://newopen.qa.imdada.cn/api/order/accept';
        self::$fetch = 'http://newopen.qa.imdada.cn/api/order/fetch';
        self::$finish = 'http://newopen.qa.imdada.cn/api/order/finish';
        self::$cancel = 'http://newopen.qa.imdada.cn/api/order/cancel';
        self::$expire = 'http://newopen.qa.imdada.cn/api/order/expire';
        self::$back = 'http://newopen.qa.imdada.cn/api/order/delivery/abnormal/back';
        self::$reAddOrder = 'http://newopen.qa.imdada.cn/api/order/reAddOrder';*/
        self::$dmerchhant = 'http://newopen.imdada.cn/merchantApi/merchant/add';
        self::$daddstore = 'http://newopen.imdada.cn/api/shop/add';
        self::$recharge = 'http://newopen.imdada.cn/api/recharge';
        self::$query = 'http://newopen.imdada.cn/api/balance/query';
        self::$dcitys = 'http://newopen.imdada.cn/api/cityCode/list';
        self::$reasons = 'http://newopen.imdada.cn/api/order/cancel/reasons';
        self::$addOrder = 'http://newopen.imdada.cn/api/order/addOrder';
        self::$formalCancel = 'http://newopen.imdada.cn/api/order/formalCancel';
        self::$rider = 'http://newopen.imdada.cn/api/order/status/query';
        self::$accept = 'http://newopen.imdada.cn/api/order/accept';
        self::$fetch = 'http://newopen.imdada.cn/api/order/fetch';
        self::$finish = 'http://newopen.imdada.cn/api/order/finish';
        self::$cancel = 'http://newopen.imdada.cn/api/order/cancel';
        self::$expire = 'http://newopen.imdada.cn/api/order/expire';
        self::$back = 'http://newopen.imdada.cn/api/order/delivery/abnormal/back';
        self::$reAddOrder = 'http://newopen.imdada.cn/api/order/reAddOrder';
        self::$update = 'http://newopen.imdada.cn/api/shop/update';
    }
  /*
     *公共请求接口
     * app_key	String	是	应用Key,对应开发者账号中的app_key
       signature	String	是	签名Hash值,参见:接口签名规则
       timestamp	String	是	时间戳,单位秒,即unix-timestamp
       format	String	是	请求格式,暂时只支持json	json
       v       	String	是	API版本	1.0
      source_id	String	是	商户编号(创建商户账号分配的编号)	测试环境默认为:73753
      body	String	是	业务参数,JSON字符串,详见具体的接口文档
      path 是请求的链接
     */
    public function Currency($app_key, $app_secret, $source_id, $path, $body)
    {
        $headers = array("Content-type: application/json;charset='utf-8'", "Accept: application/json");
        $data = array();
//          $source_id = '73753';
        $data['format'] = 'json';
        $data['timestamp'] = time();
        $data['app_key'] = $app_key;
        $data['v'] = '1.0';
        $data['source_id'] = $source_id;
        $data['body'] = json_encode($body);
        $data['signature'] = $this->Sign($app_key, $app_secret, $data);
        $newdata = json_encode($data);
        $res = $this->curl_post($path, $headers, $newdata);
        return $res;
    }
     function curl_post($url, $headers, $content)
    {
        $ch = curl_init();
        if (substr($url, 0, 5) == 'https') {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  // 从证书中检查SSL加密算法是否存在
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
        $response = curl_exec($ch);
        if ($error = curl_error($ch)) {
            die($error);
        }
        curl_close($ch);
        return $response;
    }
      //签名
    private function Sign($app_key, $app_secret, $data)
    {
        ksort($data);
        $str = '';
        foreach ($data as $key => $val) {
            $str .= $key . $val;
        }
        $str = $app_secret . $str . $app_secret;
        $newstr = md5($str);
        $newstr = strtoupper($newstr);
        return $newstr;
    }

具体body内容根据实际情况传入即可例如:

//余额查询
    public function query($app_key, $app_secret, $source_id, $data)
    {
        $path = self::$query;
        $res = $this->Currency($app_key, $app_secret, $source_id, $path, $data);
        return $res;
    }
发布了6 篇原创文章 · 获赞 5 · 访问量 455

猜你喜欢

转载自blog.csdn.net/CS__Love/article/details/104082919