关于菜鸟的圆通电子面单打印
1.
https://dayin.cainiao.com/miandan/subscription/branchRechargeInfo.htm?spm=a2d3a.8498240.0.0.558119b3hxhtix 订购关系查询
3.
1 //圆通信息 2 $a=time()+1;//随机订单号3 $b=time();//随机包裹号 这两个参数不许是变量,不然每次返回的快递单号都是同一个,也就是合单,你也可以在群里问客服4 //下面是需要传递到接口的数据 5 $eorderi ='{"cpCode":"YTO","dmsSorting":"false","needEncrypt":"false","resourceCode":"无",6 "sender":{7 "address":{8 "city":"宿迁市",9 "detail":"淮海东路*********",10 "district":"泗阳县",11 "province":"江苏省",12 "town":""13 },14 "mobile":"18***742",15 "name":"曲*",16 "phone":"1865***42",17 },//这些是发货地址,和你在订购关系里申请的内容要一样18 "storeCode":"无",19 "tradeOrderInfoDtos":[20 {21 "logisticsServices":"",22 "objectId":"1",23 "orderInfo":{24 "orderChannelsType":"OTHERS",25 "tradeOrderList":[26 "'.$a.'"//订单号27 ]28 },29 "packageInfo":{30 "id":"'.$b.'",//包裹号31 "items":[32 {33 "count":"'.$total_number.'",34 "name":"衣服"35 }36 ],37 "volume":"1",38 "weight":"1"39 },40 "recipient":{41 "address":{42 "city":"'.$ship_order_data['city'].'",43 "detail":"'.$ship_order_data['address'].'",44 "district":"'.$ship_order_data['exparea'].'",45 "province":"'.$ship_order_data['province'].'",46 "town":""47 },48 "mobile":"'.$ship_order_data['phone'].'",49 "name":"'.$ship_order_data['username'].'",50 "phone":"'.$ship_order_data['phone'].'"51 },//这些是发货地址52 "templateUrl":" http://cloudprint.cainiao.com/template/standard/101/572",//我用的是圆通,所以这是模板的地址,自己在API里面找53 "userId":"12"//随便填写54 }55 ]56 }';57 58 $jsonResult = $this->submitEOrderi($eorderi);5960 $str=json_decode($jsonResult);
$this->assign('list',$str->waybillCloudPrintResponseList[0]->printData);//只需要打印里面的printData里的数据
return $this->fetch('ce');//新写一个空白的前端.数据在那边接收
第三部.前面的都是准备工作,下面的才是正事的.
(1).
1 //圆通电子面单接口 2 3 /**4 * Json方式 调用电子面单接口5 */ 6 public function submitEOrderi($requestData)7 {8 $url='http://link.cainiao.com/gateway/link.do';//正式地址 必须9 10 11 $appSecret ='z026yj********83S3B6cv86';必须12 // 13 $datas = array(14 'msg_type' =>'TMS_WAYBILL_GET', 15 'logistic_provider_id' =>'UFI1c3dkR2tNRWpX*********************1zWWZxS2V5Y1FrWi90K21jelhOSTMwQ3pKaA==',必须 16 17 'data_digest'=>$this->encrypti($requestData,$appSecret),//获取签名 18 'logistics_interface' =>$requestData, 19 );20 21 $result = $this->sendPosti($url,$datas);提交数据22 23 return $result;24 }25 /**26 * 电商Sign签名生成27 * @param data 内容28 * @param appkey Appkey29 * @return DataSign签名30 */ 31 public function encrypti($data,$appSecret)32 {33 return base64_encode(md5($data.$appSecret,true));34 }35 /**36 * post提交数据37 * @param string $url 请求Url38 * @param array $datas 提交的数据39 * @return url响应返回的html40 */ 41 42 function sendPosti($url, $datas) {43 $temps = array();44 foreach ($datas as $key => $value) {45 $temps[] = sprintf('%s=%s', $key, $value);46 }47 $post_data = implode('&', $temps);48 $url_info = parse_url($url);49 if(empty($url_info['port']))50 {51 $url_info['port']=80;52 }53 $httpheader = "POST " . $url_info['path'] . " HTTP/1.0\r\n";54 $httpheader.= "Host:" . $url_info['host'] . "\r\n";55 $httpheader.= "Content-Type:application/x-www-form-urlencoded\r\n";56 $httpheader.= "Content-Length:" . strlen($post_data) . "\r\n";57 $httpheader.= "Connection:close\r\n\r\n";58 $httpheader.= $post_data;59 $fd = fsockopen($url_info['host'], $url_info['port']);60 fwrite($fd, $httpheader);61 $gets = "";62 $headerFlag = true;63 while (!feof($fd)) {64 if (($header = @fgets($fd)) && ($header == "\r\n" || $header == "\n")) {65 break;66 }67 }68 while (!feof($fd)) {69 $gets.= fread($fd, 128);70 }71 fclose($fd);72 73 return $gets;74 }
第三部.前端页面的代码
1 <includefile="public@header"/> 2 <head> 3 <title>Print Test</title> 4 5 <styletype="text/css"> 6 7 /*div#ctlDiv {height:750px;width:50%;float:left;border-style:solid;border-color:red;border-width:0px;}*/ 8 div#pdfDiv{height:750px;width:49%;border-style:solid;border-color:red;border-width:0px;} 9 </style> 10 <scripttype="text/javascript"> 11 12 varsocket;13 14 window.onload= functionload()15 {16 17 document.getElementById("pdfDiv").style.visibility="hidden";18 }19 20 functionsetStatusLabel(msg)21 {22 vareStatus=document.getElementById("connectionStatus");23 eStatus.innerHTML=msg;24 }25 26 functiondoConnect(callback)27 {28 varserviceUrl=document.getElementById("serviceUrl").value;29 30 socket= newWebSocket(serviceUrl);31 32 //监听消息 33 socket.onmessage= function(event)34 {35 console.log('Client received a message',event);36 document.getElementById("pdfDiv").style.visibility="hidden";37 //parse json 38 varobj=eval('('+event.data+')');39 40 if(obj&&(obj.previewURL||obj.previewImage))41 {42 varurl;43 if(obj&&obj.previewURL) {44 url=obj.previewURL;45 }else if(obj&&obj.previewImage) {46 url=obj.previewImage;47 }48 varpdf=document.getElementById('pdf');49 if(pdf) {50 pdf.setAttribute('src', url);51 document.getElementById("pdfDiv").style.visibility="visible";52 }53 }54 varresultElement=document.getElementById("resultMessage");55 resultElement.value=resultElement.value+event.data+ "\n";56 resultElement.scrollTop=resultElement.scrollHeight;57 };58 59 socket.onopen= function(event)60 {61 if(callback!= null) {62 callback();63 }64 setStatusLabel("已连接");65 }66 67 socket.onerror= function(error)68 {69 console.log("Failed to connect CN print at" +serviceUrl, error);70 setStatusLabel("连接错误");71 }72 73 //监听Socket的关闭 74 socket.onclose= function(event)75 {76 console.log('Client notified socket has closed',event);77 setStatusLabel("连接关闭");78 };79 }80 81 functionsendCommand()82 {83 if(typeofsocket== "undefined" ||socket.readyState==WebSocket.CLOSED) {84 doConnect(sendCommand);85 return;86 }87 88 if(socket.readyState!=WebSocket.OPEN) {89 alert("无效连接:" +socket.readyState);90 return;91 }92 93 varmsg=document.getElementById('printmessage').value;94 varrepeatCount=document.getElementById('repeatCount').value;95 varisPreview=document.getElementById('isPreview').checked;96 vartime= newDate().getTime();97 98 for(varindex= 0; index<repeatCount; index++) {99 varobj=JSON.parse(msg);100 101 if(obj["task"])102 {103 //taskID 104 obj["task"]["taskID"]=time.toString()+ "_TASK_" +index;105 106 //preview 107 obj["task"]["preview"]=isPreview;108 }109 110 varnewMsg=JSON.stringify(obj);111 socket.send(newMsg);112 }113 }114 115 functionclearResult()116 {117 varresultElement=document.getElementById("resultMessage");118 resultElement.value= "";119 }120 </script> 121 122 123 </head> 124 <body> 125 126 <divid="ctlDiv"> 127 128 <formname="formname"action="javascript:sendCommand()"> 129 <phidden>重复发送请求:<inputid="repeatCount"type="number"min="1"max="1000"step="1"value="1"> 130 <inputhidden id="isPreview"type="checkbox"checked="true">预览模式131 </p> 132 <p> <inputhidden type="text"id="serviceUrl"name="serviceUrl"value="ws://localhost:13528" /> 133 <labelhidden id="connectionStatus">未知</label> 134 <inputhidden id="dianji"type="submit"value="发送请求"/> 135 </p> 136 <textareahidden cols="80"rows="20"id="printmessage"name="printmessage">{137 "cmd": "print",138 "requestID": "123458976",139 "version": "1.0",140 "task": {141 "taskID": "7293666",142 "preview": false,143 "printer": "",144 "notifyMode": "allInOne",145 "previewType": "html",146 "documents": [147 {148 "documentID": "0123456789",149 "contents": [150 {$list}//数据是在这里哦接收的,你不需要改什么,如果你觉得这不是你想要的,你也可以借鉴一下方法151 ]152 }153 ]154 }155 }156 </textarea> 157 <br/><br/> 158 <textareahidden cols="80"rows="20"id="resultMessage"name="resultMessage"readonly="readonly"></textarea> 159 <br/> 160 <inputhidden type="button"value="清除返回消息"onclick="clearResult()"/> 161 </form> 162 </div> 163 164 <divstyle="margin: 0 auto"id="pdfDiv"align="middle"> 165 <iframeid="pdf"src=""width="100%"height="100%"> 166 </iframe> 167 </div> 168 169 </body> 170 </html> 171 172 <script> 173 $('#dianji').click();174 175 176 </script>
最后放一张预览成功的图片(注:必须安装菜鸟打印组件菜鸟预览)
这个需要右键打印,或点击打印的图标才能打印,打印情况就说到这里了,有什么不懂的可以留言
转载于:https://www.cnblogs.com/luojie-/p/8537596.html
关于菜鸟的圆通电子面单打印相关推荐
- C#-快递鸟电子面单打印API
以下是快递鸟电子面单接口对接demo (1).只支持Json格式.接口指令1007. (2).订单编号(OrderCode)不可重复提交,重复提交系统会返回具体错误代码. (3).接口支持:顺丰(SF ...
- 免费圆通电子面单接口对接
电子面单接口是快递鸟提供给独立电商.仓储管理系统.物流供应链等物流系统平台使用的下单接口,满足客户在线发货需求并提供打印面单的服务,客户通过网络选择物流公司发送请求通知贵公司有快递要发货,把数据通过此 ...
- 圆通电子面单账户开通申请流程(快递鸟示例)
电子面单下单: 5.3.1.请求接口之前需要先实名认证,开通相关会员服务,否则会请求失败并返回提示"未申请开通接口": 5.3.2.接口开发需下载"快递鸟接口技术文档&q ...
- 电商对接使用圆通电子面单接口方法
电子面单接口是快递鸟提供给独立电商.仓储管理系统.物流供应链等物流系统平台使用的下单接口,满足客户在线发货需求并提供打印面单的服务,客户通过网络选择物流公司发送请求通知贵公司有快递要发货,把数据通过此 ...
- 圆通电子面单接口申请案例(PHP)
电子面单是一种通过热敏纸打印输出纸质×××的物流服务.通过热感应显示文字,打印速度比传统针式打印速度提升4~6倍.电子面单以接口形式嵌入到自己的系统.网站上,可以在自己的平台操作打印电子面单. 1.接 ...
- 通过快递100获取快递单号,结合c-lodop热敏纸打印 – 通过菜鸟ISV/自研ERP使用菜鸟电子面单...
https://www.1024cc.cn/index.php/2019/04/29/%E6%89%93%E5%8D%B0%E7%94%B5%E5%AD%90%E9%9D%A2%E5%8D%95/ 打 ...
- 通过快递鸟如何接入圆通速递电子面单
一.接入前准备(TO商家业务人员) 1.申请快递鸟用户ID和API key 1.1登录快递鸟官网注册页面http://www.kdniao.com/reg注册快递鸟账号: 1.2登录快递鸟用户管理后台 ...
- 快递电子面单批量打印接口对接demo-JAVA
目前有三种方式对接电子面单: 1.快递公司:各家快递公司逐一对接接口 2.菜鸟:支持常用15家快递电子面单打印 3.快递鸟:仅对接一次,支持常用30多家主流快递电子面单打印 目前也是支持批量打印电子面 ...
- 电子面单云打印方案(PHP示例)
物流快递.电商.ERP.仓储等都涉及发货业务都需要用到电子面单打印,市面上有各种各样的电子面单打印机,电子面单打印软件,电子面单打印工具满足了打印需求,但未能很好的满足移动端打印.这里介绍一个手机端电 ...
- 快递鸟电子面单批量打印接口用java怎么对接对接
目前有三种方式对接电子面单: 1.快递公司:各家快递公司逐一对接接口 2.菜鸟:支持常用15家快递电子面单打印 3.快递鸟:仅对接一次,支持常用30多家主流快递电子面单打印 目前也是支持批量打印电子面 ...
最新文章
- asic面试题目 英伟达_英伟达一面总结
- 将远程服务器获取的linkedhashMap对象转为实体类对象
- 程序员发现 Bug 的时候是怎样一种心境?
- SPL 关联优化技巧
- 数论--中国剩余定理模板
- 你想象中的Task后续,很简单?
- Maven开发笔记(四)—— Maven中plugins和pluginManagement
- LeetCode 169. 求众数(摩尔投票)
- 无线网络MIMO技术浅谈
- 今晚直播丨如何通过APEX实现数据库自动晨检功能
- jdbc连接mysql驱动包_jdbc连接数据库驱动包
- java题目青蛙跳杯子_蓝桥杯 历届试题 青蛙跳杯子
- 什么是埋点?我们为什么需要埋点?(原作者:知乎 原志Growing)
- IDEA提示Multi-catches are not supported at this language level的解决办法
- 计算机云台示意图,智能语音识别云台转动模块电路设计—电路图天天读(70)...
- 【K哥爬虫普法】百度、360八年乱战,robots 协议之战终落幕
- 云计算未来的发展前景和就业前景怎么样?
- IBMX3650M4服务器_安装内存_内存顺序
- VLAN的划分以及三层交换机理论,OMG,太详细了吧,看它!
- Loadrunner12简单使用过程