作者:浙江小雨

社群有狐友提问:如何在vfp中跟踪我在安能物流发出货物的实时状态数据?


查询和追踪快递单的流向有这么难吗?No,用猫框分分种搞定!

我们找来了快递鸟物流查询接口http://www.kdniao.com/。

第一步:注册新用户。

填入手机号,获取验证码,注册。

第二步,实名认证。

填写自己企业的名称,地址,联系电话,证照上传。

第三步,购买快递物流查询服务。

这里,我们选择免费的就可以了。有四家快递公司的单子是可以免费查询的。

第四步,取得调用的帐号和KEY。

第五步,按接口文档,对接数据传递。

从网站上下载接口文档。

看到以下说明:

  1. 我们可以看到这个一个http接口,使用POST传参的。网址如下:
    lcUrl=[ https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx]
  2. 请求的编码格式为:
    “application/x-www-form-urlencoded;charset=utf-8”
    这个就是我们POST请求前设置的请求头。
  3. 请求全部内容,有一定格式并进行密文的签名。
    (1)内容为一串JSON字符串 {‘OrderCode’:‘’,‘ShipperCode’:‘SF’,‘LogisticCode’:‘118954907573’}

(2)密文签名的规则为:

把(jsonStr+APIKey)进行MD5加密, 然后Base64编码, 最后 进行URL(utf-8)编码
(3)最后发送的字符串为:

string PostStr = “RequestType=1002&EBusinessID= used &RequestData=jsonStr
&DataSign= datasign&DataType=DataType”

第六步,用猫框来写我们的VFP代码,进行对接。

有了上面的分析,我们可以直接写代码了。

  1. 先把需要的固定的参数定义一下。
    lcid=[1774] &&填写用户ID
    lcAPIkey=[e26ac096-
    ---31619b53322d] &&填入API KEY

lcurl = https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx &&调用的网址。

lcDataType = “2” &&返回的数据类型
lccharset = “UTF-8” &&charset的格式

**请求内容的字符串 ,一个圆通快递的单子,圆通简称代码:YTO ,快递单号: YTO118461988807

TEXT TO jsonStr NOSHOW TEXTMERGE PRETEXT 15
{“OrderCode”:“”,“ShipperCode”:“YTO”,“LogisticCode”:“YTO118461988807”}
ENDTEXT

  1. 计算出加密的签名。
    我们知道签名格式为:
    把(jsonStr+APIKey)进行MD5加密, 然后Base64编码, 最后 进行URL(utf-8)编码
    lcdata=jsonStr+lcAPIkey &&这里注意,如果含有中文,需要进utf-8转码。
    lcmd5data=md5string(lcdata) &&MD5加密
    lcmd5data=LOWER(lcmd5data) &&特别注意,这里MD5需要小写。
    lcbasedata=STRCONV(lcmd5data,13) &&base64编码
    lcURLdata=URLEncode(lcbasedata) &&进行URL编码。
    lcdatasign=lcURLdata &&最终形成签名。

我们这里一步一步,把加密过程都分解出来了。这样对初学者更容易看得懂一些。

  1. 请求内容的字符串,进行URL编码
    lcURLjsonSTR=URLEncode(jsonStr)

  2. 组织我们最终的发送字符串。
    格式如下:RequestType=1002&EBusinessID= used &RequestData=jsonStr
    &DataSign= datasign&DataType=DataType

TEXT TO lcPostStr NOSHOW TEXTMERGE PRETEXT 15
RequestType=1002&EBusinessID=<>&RequestData=<>&DataSign=<>&DataType=<>
ENDTEXT

  1. 最后就是发送了。

*建一个发送浏览器。
WebClient=Newobject(“Qiyu_HttpClient”,“Qiyu_HttpClient.prg”)
*设置POST发送
WebClient.method=“post”

*设置二个请求头。
WebClient.setHeader(“Content-type”,“application/x-www-form-urlencoded”)
WebClient.setHeader(“charset”,“utf-8”)
*发送
cData=WebClient.send(lcUrl,lcPostStr)

看一下,返回的结果。
If !Isnull(cData)
Messagebox(cData)
Else
Messagebox(WebClient.msg)
Endif

我传的单号是随意取的,他返回一个“暂无轨迹信息”,那就是成功了。

附:完整VFP源码


lcid=[17****74]                &&填写用户ID
lcAPIkey=[e26ac096-****-****-****-31619b53322d]        &&填入API KEYlcurl ="https://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx"   &&调用的网址。lcDataType = "2"             &&返回的数据类型
lccharset = "UTF-8"              &&charset的格式**请求内容的字符串 ,一个圆通快递的单子,圆通简称代码:YTO ,快递单号: YTO118461988807
TEXT TO jsonStr NOSHOW TEXTMERGE PRETEXT 15
{"OrderCode":"","ShipperCode":"YTO","LogisticCode":"YTO118461988807"}
ENDTEXT *把(jsonStr+APIKey)进行MD5加密, 然后Base64编码, 最后 进行URL(utf-8)编码lcdata=jsonStr+lcAPIkey        &&这里注意,如果含有中文,需要进utf-8转码。
lcmd5data=md5string(lcdata)        &&MD5加密
lcmd5data=LOWER(lcmd5data)         &&特别注意,这里MD5需要小写。
lcbasedata=STRCONV(lcmd5data,13)   &&base64编码
lcURLdata=URLEncode(lcbasedata)    &&进行URL编码。
lcdatasign=lcURLdata               &&最终形成签名。*jsonStr  进行URL(utf-8)编码
lcURLjsonSTR=URLEncode(jsonStr)*最终的发送字符串
TEXT TO lcPostStr NOSHOW TEXTMERGE PRETEXT 15
RequestType=1002&EBusinessID=<<lcid>>&RequestData=<<lcURLjsonSTR>>&DataSign=<<lcdatasign>>&DataType=<<lcDataType>>
ENDTEXT *建一个发送浏览器。
WebClient=Newobject("Qiyu_HttpClient","Qiyu_HttpClient.prg")
*设置POST发送
WebClient.method="post"*设置二个请求头。
WebClient.setHeader("Content-type","application/x-www-form-urlencoded")
WebClient.setHeader("charset","utf-8")
*发送
cData=WebClient.send(lcUrl,lcPostStr)If !Isnull(cData)Messagebox(cData)
ElseMessagebox(WebClient.msg)
Endif

查询和追踪快递单的流向有这么难吗?用VFP其实太简单相关推荐

  1. 手把手教你怎么批量查询中通快递单号

    做电商或者物流的小伙伴,常常会被如何批量查询快递单号并追踪快递物流这个问题所困扰,逐个复制粘贴查询的话,不但浪费精力,也浪费时间.今天小编来分享一个辅助工具:"固乔快递查询助手", ...

  2. 可以批量查询韵达快递单号的软件推荐

    作为电商商家,一次性发出大量快递之后,要通过什么办法才能快速及时地查询追踪快递单号的物流状态呢?接下来,小编给大家分享一款实用的快递查询工具:"固乔快递查询助手",教你快速批量查询 ...

  3. 批量查询韵达快递单号物流信息的教学分享

    小伙伴们是不是经常为了如何批量查询大量的快递单号并导出查询数据而头疼?今天小编给大家安利一款实用的辅助工具:"固乔快递查询助手",这是一款全自动批量查询跟踪快递信息的软件,采用官方 ...

  4. 物流查询,怎么查快递单号看包裹走到哪里了

    最近有很多朋友在问,如何快速查询多家快递单号的物流信息呢?有没有简单一点的方法?小编的回答当然是有的啦,下面一起来试试吧. 需要哪些工具? 安装一个快递批量查询高手 快递单号若干 怎么快速查询? 打开 ...

  5. 教你快速查询大量圆通快递单号的物流信息

    圆通快递单号的物流信息可以在电脑上批量查询,并分析是否签收吗?小编的回答当然是可以的,下面随小编一起用快递批量查询高手来操作. 所需工具 安装一个快递批量查询高手(注册介绍人填:与我) 多个圆通快递的 ...

  6. 将查询好的快递单号以及物流导出EXCEL表格

    最近有很多朋友在问,如何查询多家快递,并将物流导出EXCEL表格保存呢?今天小编给大家分享一个新的查询技巧,下面一起来试试吧. 材料准备: 一台Win系统的电脑 快递单号若干 步骤演示: 运行[快递批 ...

  7. 同时查询多个快递单号物流最简单实用的方法

    快递已经成为我们生活中经常接触的东西,像做电商的商家每天都要跟踪,查询快递物流到哪里了.那么如何很快的时查询到大量的快递所在的位置呢?下面教大家一种即简单又实用的查询快递单号物流的方法.一起来看操作吧 ...

  8. 如何对查询好的快递单号物流进行删除的几种方法

    在使用某些技巧快递查询每个快递单号的物流后,该如何对不需要的单号进行删除呢?其实,操作是非常简单的,下面随小编一起来学习一下,希望能给大家带来帮助. 需要哪些工具? 快递批量查询高手 多个快递单号 怎 ...

  9. 大批量查询顺丰快递单号在途信息并导出EXCEL表格

    顺丰单号的物流信息可以查询吗?可以在电脑上操作吗?快递批量查询高手可以支持吗?小编的回答当然是可以的,下面就以批量查询顺丰快递物流并将信息导出EXCEL表格为例,一起来操作. 分析顺丰物流 进入快递批 ...

  10. 如何一次性导出查询好的快递单号以及物流详情

    最近有很多朋友在问,如何查物流,并将查询好的所有单号以及物流详情以导出表格的形式保存到电脑上呢?不知道如何操作的宝贝们,下面一起来试试吧. 材料准备: 一台Win系统的电脑 快递单号若干 步骤演示: ...

最新文章

  1. [python教程入门学习]Python标准库映射类型与可散列数据类型的关系
  2. linux命令(7)—— 管道符|、ps
  3. [CF]Codeforces Round #529 (Div. 3)
  4. mysql8.0主从配置,MySQL 8.0主从服务器(Master-Slave)配置
  5. 《C和指针》——指向数组的指针(逐个移动和逐行的区别)
  6. 联邦知识蒸馏概述与思考(续)
  7. Ubuntu12.04 搭建TFTP服务
  8. 将java.util.Date转换为java.time.LocalDate
  9. LGOJP3959 宝藏
  10. 解决 vim 中文编码问题
  11. MyBatis-SELECT基本查询
  12. 求和函数计算机语言,在 Excel 中,计算求和的函数是 ____。
  13. 一款支持vue3 的颜色选择器
  14. android 获取图片信息 之 ExifInterface
  15. windows server2012 r2修改密码
  16. 五自由度简单机械臂运动学及动力学分析|基于MATLAB机器人工具箱Rvctool
  17. Android获取手机WiFi IP地址,MAC地址和网关地址程序实例
  18. 最长不含重复字符的子字符串(C++)
  19. 背景图片填满整个Div
  20. LSTM长短期记忆模型

热门文章

  1. 3S基础知识:MapX应用教程—查询
  2. Win 7 Boot Updater(Win7开机引导动画修改工具)v0.0.1.3中文免费版
  3. 台达plc使用c语言编程软件,台达PLC编程软件_台达PLC编程软件官方版下载[plc编程]-下载之家...
  4. Linux下输入法切换快捷键设置
  5. SVN安装及基本操作
  6. matlab2014b下载 32位,matlab 2014b 32位
  7. 友图自动排料软件使用简介
  8. 实用新型专利申请文件撰写示例
  9. xencenter服务器不显示,XenCenter 不能连接 XenServer 解决方法
  10. 数学建模:层次分析法