首頁  >  文章  >  後端開發  >  PHP程式碼範例之電子麵單列印通用解決方案

PHP程式碼範例之電子麵單列印通用解決方案

不言
不言原創
2018-04-24 14:49:495226瀏覽

這篇文章介紹的內容是關於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:



#2、雲端列印技術對接(以PHP為例)

介面名稱:cloud.print.do

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

#請求方式:HTTP POST

請求方法編碼格式:utf-8

#公用請求參數:


#名稱##data
類型是否必須 描述
methodstring API介面名稱
app_idstring 使用者ID(註冊開放平台時分配,在控制台中查看)
signstring 依照規則(md5(app_id method ts api_key))產生的驗證合法性簽章
tsstring 目前請求的時間戳記
###string######是######JSON格式請求參數設定#############

公共回應參數


# #

請求參數


#
名稱 類型 是否必須 描述
code #int 回應狀態碼。 0-成功,非0-失敗
msg string #傳回結果說明
uid string #是 本次請求唯一業務管線編號
data string JSON格式回應資料
string是範本id查看詳情是##pickup_code string是取件碼(可選) #print_typestring是1:底單2:列印3:底單與列印.(可選,預設3)user_namestring#是列印人的名稱,若是業務員,可包含手機號碼(可選)notestring是#備註(可選)#goods_namestring物品名稱(可選)##string是收件訊息string是收件者位址string是收件者省string是收件者縣級名稱string是收件者市級名稱是#收件者手機是收件者名稱是收件者固話是快遞路由資訊是集包地資訊是集包地名稱string是路由網點公司編號名稱string是二三段碼string是大字及一段碼string是大字名稱string是寄件訊息string 是寄件者位址string是寄件人省string是寄件者市級名稱string是寄件者詳細位址是寄件者名稱是#寄件者固話# waybill_codestring
名稱 類型 是否必須
#agent_id string #是 雲端印表機編號
action string 方法識別(print.json.cn)
print_type string 1:底單2:列印3:底單和列印.(可選,預設3,任務內設定,則以任務內設定為準)
batch string 是否為批次
print_data
print_data string是######列印資料########################sequence string 目前/總數,預設1/1
##template_id
cp_code string
快遞品牌
##是
#######weight string 物品重量(可選)
tid string (建議用訂單號碼之類的唯一識別,提交和回調時將返回該欄位, 申請單號時也會使用該欄位當訂單號碼)
#recipient
address
#province
district
city
#detail string 收件者詳細位址
# mobilestring
name string
phonestring
routing_infostring
consolidation string
namestring
originstring###是######路由網點公司########################code string #路由網點公司編號
##name
route_code
sortation
name
sender
address
#province
#district string 寄件者縣級名稱
# #city
detail
##mobilestring 寄件者手機
# #namestring
phonestring
###是######運單號碼############

回應參數


描述#狀態此請求任務ID
名稱 類型 是否必須
status string
task_id string

支援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-###

以上是PHP程式碼範例之電子麵單列印通用解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn