Foxtable(狐表)用户栏目专家坐堂 → 顺丰接口的问题


  共有9181人关注过本帖树形打印复制链接

主题:顺丰接口的问题

帅哥哟,离线,有人找我吗?
流水
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:265 积分:2936 威望:0 精华:0 注册:2019/7/19 15:14:00
  发帖心情 Post By:2023/1/17 15:15:00 [显示全部帖子]

抄了 蓝版 的代码,看不懂,折腾了两天,一点一点倒腾出查询快递的方式(路由查询)

Dim kd As String = CurrentTable.Current("快递单号") '快递单号
Dim sj As String = "1223" '手机后四位

'拼接JOSN文本
Dim bw As String = "{'language':'zh-CN','trackingType':1,'trackingNumber':[ '" & kd & "'],'methodType': 1,'checkPhoneNo':'" & sj & "'}"
Dim jo As JObject = JObject.Parse(bw) '解析JOSN

Dim hc As New HttpClient("https://bspgw.sf-express.com/std/service") '定义一个客户端类,区分生产和沙盒
hc.C '请求头以UTF8的编码方式,这个位置的代码上传就没有,可以去找蓝版的源码复制过来;
Dim xml As String = CompressJson(JObject.Parse(bw)) '压缩JSON,业务报文
Dim ts As String = CLng((Date.Now - New Date(1970, 1, 1)).TotalSeconds) '时间戳_将时段转换为为秒的数值,并将秒数转换为长整数
Dim checkword = "自己的客户校验码" '客户校验码,区分生产和沙盒

'清除可能存在的错误字符,空格或加号
Dim builder As New StringBuilder() '新的大规模合并字符串
For Each c As Char In xml & ts & checkword '单个字符遍历字符串
    If System.Web.HttpUtility.UrlEncode(c.ToString()).Length > 1 Then '判断字符串
        builder.Append(System.Web.HttpUtility.UrlEncode(c.ToString()).ToUpper()) '清除字符串多余字符
    Else
        builder.Append(c) '直接合并
    End If
Next

'将报文MD5加密并通过BASE64生成数字签名
Dim encode As String = Convert.ToBase64String(New System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(builder.ToString()))) 

hc.FormData.Add("partnerID", "自己的客户编码") '客户编码
hc.FormData.Add("requestID", Guid.NewGuid().ToString()) 'UUID码
hc.FormData.Add("serviceCode", "EXP_RECE_SEARCH_ROUTES") '接口服务代码
hc.FormData.Add("timestamp", ts) '时间戳
hc.FormData.Add("msgDigest", encode) '加密的信息
hc.FormData.Add("msgData", xml) '报文信息
Dim ret As String = hc.GetData() '服务器返回的数据

'顺丰返回的格式不会遍历,一层一层的转
jo = JObject.Parse(ret) '解析对象
bw = jo("apiResultData") '返回文本
jo = JObject.Parse(bw) '解析对象
Dim ja As JArray = jo("msgData")("routeResps") '数组
jo = ja(0) '对象

If jo("routes") IsNot Nothing Then
    For Each jt As JToken In jo("routes")
        Output.Show(jt("acceptAddress").ToString & " | " & jt("acceptTime").ToString & " | " & jt("remark").ToString)
    Next
End If
[此贴子已经被作者于2023/1/17 15:17:34编辑过]

 回到顶部