第三方平台对接达达配送
一.百度搜索达达开放平台注册好开发者账号,将开发者的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;
}