#1
在做有物品运输需求的小程序时,都会伴生快递查询的需求。
微信小程序后台也有物流助手提供快捷接入,只是现在没有对个人小程序开放。
所以个人小程序只有找第三方快递查询API。
这里我选 www.kuaidi100.com 来实现快递查询功能。
#2
注册账号、申请 API KEY 就不演示了。
直接看接入文档去寻找必须的参数
正式环境请求地址:https://poll.kuaidi100.com/poll/query.do
请求类型:post
输入参数:
customer: String 是
sign: String 是
param Object 是
└ com: string 是
└ num: string 是
└ phone: string 否
└ from: string 否
└ to: string 否
└ resultv2: int 否
https://www.kuaidi100.com/openapi/api_post.shtml
完整文档地址: https://www.kuaidi100.com/openapi/api_post.shtml
不是很复杂,还是用之前的 urllib 库实现查询
// 云函数入口文件const cloud = require('wx-server-sdk')const urllib = require('urllib')const md5 = require('md5') //参数里的 sign 需要param+key+customer 拼接后md5const key = 'yourkey'const customer = 'yourcustomerid'cloud.init()// 云函数入口函数exports.main = async(event, context) => { const wxContext = cloud.getWXContext() const openid = wxContext.OPENID const com =event.com || 'yunda' const num = event.num || '800398697338673387' const phone = event.phone || '13612345678' const query = {com,num,phone} const param = JSON.stringify(query) const sign = md5(param + key + customer).toUpperCase() const api_base = 'https://poll.kuaidi100.com/poll/query.do' // const api_base = 'https://httpbin.org/get' let {status, data} = await urllib.request(api_base, { method: 'GET', data: { customer, sign, param }, dataType: 'json' }) return { sign, status, data }}
#3
接入很快,不过测试的时候。好像个人免费版都不能获取有效的结果。
我换了好几个快递公司都提示免费版不支持。
真是无话可说!!
#4
对于个人小程序来说,充钱是不可能充钱的。
不过充或者不充,需求就在那里,不用不行。
既然 kuaidi100 不行,就换其他服务提供商。
搜索了一圈,最后决定用 https://www.trackingmore.com
同样注册、申请KEY、看接入文档。
获取单个运单号实时物流信息
接口地址:
https://api.trackingmore.com/v2/trackings/realtime
请求方法:post
参数:
Headers
Content-Type: application/json
Trackingmore-Api-Key: YOUR_API_KEY
Param
tracking_number: 快递单号
carrier_code: 运输商简码
https://www.trackingmore.com/api-track-get-realtime-tracking-results-cn.html#realtime
完整文档地址:https://www.trackingmore.com/api-track-get-realtime-tracking-results-cn.html#realtime
也不是很复杂,直接上代码
// 云函数入口文件const cloud = require('wx-server-sdk')const urllib = require('urllib')const key = 'yourkey'cloud.init()// 云函数入口函数exports.main = async(event, context) => { const wxContext = cloud.getWXContext() const openid = wxContext.OPENID const com =event.com || 'yunda' const num = event.num || '800398697338673387' const api_base = 'https://api.trackingmore.com/v2/trackings/realtime' // const api_base = 'https://httpbin.org/post' let {status, data} = await urllib.request(api_base, { method: 'POST', contentType:'json', headers: { "Trackingmore-Api-Key": key}, data: { "tracking_number": num, "carrier_code": com }, dataType: 'json' }) return { status, data }}
这次测试一次通过,no error, no warn.
#5
关键代码就这些了,如果你有其他疑问、需求或者需要小程序端完整源码。加我微信一起交流