以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]这个api怎么写?圆通空单api  (http://foxtable.com/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)



此主题相关图片如下:3.png
按此在新窗口浏览图片

此主题相关图片如下:2.png
按此在新窗口浏览图片

此主题相关图片如下:1.png
按此在新窗口浏览图片
[此贴子已经被作者于2020/3/19 23:11:35编辑过]

--  作者:李孝春
--  发布时间:2020/3/1 0:59:00
--  回复:(zto001)[求助]这个api怎么写?
按顺序组合操作进行md5计算
--  作者:zto001
--  发布时间:2020/3/1 10:56:00
--  
按顺序组合操作进行md5计算
是怎么弄。我就是这个不懂,是这样吗?拼成字符串进行MD5计算?
签名数据= MD5计算代码( "KA4js3k2APPIDK100122APPSecretKA42k2ltemName衣服ItemNumber ltemWeightO 5LogisticIDB2201601031ReceiverAddress华徐公路3029弄28号ReceiverArea青浦区区ReceiverCity.上海市eceiverMobile13821025484ReceiverName王勇ReceiverPostcode 201 705ReceiverProv,上海SenderAddress华徐公路3029弄28号SenderArea青浦区SenderCity上海市SenderMobile1382 1025484SenderNarme王勇SenderPostcode351200SenderProv.上海KA4js3k2")  
hc.FormData.Add("APPSign",签名数据 )




--  作者: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就行了  就是我截图中的

别人的时调用的