Foxtable(狐表)用户栏目专家坐堂 → api接口请求,报签名错误,怎么回事?


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

主题:api接口请求,报签名错误,怎么回事?

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


加好友 发短信
等级:童狐 帖子:289 积分:2212 威望:0 精华:0 注册:2014/9/12 16:35:00
api接口请求,报签名错误,怎么回事?  发帖心情 Post By:2017/8/18 15:18:00 [只看该作者]

各位大师,我是一菜鸟,在做一个api接口请求的时候,报签名错误,怎么回事?
{"success":false,"errorCode":"Base Param error","subErrorCode":"ErrorSign","errorDesc":"基本参数错误","subErrorDesc":"签名错误","requestMethod":null}

api接口提供的说明如下:

http://gop.guanyierp.com/interface/gy.erp.introd.htm


我的代码:

Dim jo As New JObject
jo("appkey") = "APPKEy"
jo("sessionkey") = "会话密钥"
jo("method") = "gy.erp.trade.get"
jo("page_no")="1"
jo("page_size")="10"
jo("start_date") = "2017-08-16 00:00:00"
jo("end_date") = "2017-08-16 24:00:00"
jo("date_type") =2
'jo("order_state") = 2
'jo("shop_code") = 2

Dim postjsonstring As String = jo.ToString
Dim secret As String = "安全密钥"
Dim sign As String = secret &  postjsonstring  &  secret 

sign = MD5Encrypt(sign)
jo("sign") = sign.ToUpper

postjsonstring= jo.ToString

    '定义接口url
    Dim url As String = String.Format("http://v2.api.guanyierp.com/rest/erp_open/")
    'Json序列化到内存流
    Using ms As New System.IO.MemoryStream()
    Dim bytes = ConvertHelper.EncodingToBytes(postjsonstring , System.Text.Encoding.UTF8)
    ms.Write(bytes, 0, bytes.Length)
    ms.Seek(0, System.IO.SeekOrigin.Begin)
    Dim jsonString = Functions.Execute("HttpPost",url, ms) 
    Dim mresult = ConvertHelper.FromJson(Of MmsgResult)(jsonString)
e.Form.Controls("TextBox1").Text = jsonString

问题出在哪里呢?

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110507 积分:562419 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/18 15:31:00 [只看该作者]

加密试试
……
Dim sign As String = secret &  postjsonstring  &  secret 
Using md5Hash As System.Security.Cryptography.MD5 = System.Security.Cryptography.MD5.Create()
Dim data As Byte() = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(sign ))
Dim sBuilder As New StringBuilder()
Dim i As Integer
For i = 0 To data.Length - 1
    sBuilder.Append(data(i).ToString("x2"))
Next i
jo("sign")  = sBuilder.ToString().ToUpper
End Using
……


 回到顶部
帅哥哟,离线,有人找我吗?
zcl
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:289 积分:2212 威望:0 精华:0 注册:2014/9/12 16:35:00
  发帖心情 Post By:2017/8/18 15:41:00 [只看该作者]

蓝大侠,修改以后签名错误没有,但是说"用户输入参数格式有误“,我已经核对了,应该没有问题呀

{
  "appkey": "用户ID",
  "sessionkey": "1055403fe6ad4c7381ec4bed0cd16a61",
  "method": "gy.erp.trade.get",
  "page_no": "1",
  "page_size": "10",
  "start_date": "2017-08-16 00:00:00",
  "end_date": "2017-08-16 24:00:00",
  "date_type": 2,
  "sign": "2C23049415224C1E49527EFAE7A5A080"
}
返回值:
{"success":false,"errorCode":"500","subErrorCode":"","errorDesc":"用户输入参数格式有误","subErrorDesc":"","requestMethod":""}

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110507 积分:562419 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/18 16:00:00 [只看该作者]

应该是数据类型不一致,比如page_no是整数,不是字符串

jo("page_no")=1

 回到顶部
帅哥哟,离线,有人找我吗?
zcl
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:289 积分:2212 威望:0 精华:0 注册:2014/9/12 16:35:00
  发帖心情 Post By:2017/8/18 16:17:00 [只看该作者]

他给的例子是字符呀,而且使用数字,也不行
[此贴子已经被作者于2017/8/18 16:18:32编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110507 积分:562419 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/18 16:38:00 [只看该作者]

看不出其它问题,试试这种方式post数据

Dim hc As New HttpClient("http://v2.api.guanyierp.com/rest/erp_open/")
hc
.Content = postjsonstring
Dim
 ret As String = hc.GetData()
msgbox(ret)

 回到顶部
帅哥哟,离线,有人找我吗?
zcl
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:289 积分:2212 威望:0 精华:0 注册:2014/9/12 16:35:00
  发帖心情 Post By:2017/8/18 16:41:00 [只看该作者]

用这种办法又回到一开始 的哪个问题了,签名错误:

{"success":false,"errorCode":"Base Param error","subErrorCode":"ErrorSign","errorDesc":"基本参数错误","subErrorDesc":"签名错误","requestMethod":null}

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110507 积分:562419 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/8/18 16:49:00 [只看该作者]

问问官方客服有没有.net的连接例子,看看是怎么连的。

 回到顶部