Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP代码示例之电子面单打印通用解决方案

PHP代码示例之电子面单打印通用解决方案

不言
不言asal
2018-04-24 14:49:495284semak imbas

这篇文章介绍的内容是关于PHP代码示例之电子面单打印通用解决方案,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

物流快递、电商、ERP、仓储等都涉及发货业务都需要用到电子面单打印,市面上有各种各样的电子面单打印机,电子面单打印软件,电子面单打印工具满足了打印需求,但未能很好的满足移动端打印。这里介绍一个手机端电子面单打印通用解决方案:快宝电子面单云打印,它的优势:不限打印机型号、品牌,可打印各大快递公司电子面单,可打印菜鸟电子面单,支持批量打印,支持远程打印,实现电子面单打印机共享等。


一、云打印介绍

快宝电子面单云打印,将普通热敏打印机一键接入云端,并提供封装好的打印机管理、打印任务发送、任务状态更新等接口,助力开发者一天就可开发出一个功能完整、使用便捷的移动电子面单打印程序。有如下特点:

1. 极简接入:普通打印机接入移动共享云端

2. 极速请求:一个http请求就可以完成打印

3. 极速定制:电子面单打印软件半天拥有


二、如何使用云打印

快宝云打印包括6个API,分别使用与不同的场景,根据软件使用的流程对接不同


云打印API列表
接口名称 接口描述
注册云打印机 将开发者账号与云打印机关联
删除云打印机 解除开发者账号与云打印机关联
发送打印任务 给云打印机发送打印任务
获取云打印机列表 获取开发者账号已经关联的云打印机信息
查询打印任务详情 获取某个打印任务信息
获取云打印机信息 获取某个云打印机信息

使用云打印,需要做如下准备:


对接准备工作
准备工作 备注
电子面单打印机 不限品牌,不限型号
安装云打印代理程序(下载地址:http://ckd.so/ydy) win 7及以上系统,不支持Mac系统
获的快宝开放平台开发者账号信息(ID和API  Key) 注册快宝开放平台即可获取(http://open.kuaidihelp.com/)

云打印API使用步骤,可根据具体业务选择对接的API:



三、云打印技术对接(以PHP为例)

接口名称:cloud.print.do

正式地址:https://kop.kuaidihelp.com/api

请求方式:HTTP POST

请求方法编码格式:utf-8

公共请求参数:


名称 类型 是否必须 描述
method string API接口名称
app_id string 用户ID(注册开放平台时分配,在控制台中查看)
sign string 按照规则(md5(app_id + method + ts + api_key))生成的验证合法性签名
ts string 当前请求的时间戳
data string JSON格式请求参数设置

公共响应参数


名称 类型 是否必须 描述
code int 响应状态码。0-成功,非0-失败
msg string 返回结果说明
uid string 本次请求唯一业务流水号
data string JSON格式响应数据

请求参数


名称 类型 是否必须 描述
agent_id string 云打印机编号
action string 方法标识(print.json.cn)
print_type string 1:底单 2:打印 3:底单和打印.(可选,默认3,任务内设置,则以任务内设置为准)
batch string 是否为批量
print_data string 打印数据
sequence string 当前/总数,默认1/1
template_id string 模板id查看详情
cp_code string 快递品牌
pickup_code string 取件码(可选)
print_type string 1:底单 2:打印 3:底单和打印.(可选,默认3)
user_name string 打印人的名称,若是业务员,可包括手机号码(可选)
note string 备注(可选)
goods_name string 物品名(可选)
weight string 物品重量(可选)
tid string (建议用订单号之类的唯一标识,提交和回调时将返回该字段, 申请单号时也将使用该字段当订单号)
recipient string 收件信息
address string 收件人地址
province string 收件人省份
district string 收件人县级名称
city string 收件人市级名称
detail string 收件人详细地址
mobile string 收件人手机
name string 收件人姓名
phone string 收件人固话
routing_info string 快递路由信息
consolidation string 集包地信息
name string 集包地名称
origin string 路由网点公司
code string 路由网点公司编号
name string 路由网点公司编号名称
route_code string 二三段码
sortation string 大字及一段码
name string 大字名称
sender string 发件信息
address string 发件人地址
province string 发件人省份
district string 发件人县级名称
city string 发件人市级名称
detail string 发件人详细地址
mobile string 发件人手机
name string 发件人姓名
phone string 发件人固话
waybill_code string 运单号

响应参数


名称 类型 是否必须 描述
status string 状态
task_id string 此次请求任务ID

支持Java,C#,Python,PHP,Node.js,Curl等6中语言接入,下面以PHP为例,展示发送请求任务代码示例。

1. 单个打印任务,请求示例

$host = "https://kop.kuaidihelp.com/api";
$method = "POST";
$headers = array();
//根据API的要求,定义相对应的Content-Type
array_push($headers, "Content-Type".":"."application/x-www-form-urlencoded; charset=UTF-8");
$querys = "";
$bodys = [
"app_id"=>'50001',
"method"=>'cloud.print.do',
"sign"=>"bdf3b5f50865ac813cbdfd6c9b572b79",
"ts"=>'1524209949',
"data"=>'{		
			"action":"print.json.cn(菜鸟标准格式JSON)", //
			"agent_id":"目标打印代理", //必填
			"print_type":"打印类型", //1:预览, 2:打印, 3:打印预览. 未设置则默认为3.(任务内设置,则以任务内设置为准)
			"batch":"", //字符串"true"或者bool值 true则为批量,其他值则为非批量 是否为批量
			"print_data": {
				"sequence": "1/1", //可选,打印文档当前序列:当前/总数,默认1/1
				"template_id": "模板id",
				"cp_code": "快递品牌(提供模板id,此字段会被忽略)",//参照“快递品牌列表”,兼容菜鸟和快宝品牌编码
				"pickup_code": "取件码(可选)",
				"print_type": "1:底单 2:打印 3:底单和打印.(可选,默认3)",
				"user_name": "打印人的名称,若是业务员,可包括手机号码(可选)",
				"note": "备注(可选)",
				"goods_name": "物品名(可选)",
				"weight": "物品重量(可选)",
				"tid": "(建议用订单号之类的唯一标识,提交和回调时将返回该字段, 申请单号时也将使用该字段当订单号)",
				"recipient": {
					"address": {
					"city": "宁德市",
					"detail": "哦里咯啦咯啦",
					"district": "福鼎市",
					"province": "福建省"
					},
					"mobile": "13344556677",
					"name": "XXX",
					"phone": ""
				},
				"routing_info": {
					"consolidation": {"name": "温州转福鼎包(集包名)"},
					"origin": {"code": "610025","name": "四川邛崃公司"},
					"route_code": "009 030(二三段码)",
					"sortation": {"name": "福鼎351(大字 一段码)"}
				},
			"sender": {
				"address": {
					"city": "成都市",
					"detail": "兴民街55号",
					"district": "邛崃市",
					"province": "四川省"
				},
				"mobile": "13344556677",
				"name": "XXX",
				"phone": ""
			},
			"waybill_code": "333333333333"
			}
			}'
];
$bodys = http_build_query($bodys);
$url = $host;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
if (1 == strpos("$".$host, "https://"))
{
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys);
var_dump(curl_exec($curl));

2. 批量打印任务,请求示例

$host = "https://kop.kuaidihelp.com/api";
$method = "POST";
$headers = array();
//根据API的要求,定义相对应的Content-Type
array_push($headers, "Content-Type".":"."application/x-www-form-urlencoded; charset=UTF-8");
$querys = "";
$bodys = [
"app_id"=>'50001',
"method"=>'cloud.print.do',
"sign"=>"bdf3b5f50865ac813cbdfd6c9b572b79",
"ts"=>'1524209949',
"data"=>'{
    "action":"print.json.cn(菜鸟标准格式JSON)", //
    "agent_id":"目标打印代理", //必填
    "print_type":"打印类型", //1:预览, 2:打印, 3:打印预览. 未设置则默认为3.(任务内设置,则以任务内设置为准)
    "batch":"", //字符串"true"或者bool值 true则为批量,其他值则为非批量 是否为批量
    "print_data":  [
  {
    "cod_amount": 200, //如果是货到付款服务,则使用该字段
    "sequence": "1/1", //可选,打印文档当前序列:当前/总数,默认1/1
    "template_id": "模板id",
    "cp_code": "快递品牌",//参照“快递品牌列表”,兼容菜鸟和快宝品牌编码
    "pickup_code": "取件码(可选)",
    "print_type": "1:底单 2:打印 3:底单和打印.(可选,默认3)",
    "user_name": "打印人的名称,若是业务员,可包括手机号码(可选)",
    "note": "备注(可选)",
    "goods_name": "物品名(可选)",
    "weight": "物品重量(可选)",
    "tid": "(建议用订单号之类的唯一标识,提交和回调时将返回该字段, 申请单号时也将使用该字段当订单号)",
    "recipient": {
      "address": {
        "city": "宁德市",
        "detail": "哦里咯啦咯啦",
        "district": "福鼎市",
        "province": "福建省"
      },
      "mobile": "13344556677",
      "name": "XXX",
      "phone": ""
    },
    "routing_info": {
      "consolidation": {
        "name": "温州转福鼎包(集包名)"
      },
      "origin": {
        "code": "610025",
        "name": "四川邛崃公司"
      },
      "route_code": "009 030(二三段码)",
      "sortation": {
        "name": "福鼎351(大字 一段码)"
      }
    },
    "sender": {
      "address": {
        "city": "成都市",
        "detail": "兴民街55号",
        "district": "邛崃市",
        "province": "四川省"
      },
      "mobile": "13344556677",
      "name": "XXX",
      "phone": ""
    },
    "waybill_code": "333333333333"
  }
]

}'
];
$bodys = http_build_query($bodys);
$url = $host;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
if (1 == strpos("$".$host, "https://"))
{
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys);
var_dump(curl_exec($curl));

3.结合“微快递小邮筒”(微信公众号)里面配置的单号源自动获取单号、打印模板、路由信息示例

$host = "https://kop.kuaidihelp.com/api";
$method = "POST";
$headers = array();
//根据API的要求,定义相对应的Content-Type
array_push($headers, "Content-Type".":"."application/x-www-form-urlencoded; charset=UTF-8");
$querys = "";
$bodys = [
"app_id"=>'50001',
"method"=>'cloud.print.do',
"sign"=>"bdf3b5f50865ac813cbdfd6c9b572b79",
"ts"=>'1524209949',
"data"=>'{
    "action":"print.json.cn(菜鸟标准格式JSON)", //
    "agent_id":"目标打印代理", //必填
    "print_type":"打印类型", //1:预览, 2:打印, 3:打印预览. 未设置则默认为3.(任务内设置,则以任务内设置为准)
    "batch":"", //字符串"true"或者bool值 true则为批量,其他值则为非批量 是否为批量
    "print_data":  {
  "cod_amount": 200, //如果是货到付款服务,则使用该字段
  "sequence": "1/1", //可选,打印文档当前序列:当前/总数,默认1/1
  "template_id": "模板id",
  "cp_code": "快递品牌(提供模板id,此字段会被忽略)",//参照“快递品牌列表”,兼容菜鸟和快宝品牌编码
  "pickup_code": "取件码(可选)",
  "print_type": "1:底单 2:打印 3:底单和打印.(可选,默认3)",
  "user_name": "打印人的名称,若是业务员,可包括手机号码(可选)",
  "note": "备注(可选)",
  "goods_name": "物品名(可选)",
  "weight": "物品重量(可选)",
  "tid": "(建议用订单号之类的唯一标识,提交和回调时将返回该字段, 申请单号时也将使用该字段当订单号)",
  "sender": {
      "address": {
          "province": "江西省",
          "city": "赣州市",
          "district": "寻乌县",
          "detail": "寻乌县"
      },
      "mobile": "13344556677",
      "phone": "",
      "name": "XXX"
  },
  "recipient": {
      "address": {
          "province": "江西省",
          "city": "宜春市",
          "district": "袁州区",
          "detail": "秀江外滩电13栋"
      },
      "mobile": "13344556677",
      "phone": "",
      "name": "XXX"
  },
  "routing_info": {},
  "waybill_code": "" //留空!留空!留空!
  }


}'
];
$bodys = http_build_query($bodys);
$url = $host;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
if (1 == strpos("$".$host, "https://"))
{
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys);
var_dump(curl_exec($curl));


-the end-

Atas ialah kandungan terperinci PHP代码示例之电子面单打印通用解决方案. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:php的正则表达式Artikel seterusnya:PHP实现执行外部程序的方法详解