475 lines
18 KiB
PHP
475 lines
18 KiB
PHP
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
require "vendor/zto/zopsdk-php/ZopClient.php";
|
|
require "vendor/zto/zopsdk-php/ZopProperties.php";
|
|
require "vendor/zto/zopsdk-php/ZopRequest.php";
|
|
|
|
use zop\ZopClient;
|
|
use zop\ZopRequest;
|
|
use zop\ZopProperties;
|
|
|
|
/**
|
|
* 中通接口
|
|
* https://zop.zto.com/apiDoc/
|
|
*
|
|
* @extends CI_Model
|
|
*/
|
|
class Zto_model extends MY_Model {
|
|
|
|
protected $table = 'ship_order';
|
|
|
|
public function request($path='', $params=[])
|
|
{
|
|
$conf = $this->config->item('zto');
|
|
// ZopProperties类的构造方法接收两个参数,分别是companyid和key,都需要注册中通开放平台后到个人中心查看
|
|
$properties = new ZopProperties($conf['id'], $conf['key']);
|
|
$client = new ZopClient($properties);
|
|
$request = new ZopRequest();
|
|
$request->setUrl($conf['host'].$path);
|
|
if(isset($params['company_id'])){
|
|
$params['company_id'] = $conf['id'];
|
|
}
|
|
foreach ($params as $key=>$val) {
|
|
$request->addParam($key,$val);
|
|
}
|
|
$ret = $client->execute($request);
|
|
return json_decode($ret,true);
|
|
}
|
|
|
|
//寄送样品并获取运单号
|
|
public function shipSample($address=[])
|
|
{
|
|
$data = [
|
|
'orderGroup'=>[
|
|
"partnerCode"=> $address['trade_id'],//合作商订单号,为调用方生成,可以传订单号、主键、UUID等
|
|
"type"=> 1,//订单类型 1 普通订单(线上),2线下联系订单 默认1
|
|
"tradeId"=> $address['trade_id'],//交易号,由合作商平台产生。
|
|
"mailNo"=> "",//运单号(有则提供,线下联系订单必须提供)
|
|
"sender"=> [
|
|
"id"=> strval($address['user_id']),
|
|
"name"=> $address['name'],
|
|
"company"=> "",
|
|
"mobile"=> $address['tel'],
|
|
"phone"=> "",
|
|
"prov"=> $address['province'],
|
|
"city"=> $address['city'],
|
|
"county"=> $address['district'],
|
|
"address"=> $address['address'],
|
|
"zipcode"=> ""
|
|
],
|
|
"receiver"=> [
|
|
"id"=> "1",
|
|
"name"=> "有哈科技收样组",
|
|
"company"=> " ",
|
|
"mobile"=> "17321358370",
|
|
"phone"=> "",
|
|
"prov"=> "上海市",
|
|
"city"=> "上海市",
|
|
"county"=> "嘉定区",
|
|
"address"=> "兴贤路1180号5栋208室",
|
|
"zipcode"=> ""
|
|
],
|
|
"items"=> [
|
|
[
|
|
"id"=> "1",
|
|
"name"=> "唾液样本",
|
|
"category"=> "电子产品",
|
|
"material"=> "玻璃",
|
|
"size"=> "12,11,23",
|
|
"weight"=> "1",
|
|
"unitprice"=> "80",
|
|
"quantity"=> "1",
|
|
"remark"=> ""
|
|
]
|
|
],
|
|
"starttime"=> date('Y-m-d'),
|
|
"endtime"=> date('Y-m-d'),
|
|
"weight"=> 1,
|
|
"size"=> "12,23,11",
|
|
"quantity"=> 1,
|
|
"price"=> 80,
|
|
"freight"=> 10,
|
|
"premium"=> 0,
|
|
"packCharges"=> 0,
|
|
"otherCharges"=> 0,
|
|
"orderSum"=> 0,
|
|
"collectMoneytype"=> "CNY",
|
|
"collectSum"=> 1,
|
|
"remark"=> "玻璃制品,请轻拿轻放"
|
|
]
|
|
];
|
|
//echo json_encode($data);die;
|
|
//散客预约订单
|
|
$ret = $this->request('OpenOrderCreate',$data);
|
|
/*
|
|
* 返回示例
|
|
* {
|
|
"result": {
|
|
"esGroup": null,
|
|
"markGroup": null,
|
|
"orderCode": "200308000008003103"
|
|
},
|
|
"message": "操作成功",
|
|
"status": true,
|
|
"statusCode": "0"
|
|
}
|
|
*/
|
|
//print_r($ret);
|
|
if($ret['statusCode'] == '0' && isset($ret['result']['orderCode'])){
|
|
$row_base = [
|
|
'user_id'=>$address['user_id'],// 中通订单号
|
|
'order_code'=>$ret['result']['orderCode'],// 中通订单号
|
|
'partner_code'=>$address['trade_id'],// 中通订单号
|
|
'trade_id'=>$address['trade_id'],// 中通订单号
|
|
"sender_id"=> $address['user_id'],
|
|
"sender_name"=> $address['name'],
|
|
//"sender_company"=> "",
|
|
"sender_mobile"=> $address['tel'],
|
|
//"sender_phone"=> "",
|
|
"sender_prov"=> $address['province'],
|
|
"sender_city"=> $address['city'],
|
|
"sender_county"=> $address['district'],
|
|
"sender_address"=> $address['address'],
|
|
//"sender_zipcode"=> ""
|
|
];
|
|
$row_ext = [];
|
|
/*
|
|
//查询订单
|
|
$ret_search = $this->commonOrderSearchbycode($ret['orderCode'],$address['user_id']);
|
|
//存订单
|
|
$order = $ret['result'];
|
|
if($ret_search['result']){
|
|
$detail = $ret_search['data']['order_list'];
|
|
if(!empty($detail[0])){
|
|
$detail = $detail[0];
|
|
$row_ext = [
|
|
'type'=>$order['type'],// 订单类型
|
|
'tradeid'=>$order['tradeid'],// 交易号
|
|
'mailno'=>$order['mailno'],// 运单号
|
|
'detail'=>json_encode($detail),// 原始数据
|
|
];
|
|
}
|
|
}
|
|
//todo:订阅快递信息
|
|
$this->add(array_merge($row_base,$row_ext));
|
|
*/
|
|
$id = $this->add($row_base);
|
|
return [true,'上门取货后获取'];
|
|
}else{
|
|
log_message('error', $ret['message']);
|
|
}
|
|
return [false,$ret['message']];
|
|
}
|
|
|
|
//预约寄件-订单明细查询
|
|
public function commonOrderSearchbycode($orderCode=[],$sendId,$partnerId='')
|
|
{
|
|
if(!is_array($orderCode)){
|
|
$orderCode = [$orderCode];
|
|
}
|
|
$params = [
|
|
"company_id"=>'',
|
|
"msg_type"=>'SEARCHBYCODE',
|
|
"data"=>[
|
|
"orderCode"=>$orderCode,//预约寄件下单后,获取的orderCode
|
|
"sendId"=>$sendId,//发件人在合作商平台中的ID号
|
|
#"partnerId"=>"",//合作商单号,非必填
|
|
]
|
|
];
|
|
$ret = $this->request('commonOrderSearchbycode',$params);
|
|
echo(json_encode($ret));die;
|
|
$ret = '{
|
|
"result": true,
|
|
"reason": "",
|
|
"data": {
|
|
"pageIndex": 1,
|
|
"pageSize": 10,
|
|
"count": 100,
|
|
"order_list": [
|
|
{
|
|
"orderCode": "130520142013234",
|
|
"type": "",
|
|
"tradeid": "2701843",
|
|
"mailno": "1000000000016",
|
|
"sender": {
|
|
"id": "130520142010",
|
|
"name": "李琳",
|
|
"company": "新南电子商务有限公司",
|
|
"mobile": "13912345678",
|
|
"phone": "021-87654321",
|
|
"area": "上海市",
|
|
"city": "上海市",
|
|
"county": "青浦区",
|
|
"address": "华新镇华志路123号",
|
|
"zipcode": "610012"
|
|
},
|
|
"receiver": {
|
|
"id": "130520142097",
|
|
"name": "杨逸嘉",
|
|
"company": "逸嘉实业有限公司",
|
|
"mobile": "13687654321",
|
|
"phone": "010-22226789",
|
|
"area": "四川省",
|
|
"city": "成都市",
|
|
"county": "武侯区",
|
|
"address": "育德路497号",
|
|
"zipcode": "610012"
|
|
},
|
|
"starttime": "2013-05-2012: 00: 00",
|
|
"endtime": "2013-05-2015: 00: 00",
|
|
"weight": 753,
|
|
"size": "12, 23, 11",
|
|
"quantity": 2,
|
|
"price": 12650,
|
|
"freight": 1000,
|
|
"premium": 50,
|
|
"pack_charges": 100,
|
|
"other_charges": 0,
|
|
"order_sum": 0,
|
|
"collect_moneytype": "CNY",
|
|
"collect_sum": 1200,
|
|
"remark": "请勿摔货",
|
|
"create_date": "2014-12-1212: 12: 12"
|
|
},
|
|
{
|
|
"orderCode": "130520142013234",
|
|
"type": "",
|
|
"tradeid": "2701843",
|
|
"mailno": "1000000000016",
|
|
"sender": {
|
|
"id": "130520142010",
|
|
"name": "李琳",
|
|
"company": "新南电子商务有限公司",
|
|
"mobile": "13912345678",
|
|
"phone": "021-87654321",
|
|
"area": "上海市",
|
|
"city": "上海市",
|
|
"county": "青浦区",
|
|
"address": "华新镇华志路123号",
|
|
"zipcode": "610012"
|
|
},
|
|
"receiver": {
|
|
"id": "130520142097",
|
|
"name": "杨逸嘉",
|
|
"company": "逸嘉实业有限公司",
|
|
"mobile": "13687654321",
|
|
"phone": "010-22226789",
|
|
"area": "四川省",
|
|
"city": "成都市",
|
|
"county": "武侯区",
|
|
"address": "育德路497号",
|
|
"zipcode": "610012"
|
|
},
|
|
"items": [
|
|
{
|
|
"id": "1234567",
|
|
"name": "迷你风扇",
|
|
"category": "电子产品",
|
|
"material": "金属",
|
|
"size": "12, 11, 23",
|
|
"weight": "0.752",
|
|
"unitprice": "79",
|
|
"quantity": "1",
|
|
"remark": "黑色大号"
|
|
},
|
|
{
|
|
"name": "USB3.0集线器",
|
|
"quantity": "1",
|
|
"remark": ""
|
|
}
|
|
],
|
|
"starttime": "2013-05-2012: 00: 00",
|
|
"endtime": "2013-05-2015: 00: 00",
|
|
"weight": 753,
|
|
"size": "12, 23,11",
|
|
"quantity": 2,
|
|
"price": 12650,
|
|
"freight": 1000,
|
|
"premium": 50,
|
|
"pack_charges": 100,
|
|
"other_charges": 0,
|
|
"order_sum": 0,
|
|
"collect_moneytype": "CNY",
|
|
"collect_sum": 1200,
|
|
"remark": "请勿摔货",
|
|
"create_date": "2014-12-1212: 12: 12"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
';
|
|
$ret = json_decode($ret,true);
|
|
|
|
}
|
|
|
|
//获取快件轨迹信息
|
|
public function traceInterfaceNewTraces($order_id)
|
|
{
|
|
$conf = $this->config->item('zto');
|
|
$data = [
|
|
"company_id"=> $conf['id'],
|
|
"msg_type"=> 'NEW_TRACES',
|
|
"data"=> [$order_id],
|
|
];
|
|
return $this->request('traceInterfaceNewTraces',$data);
|
|
$tmp = '{
|
|
"data": [
|
|
{
|
|
"traces": [
|
|
{
|
|
"desc": "[上海市] [上海]的张伟丰已收件 电话:17740809169",
|
|
"dispOrRecMan": "张伟丰",
|
|
"dispOrRecManCode": "",
|
|
"dispOrRecManPhone": "17740809169",
|
|
"isCenter": "T",
|
|
"preOrNextCity": "",
|
|
"preOrNextProv": "",
|
|
"preOrNextSite": "",
|
|
"preOrNextSiteCode": "",
|
|
"preOrNextSitePhone": "",
|
|
"remark": "",
|
|
"scanCity": "上海市",
|
|
"scanDate": "2017-07-26 17:30:14",
|
|
"scanProv": "上海",
|
|
"scanSite": "上海",
|
|
"scanSiteCode": "02100",
|
|
"scanSitePhone": "95311",
|
|
"scanType": "收件",
|
|
"signMan": ""
|
|
},
|
|
{
|
|
"desc": "[金华市] 快件到达 [义乌]",
|
|
"dispOrRecMan": "",
|
|
"dispOrRecManCode": "",
|
|
"dispOrRecManPhone": "",
|
|
"isCenter": "F",
|
|
"preOrNextCity": "",
|
|
"preOrNextProv": "",
|
|
"preOrNextSite": "",
|
|
"preOrNextSiteCode": "",
|
|
"preOrNextSitePhone": "",
|
|
"remark": "",
|
|
"scanCity": "金华市",
|
|
"scanDate": "2017-05-18 16:55:01",
|
|
"scanProv": "浙江",
|
|
"scanSite": "义乌",
|
|
"scanSiteCode": "57950",
|
|
"scanSitePhone": "0579-89936000",
|
|
"scanType": "到件",
|
|
"signMan": ""
|
|
},
|
|
{
|
|
"desc": "[上海市] 快件已到达[上海],业务员张伟丰正在第1次派件 电话:17740809169
|
|
请保持电话畅通、耐心等待",
|
|
"dispOrRecMan": "张伟丰",
|
|
"dispOrRecManCode": "",
|
|
"dispOrRecManPhone": "17740809169",
|
|
"isCenter": "T",
|
|
"preOrNextCity": "",
|
|
"preOrNextProv": "",
|
|
"preOrNextSite": "",
|
|
"preOrNextSiteCode": "",
|
|
"preOrNextSitePhone": "",
|
|
"remark": "",
|
|
"scanCity": "上海市",
|
|
"scanDate": "2017-07-26 17:33:27",
|
|
"scanProv": "上海",
|
|
"scanSite": "上海",
|
|
"scanSiteCode": "02100",
|
|
"scanSitePhone": "95311",
|
|
"scanType": "派件",
|
|
"signMan": ""
|
|
},
|
|
{
|
|
"desc": "[上海市] [上海总部财务]的派件已退件签收 感谢使用中通快递,期待再次为您
|
|
服务!",
|
|
"dispOrRecMan": "",
|
|
"dispOrRecManCode": "",
|
|
"dispOrRecManPhone": "",
|
|
"isCenter": "F",
|
|
"preOrNextCity": "",
|
|
"preOrNextProv": "",
|
|
"preOrNextSite": "",
|
|
"preOrNextSiteCode": "",
|
|
"preOrNextSitePhone": "",
|
|
"remark": "",
|
|
"scanCity": "上海市",
|
|
"scanDate": "2017-03-03 13:11:23",
|
|
"scanProv": "上海",
|
|
"scanSite": "上海总部财务",
|
|
"scanSiteCode": "00088",
|
|
"scanSitePhone": "",
|
|
"scanType": "退件签收",
|
|
"signMan": "本人"
|
|
}
|
|
],
|
|
"billCode": "680000000000"
|
|
}
|
|
],
|
|
"msg": "",
|
|
"status": true
|
|
}';
|
|
return json_decode($tmp,true);
|
|
}
|
|
|
|
|
|
//总对总订单,用不上
|
|
public function plateOrder($sample=[],$address=[])
|
|
{
|
|
$data = [
|
|
"systemParameter"=> [
|
|
"serviceCode"=> "StoreDeliverGoods"
|
|
],
|
|
"orderInfo"=> [
|
|
"bagSize"=> "20,10,30",
|
|
"partnerCode"=> "3608036589234",
|
|
"companyCode"=> "GP1551922487",
|
|
"customerId"=> "zto001",
|
|
"hallCode"=> "S2044",
|
|
"billCode"=> null,
|
|
"pickUpCode"=> null,
|
|
"startTime"=> null,
|
|
"endTime"=> null,
|
|
"siteCode"=> "",
|
|
"weight"=> 1.23,
|
|
"freight"=> 0,
|
|
"orderSum"=> 230.12,
|
|
"otherCharges"=> 0,
|
|
"packCharges"=> 0,
|
|
"premium"=> 0,
|
|
"price"=> 0,
|
|
"quantity"=> "1",
|
|
"returnAddress"=> "江苏省苏州市姑苏区绿地大道320号金茂大厦负一楼203仓库",
|
|
"remark"=> "",
|
|
"receiver"=> [
|
|
"address"=> "外街道00号",
|
|
"city"=> "苏州市",
|
|
"company"=> "中通快递",
|
|
"county"=> "朝阳区",
|
|
"id"=> "",
|
|
"mobile"=> "13262709999",
|
|
"name"=> "黄某",
|
|
"phone"=> "",
|
|
"prov"=> "江苏省",
|
|
"zipCode"=> ""
|
|
],
|
|
"sender"=> [
|
|
"address"=> "华志路1685号",
|
|
"city"=> "蚌埠市",
|
|
"company"=> "中通快递股份有限公司",
|
|
"county"=> "怀远县",
|
|
"id"=> "15097756",
|
|
"mobile"=> "15216800000",
|
|
"name"=> "测试",
|
|
"phone"=> "",
|
|
"prov"=> "安徽省",
|
|
"zipCode"=> ""
|
|
]
|
|
]
|
|
];
|
|
$ret = $this->request('plateOrder',$data);
|
|
return $ret;
|
|
}
|
|
}
|