评论

小程序接入快递查询API实现快递查询

个人小程序不能接入官方的物流助手,所以选用接入第三方快递查询API实现快递查询

#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


关键代码就这些了,如果你有其他疑问、需求或者需要小程序端完整源码。加我微信一起交流



演示视频点击 https://mp.weixin.qq.com/s/XqH2PEFRGV-FGW4eXHePgA 查看

点赞 2
收藏
评论

3 个评论

登录 后发表内容