# 扫一扫查快递

微信物流服务「扫一扫查快递」功能开放快递公司接入,用户在微信内用“扫一扫”扫快递运单条码、用“搜一搜”、“指尖搜索”搜索运单号等场景,可以实时查询/分享/收藏该物流轨迹、联系快递公司客服、微信支付该运单的费用以及跳转到该快递公司小程序等功能。

# “扫一扫查快递” 功能页面



# 接入流程

# 1.邮件申请

发送申请邮件至wxwuliu@tencent.com

【邮件标题】 快递公司名称 - 扫一扫快递接入申请

【邮件内容】 计划实现的功能、运力小程序的appid(小程序需要完成微信认证)、运力的正式服务器地址(微信侧请求该地址获取轨迹、运力的测试服务器地址(用于接入测试)、运力的运单正则表达式(后续如果有更新,需要发邮件通知微信侧)、运力名称、运力客服电话、运力跳转小程序appid和path、自定义cell跳转

【邮件附件】《营业执照》、《快递业务经营许可证》扫描件

我们会在收到邮件后的1个工作日内进行反馈。

# 2.协议签署

符合接入要求的快递公司,会收到邮件回复,包含接入指引和《合作协议》。

# 3.开发调试

  • 提供白名单测试运单码
  • 提供运单判断规则,以正则表达式形式(用于判断数据拉取)
  • 按照本接口文档设计和开发,其中部分信息需要由微信协助配置
  • 以邮件和微信群形式沟通

# 4.审核发布

接口开发完成,微信侧确认,通过性能和安全审核后发布,发布后的页面所有用户可以扫码查看。


# 接入前准备

# 1.快递信息查询接口

用以微信前端通过JsonP 方式获取运单的信息

# 2.落地页Cell信息

快递公司需要提供一组 Cell 的信息,每个 Cell 包括:

  • “Key”:Cell 的标识码,快递公司自定义, 不超过 20 字符
  • “Name”:Cell 展示的名称,如“支付运单”
  • “Link”:Cell 点击外跳的 url 地址

# 接口开发文档

# 1.查询快递信息的接口

  • 接口说明 :微信使用 JsonP 的方式到快递公司拉取快递运单信息 。
  • 请求url示例: 假定快递公司配置的回调URL是 A,则请求URL 格式如下: A?orderid==xxx&openid=xxx&signature=xxx&timestamp=xxx&nonce=xxx&callback=xxx 通过http Get访问url

请求参数说明

参数 说明
orderid 运单号
openid 当访问者openid,可唯一标识用户
signature 微信加密签名,签名算法为sha1(token、timestamp、nonce三个参数字符串升序排序后拼接的字符串),输出的签名结果为小写16进制串,长度40,token来自快递方提交的公众号所配置的token,timestamp及nonce来自链接参数
timestamp 时间戳
nonce 随机数
callback WxOrderCb
company_id 快递公司编码,快递鸟使用

返回参数说明

WxOrderCb(OrderInfo的json数据)

OrderInfo说明

参数 说明
err_code 0表示成功,否则返回相关错误码
err_msg ok表示成功,否则返回相关错误信息
traces 物流轨迹详情列表,数组,下面具体解释包含字段
cells Cell列表,数组,下面有具体解释包含字段
estimated_delivery_time 预计送达时间,格式:yyyy-mm-dd, 当订单状态为非已签收时返回
order_status 订单状态,定义见OrderStatus

traces数组内每个元素字段说明

参数 说明
accept_time 物流轨迹产生时间,格式:yyy-mm-dd hh:mm:ss
accept_address 物流轨迹状态和描述,格式:X \n Y (X状态,Y描述)
例如:运输中 \n 快件已从杭州枢纽中心发出,正在发往深圳转运场。
remark 物流轨迹产生地点

cells数组内每个元素字段说明

参数 说明
key Cell的标识码,快递公司提前配置,不超过20个字符
value Cell右侧的引导语,不超过10个字符
status url参数,快递公司自定义,用于点击Cell时拼接在Url后外跳

OrderStatus定义

说明
0 待揽件
1 已揽件
2 运输中
3 派送中
4 已签收
5 签收异常
6 代签收

OrderInfo示例

{
    "err_code":0,
    "err_msg":"ok",
    "traces":[
        {
            "accept_time":"2014-12-08 22:55:49",
            "accept_address":"虎门中转部",
            "remark": "派件中"
        },
        ...
    ],
    "cells": [
        {
        	"key": "wxpay",
        	"value": "已支付",
        	"status": "pages/index/index",
        },
        ...
    ],
    "estimated_delivery_time": "2019-09-30",
    "order_status": 3
}

签名示例

token=1a2b3c456,timestamp=123456,nonce=13578

value按字典序升序排列后为123456,13578,1a2b3c456

签名为sha1(123456135781a2b3c456)=5eff852d33f84c33ef1c3a792d3ffb941d6b0261

最终完整的返回数据为

WxOrderCb({"order_status":2,"cells":[{"value":"寄快递","key":"order"}],"err_msg":"ok","estimated_delivery_time":"2020-07-08","traces":[{"accept_address":"【河北永清县】(0316-6840631) 的 操作一组(15731691877) 已揽收","remark":"河北永清县","accept_time":"2020-07-04 20:47:03"},{"accept_address":"快件离开 【河北永清县】 已发往 【贵阳】","remark":"河北永清县","accept_time":"2020-07-04 21:44:38"},{"accept_address":"快件已经到达 【华北操作部】","remark":"华北操作部","accept_time":"2020-07-05 01:33:05"},{"accept_address":"快件离开 【华北操作部】 已发往 【贵阳】","remark":"华北操作部","accept_time":"2020-07-05 18:15:24"},{"accept_address":"快件已经到达 【贵阳】","remark":"贵阳","accept_time":"2020-07-07 05:55:46"},{"accept_address":"快件离开 【贵阳】 已发往 【遵义】","remark":"贵阳","accept_time":"2020-07-07 07:28:23"},{"accept_address":"快件已经到达 【遵义】","remark":"遵义","accept_time":"2020-07-07 13:42:07"},{"accept_address":"快件离开 【遵义】 已发往 【遵义桂花社区】","remark":"遵义","accept_time":"2020-07-07 13:44:42"}],"err_code":0})

扫码示例图

# 2.自定义cell跳转

扫一扫落地页提供了cell位可供实现运力的支付相关功能需要提供跳转的小程序appid与跳转path以及cell位的代号key 运力方在查询快递信息接口返回需要显示的cell位(通过代号key),微信将需要展示的cell位链接拼上额外参数后给到前端,用户点击后跳转到该链接。 具体的额外参数定义如下:

参数 说明
orderid 运单号
openid 当访问者openid,可唯一标识用户
signature 微信加密签名,签名算法为sha1(token+timestamp+nonce),输出的签名结果为小写16进制串,长度40,token来自快递方提交的公众号所配置的token,timestamp及nonce来自链接参数
timestamp 时间戳
nonce 随机数

如cell配置了一个支付快递的链接pages/test/pay 用户点击时访问的链接为 pages/test/pay?timestamp=1592811835&nonce=1756708668&signature=05d22a5ef341200dec391208bc7bb6bf8e30780d&orderid=6000069559003&openid=omJOjjvB9iYTYiEKp7GFfweffQPmdU

自定义cell示例图