#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 拼接后md5
const 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
关键代码就这些了,如果你有其他疑问、需求或者需要小程序端完整源码。加我微信一起交流
小程序接入快递查询服务,可以直接用小程序插件的,有个【快递跟踪】的快递查询插件,不用对接api,也不需要跳出小程序,可以了解一下:https://developers.weixin.qq.com/community/develop/article/doc/0002cc3805c5b853d4dcbfa8558413
自用还是可以的。
你好 第二种的服务器不稳定呀 进不去