以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- API接口 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=170960) |
-- 作者:飘过的巨蟹座 -- 发布时间:2021/8/12 15:07:00 -- API接口 老师,这个接口该怎么写啊,研究了好久也没有搞明白 域名:https://vsi-api.shouqianba.com 端口:443 请求示例
|
-- 作者:有点蓝 -- 发布时间:2021/8/12 15:54:00 -- 到这里下载c#的源码使用:https://doc.shouqianba.com/zh-cn/api/sign.html。 方法1、可以直接编译源码为dll引用 2、自行转换为vb.net代码参考着做:https://converter.telerik.com/, 下面举例使用激活接口: 全局代码: Public Function MD5(ByVal value As String) As String Dim result As New StringBuilder() Dim cl1 As String = value Dim md5 As New System.Security.Cryptography.MD5CryptoServiceProvider() Dim s As Byte() = md5.ComputeHash(Encoding.GetEncoding("UTF-8").GetBytes(cl1)) For i As Integer = 0 To s.Length - 1 result.AppendFormat("{0:x2}", s(i)) Next Return result.ToString() End Function 调用 Dim hc As New HttpClient("https://vsi-api.shouqianba.com/terminal/activate") hc.ContentType = "application/json" Dim jo As New JObject jo("app_id") = "xxx" jo("code") = "xxx" ……自行补全需要的接口数据 dim s1 as string = jo.tostring dim sign as string = MD5(s1) dim vendor_sn as string = "xxx签名序列号" hc.Headers.Add("Authorization",vendor_sn & " " & sign ) hc.Content = s1 Dim ret As String = hc.GetData() msgbox(ret) |
-- 作者:飘过的巨蟹座 -- 发布时间:2021/8/12 17:15:00 -- 蓝老师,这个全局代码没有看明白,能帮我解释一下吗? 全局代码: Public Function MD5(ByVal value As String) As String Dim result As New StringBuilder() Dim cl1 As String = value Dim md5 As New System.Security.Cryptography.MD5CryptoServiceProvider() Dim s As Byte() = md5.ComputeHash(Encoding.GetEncoding("UTF-8").GetBytes(cl1)) For i As Integer = 0 To s.Length - 1 result.AppendFormat("{0:x2}", s(i)) Next Return result.ToString() End Function |
-- 作者:有点蓝 -- 发布时间:2021/8/12 17:48:00 -- 就是把json的内容进行MD5加密 |
-- 作者:飘过的巨蟹座 -- 发布时间:2021/8/12 23:29:00 -- Dim hc As New HttpClient("https://vsi-api.shouqianba.com:443/upay/v2/precreate") hc.C Dim jo As New JObject jo("client_sn") = "2021081219250001" jo("operator") = "qwew" jo("payway") = "3" jo("subject") = "peisongdan2021081219250001" jo("terminal_sn") = "100023060017446706" jo("total_amount") = "100" Dim s1 As String = jo.tostring Dim sn As String ="100023060017446706" Dim tmkey As String = "c3a0446eef811f9b308acec1377f38a9" Dim sign11 As String = MD5(s1 & "key=" & tmkey) Dim sign As String = sign11.ToUpper() Dim postdata As String = s1 & "sign=" & sign hc.Headers.Add("Authorization:", sn & " " & sign) hc.Content = postdata msgbox(postdata) Dim ret As String = hc.GetData() msgbox(ret) 提交后显示签名错误,然后百度了一下,好像是MD5的结果不一样
[此贴子已经被作者于2021/8/12 23:49:44编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/8/13 8:38:00 -- Dim sign11 As String = MD5(s1 & tmkey) 去掉这句:Dim sign As String = sign11.ToUpper(),开发文档没有说转大写,源码也没有这种用法
|
-- 作者:飘过的巨蟹座 -- 发布时间:2021/8/13 13:00:00 -- MD5这段的加密出来的结果和正确的不太一致 { "client_sn":"2021081219250001", "operator":"qwew", "payway":"3", "subject":"peisongdan2021081219250001", "total_amount":"100" }c3a0446eef811f9b308acec1377f38a9 用狐表加密出来的字段是a41dacc0b2de5bcf4b2bcb3b5f3b5954 而正确的加密字段是F2ADA6FF266624511A14CE5EEC693F98 所以不知道为什么了 [此贴子已经被作者于2021/8/13 13:08:22编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/8/13 13:48:00 -- 这个您咨询他们客服了,加密是照搬他们源码的,有问题找他们。 如果调用激活接口没有问题,这个加密方法肯定也没有问题。注意其它接口是使用激活接口返回的cn和ley
|
-- 作者:飘过的巨蟹座 -- 发布时间:2021/8/13 16:39:00 -- 我试了一下还是加密的问题,如果都是123,那么两边的加密结果都是一致的,但是一旦有了换行,结果就不一样了,这个该怎么办呢? 这样加回车符对吗?Dim s2 As String = MD5("12" & Chr(13) & "3")
|
-- 作者:有点蓝 -- 发布时间:2021/8/13 16:51:00 -- Dim s2 As String = MD5("12" & vbcrlf & "3") |