对接快递100
场景说明
根据单号、快递公司编码、手机号,快速查到订单快递状态。
使用 Zion 外接 API 对接快递100查询物流信息
第一步:获取客户快递100相关授权信息
第二步:查看快递100的API说明文档
可知其请求类型为post,Content-Type为application/x-www-form-urlencoded。 关键难点是请求参数sign需要经过MD5加密。
新建个行为流名字叫tosign:入参是com(快递公司编码)、num(单号)、phone(手机号),出参是sign(加密后的签名)、param(请求体里的param参数),类型均为文本类型。
加密的js代码,入参是com、num、phone,出参是sign(加密后的签名)、param(请求体里的参数)。
第三步:外接API上测通api并保存配置
输入这是没有body:
查询里的参数:
headers里的参数:
第四步:在页面上使用时先执行加密的自定义行为
可以放在获取远程数据成功时
执行成功后把出参sign和param赋值给页面数据sign和param

第五步:用列表展示api里的物流信息
利用hiflow对接快递100物流api
其实这种方法比较麻烦且现在参数不支持数组类型,无法配置
第一步:首先找客户要快递100相关授权信息
第二步:进入腾讯hiflow官网
没注册的先注册,他们现在是免费使用的。
点击创建新的流程
选择内置工具里的webhook
向webhook地址里发送一条测试数据,这个时候请求体body可以按自己需求写。 我这里order_id是订单表id,com是快递公司编码,num是快递单号,单号加编码就可以查出物流相关信息。
点击测试并预览可以得到样本数据,说明第一个webhook测试通了
流程的第二个步骤在全部里搜索快递100应用,选择查询快递实时进度
快递公司选择自定义-步骤1里的com字段,快递单号填步骤1里的num字段,电话号码不用填,点击测试并预览,接收到物流信息成功后,再点击保存。
第三步:配置webhook
选择内置工具里的http,请求类型选post,请求地址是zion里的回调地址,没有加的可以先在zion里建一个回调地址,header里填Content-Type对应application/json。
请求body是对应zion里回调地址需要的参数。这里用到了步骤2里的参数。
当然zion的回调地址需要绑定一个行为流,这个行为流的目的是接收步骤2里的返回的物流信息,并写入到zion的数据库中。
行为流里的的代码如下:
(() => {
const body = context.getArg("fz_callback_body");
console.log('请求体:',JSON.stringify(body));
const orderId = body.order_id;
const time = body.time.substring(1, body.time.length - 1).split(",");
const node = body.node.substring(1, body.node.length - 1).split(",");
const deliveryInfoArr = [];
for (let i = time.length - 1; i >= 0; i--) {
const deliveryInfo = {
logistics_time: new Date(time[i]).getTime(),
logistics_node: node[i],
order_order: orderId,
};
deliveryInfoArr.push(deliveryInfo);
}
if (!deliveryInfoArr.length) {
return;
}
const gql = `mutation insertLogisticsRecords($logisticsObjects: [logistics_record_insert_input!]!) {
response: insert_logistics_record(
objects: $logisticsObjects
on_conflict: {constraint: unique_by_order_id_and_time, update_columns: []}
) {
affected_rows
}
}`;
const insertLogisticsRecordsResult = context.runGql(
"insertLogisticsRecords",
gql,
{ logisticsObjects: deliveryInfoArr },
{ role: "admin" }
).response;
})();