快递 100 电子面单对接过程及问题处理
对接准备
电子面单概念
查了百度百科词条 “电子面单打印机”,里面详细描述了传统面单和电子面单的优势和劣势。简而言之,传统面单使用灵活,可手写,可以保存很久,但纸张面积大,字迹粗糙;电子面单出单快,字迹清晰,节省纸张,但不能复写,没有底单,存储时间也不长。传统面单可手写,可针式打印,而电子面单属于热敏打印。电子面单节省了中间环节,加快了快递行业的发展。
电子面单的使用
本质上面单的作用就是记录和传递包裹信息。上面有快递公司信息、寄件人信息、收件人信息以及物品信息,并附有快递单号及条形码。物流过程中,先是快递上门揽件或者到快递网点寄件,之后快递会被录入快递公司系统内部,然后打印出电子面单贴在快递外包装上。然后是到本地货运中心,由本地货运中心发往目的地城市的货运中心。到了目的地城市后,再分拣排放到不同区域的快递点,由快递点或者存储柜解决最后一公里的派送。
电子面单主要节省的是发货时间,现在一般都会选择上门揽件,通过微信小程序或者支付宝小程序下单,预约上门时间,提前线上填写寄件人和发件人信息。快递员上门后,根据寄件目的地和物品地重量、体积评估快递费用,并将这些信息录入系统。这样,一张电子面单信息就完整了。
但这是散件,零散的快递可以使用这样流程,但如果是商家发货,且发货量较大的时候,一张接一张快递单去填写,就有点不切实际了。了解了一下市场上的电子面单服务,要么是大平台直接对接各个快递公司,商户在快递公司网点下申请账户,缴付快递费用,平台审核通过,然后在平台后台通过打印组件和电子面单打印机直接打印出电子面单;要么就是像快递 100 这样的第三方服务,它们会对接并汇总所有快递公司提供的电子面单接口,然后提供统一的接口,只要调用它的接口也可以实现获取快递信息,打印电子面单的功能。后者需要提供快递公司的面单账号和密码。
对接中
数据库设计
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for destoon_eorder_account
-- ----------------------------
DROP TABLE IF EXISTS `destoon_eorder_account`;
CREATE TABLE `destoon_eorder_account` (
`itemid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`kuaidicode` varchar(30) NOT NULL DEFAULT '',
`partnerid` varchar(30) NOT NULL DEFAULT '',
`partnerkey` varchar(64) NOT NULL DEFAULT '',
`net` varchar(30) NOT NULL DEFAULT '',
`checkman` varchar(30) NOT NULL DEFAULT '',
`sendaddressid` int(10) unsigned NOT NULL DEFAULT '0',
`paytype` varchar(10) NOT NULL DEFAULT '' COMMENT '支付方式',
`exptype` varchar(10) NOT NULL DEFAULT '' COMMENT '快递类型',
`username` varchar(30) NOT NULL DEFAULT '',
`status` tinyint(1) NOT NULL DEFAULT '3',
PRIMARY KEY (`itemid`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='电子面单账户';
-- ----------------------------
-- Table structure for destoon_eorder_print
-- ----------------------------
DROP TABLE IF EXISTS `destoon_eorder_print`;
CREATE TABLE `destoon_eorder_print` (
`itemid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`printid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '批次号',
`printorder` int(11) NOT NULL DEFAULT '0' COMMENT '打印序号',
`orderid` bigint(20) unsigned NOT NULL DEFAULT '0',
`printtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '打印时间',
`recname` varchar(30) NOT NULL DEFAULT '',
`recmobile` varchar(30) NOT NULL DEFAULT '',
`recaddress` varchar(255) NOT NULL DEFAULT '',
`username` varchar(30) NOT NULL DEFAULT '',
`kuaidicode` varchar(30) NOT NULL DEFAULT '',
`expressid` varchar(20) NOT NULL DEFAULT '',
PRIMARY KEY (`itemid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='电子面单打印日志';
-- ----------------------------
-- Table structure for destoon_eorder_record
-- ----------------------------
DROP TABLE IF EXISTS `destoon_eorder_record`;
CREATE TABLE `destoon_eorder_record` (
`itemid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`kuaidinum` varchar(20) NOT NULL DEFAULT '' COMMENT '快递单号(电子面单号)',
`expressid` varchar(20) NOT NULL DEFAULT '' COMMENT '快递公司订单号',
`orderid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '订单号',
`kuaidicode` varchar(30) NOT NULL DEFAULT '' COMMENT '快递编码',
`kuaidiname` varchar(30) NOT NULL DEFAULT '' COMMENT '快递公司',
`net` varchar(30) NOT NULL DEFAULT '' COMMENT '快递网点',
`addtime` int(11) NOT NULL DEFAULT '0' COMMENT '取号时间',
`username` varchar(30) NOT NULL DEFAULT '',
`address` varchar(255) NOT NULL DEFAULT '' COMMENT '收货地址',
`status` tinyint(4) NOT NULL DEFAULT '3' COMMENT '1=已取消 2=已回收 3=已使用',
PRIMARY KEY (`itemid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='电子面单使用记录';