以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]这个api怎么写?圆通空单api (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=146717) |
|
-- 作者:zto001 -- 发布时间:2020/2/29 23:30:00 -- [求助]这个api怎么写?圆通空单api [求助]这个api怎么写? 1.1.3数据处理没看懂。 签名数字怎么加密?商品信息、收件人信息 、发货人信息 这几个怎么写进去,用josn吗? Dim hc As new HttpClient("http://请求地址") hc.FormData.Add("APPSecret","密钥") hc.FormData.Add("Appide","商户ID") hc.FormData.Add("APPSign",签名数据 ) hc.FormData.Add("Sender", 发货人信息 ) hc.FormData.Add("Receiver",收件人信息 ) hc.FormData.Add("Itemso“,商品信息”) \'Output.Show(hc.GetData) [此贴子已经被作者于2020/3/19 23:11:35编辑过]
|
|
-- 作者:李孝春 -- 发布时间:2020/3/1 0:59:00 -- 回复:(zto001)[求助]这个api怎么写? 按顺序组合操作进行md5计算 |
|
-- 作者:zto001 -- 发布时间:2020/3/1 10:56:00 --
|
|
-- 作者:chen37280600 -- 发布时间:2020/3/1 10:59:00 -- 我只能告诉你避开一个坑。狐表的MD5加密是24位的,市面上接口流行的是32位,这里需要你自己重新定义一个MD5出来。 全局代码添加如下: \'通过MsgBox(MD5Encrypt2("12345678", 32)) 调用 Public Function MD5Encrypt2(ByVal strSource As String, ByVal Code As Int16) As String Dim dataToHash As Byte() = (New System.Text.ASCIIEncoding).GetBytes(strSource) Dim hashvalue As Byte() = CType(System.Security.Cryptography.CryptoConfig.CreateFromName("MD5"), System.Security.Cryptography.HashAlgorithm).ComputeHash(dataToHash) Dim ATR As String = "" Dim i As Integer Select Case Code Case 16 \'选择16位字符的加密结果 For i = 4 To 11 ATR &= Hex(hashvalue(i)).PadLeft(2, "0").ToLower Next Case 32 \'选择32位字符的加密结果 For i = 0 To 15 ATR &= Hex(hashvalue(i)).PadLeft(2, "0").ToLower Next Case Else \'Code错误时,返回全部字符串,即32位字符 For i = 0 To 15 ATR &= Hex(hashvalue(i)).PadLeft(2, "0").ToLower Next End Select Return ATR End Function |
|
-- 作者:zto001 -- 发布时间:2020/3/11 23:45:00 -- Dim APPSign,寄件人,寄件电话,寄件省,寄件市,寄件区,寄件地址,商家密钥,商家ID,商品名,订单编号,收件人,收件电话,收件省,收件市,收件区,收件地址,商品数量,商品重量,收件邮编,寄件邮编 As String 寄件人="王勇" 寄件电话="13821025484" 寄件省="上海" 寄件市="上海" 寄件区="青浦区区" 寄件地址="华徐公路3029弄28号" 寄件邮编="201705" 收件人="王勇" 收件电话="13821025484" 收件省="上海" 收件市="上海" 收件区="青浦区" 收件地址="华徐公路3029弄28号" 收件邮编="3512000" 商家密钥="KA4js3k2" 商家ID="K100122" 商品名="衣服" 商品数量="1" 商品重量="0.5" 订单编号="B2201601031" Dim sign As String = 商家密钥 & "APPID" & 商家ID & "APPSecret" & 商家密钥 & "ItemName" & 商品名 & "ItemNumber" & 商品数量 & "ItemWeight" & 商品重量 & "LogisticID" & 订单编号 & "ReceiverAddress" & 收件地址 & "ReceiverArea" & 收件区 & "ReceiverCity" & 收件市 & "ReceiverMobile" & 收件电话 & "ReceiverName" & 收件人 & "ReceiverPostcode" & 收件邮编 & "ReceiverProv" & 收件省 & "SenderAddress" & 寄件地址 & "SenderArea" & 寄件区 & "SenderCity" & 寄件市 & "SenderMobile" & 寄件电话 & "SenderName" & 寄件人 & "SenderPostcod" & 寄件邮编 & "SenderProv" & 寄件省 & 商家密钥 Output.Show(sign) APPSign=MD5Encrypt2(sign, 32) Output.Show(APPSign) \'7ed9631a8ff6af1b4988e4ba34f894a2 楼上的方法 APPSign=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sign , "MD5") Output.Show(APPSign) \'A29D0B219AADBAD92BC0BC8D45B7F780 另一种加密方法 都不对。跟说明文档里面的不一样,是哪里错了? 返回的结果是 {"Message":"签名校验失败","IsSuccess":false} 是哪错了? Dim hc As new HttpClient("http://122.51.51.119:1862/api/1/v3.0/Order") hc.FormData.Add("Appid", 商家ID) \'ID hc.FormData.Add("APPSecret", 商家密钥) \'密钥 hc.FormData.Add("APPSign",APPSign) \'加密sign hc.FormData.Add("LogisticID",订单编号) \'订单号 hc.FormData.Add( "SenderName",寄件人) \'寄件人 hc.FormData.Add ("SenderPostcode", 寄件邮编) \'寄件邮编 hc.FormData.Add("SenderMobile",寄件电话) \'寄件电话 hc.FormData.Add ("SenderProv",寄件省) \'寄件省 hc.FormData.Add("SenderCity",寄件市) \'寄件市 hc.FormData.Add("SenderArea",寄件区) \'寄件区 hc.FormData.Add ("SenderAddress",寄件地址) \'寄件地址 hc.FormData.Add("ReceiverName",收件人) \'收件人 hc.FormData.Add("ReceiverPostcode",收件邮编) \'收件邮编 hc.FormData.Add("ReceiverMobile",收件电话) \'收件电话 hc.FormData.Add ("ReceiverProv",收件省) \'收件省 hc.FormData.Add("ReceiverCity", 收件市) \'收件市 hc.FormData.Add("ReceiverArea", 收件区) \'收件区 hc.FormData.Add ("ReceiverAddress",收件地址) \'收件地址 hc.FormData.Add("ItemName",商品名) \'商品名字 hc.FormData.Add ("ItemNumber", 商品数量) \'商品件数 hc.FormData.Add ("ItemWeight",商品重量) \'商品总重 Output.Show(hc.GetData)
|
|
-- 作者:zto001 -- 发布时间:2020/3/12 2:54:00 -- 淘宝api需要求租的空包件虚拟物流圆通1块 2020-03-10 22:29:55 public class SignHelper { public static string GetSign(SortedDictionary<string, string> paramList, string appKey = "") { paramList.Remove("APPSign"); StringBuilder sb = new StringBuilder(appKey); foreach (var p in paramList) sb.Append(p.Key).Append(p.Value); sb.Append(appKey); return GetMD5(sb.ToString()); } public static string GetMD5(string str) { if (string.IsNullOrEmpty(str)) return str; var sb = new StringBuilder(32); var md5 = System.Security.Cryptography.MD5.Create(); var output = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); for (int i = 0; i < output.Length; i++) sb.Append(output[i].ToString("X").PadLeft(2, \'0\')); return sb.ToString(); } } 调用 SignHelper.GetSign就行了 就是我截图中的 别人的时调用的
|