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


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

主题:接口调用问题

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


加好友 发短信
等级:童狐 帖子:288 积分:2404 威望:0 精华:0 注册:2017/6/19 23:37:00
接口调用问题  发帖心情 Post By:2019/4/19 16:00:00 [只看该作者]

1.交互方式

a)采用HTTP方式交互数据,目前只支持POST方式

b)系统级参数param的值需经过urlcode后提交

c)所有时间格式为: yyyy-MM-dd HH:mm:ss

d)报文采用JSON格式

2.系统级参数

appkey —— 应用标识

timestamp —— 时间戳(格式为2015-01-01 00:00:00)

v —— API协议版本(1.0)

method —— API方法名称

param —— 业务参数内容(json格式)

sign —— 参数的md5加密字符串,详情参考如下:系统签名

3.系统签名

首先双方约定一个加密字符串 appsecret,

所有传递的API参数用appsecret进行签名,签名信息保存在参数sign中提交。接受请求方应按规则验证请求是否合法,方法如下:

根据参数名称(除sign本身以外)将所有请求参数按照参数字母先后顺序排序:key+value...key+value

例如:将appkey=1,method=2,param=3,v=4,timestamp=5 参数名和参数值链接后,得到拼装字符串appkey1method2param3timestamp5v4

将appsecret拼接到参数字符串头、尾,如appsecret=zzz,拼接后的字符串为

zzzappkey1method2param3timestamp5v4zzz

对整个字符串做md5加密(32位小写),即为sign的内容,如上面字符串得到的sign为:fd7c0e699ad5dab8ca83358086737cdc

如果sign的内容相符则认为是合法的调用,否则作为非法调用处理,返回错误信息。

除了验证sign以外,还需验证timestamp,如果timestamp的时间与当前时间相差5分钟以上,则认为提交的数据已过期,返回错误信息。

4.请求示例

查询单个订单

http://47.104.99.203:8081/OMS_Interface/api?

appkey=fxtest&v=1.0&timestamp=2015-01-01 12:00:00

&method=StockOut.Notify.Query

&param={"Owner": "","Code": "160427101336895"}

&sign=fd7c0e699ad5dab8ca83358086737cdc




在foxtalbe中对式例进行测试,代码如下


Dim hc As New HttpClient("http://47.104.99.203:8081/OMS_Interface/api") hc.FormData.Add("appkey","fxtest") hc.FormData.Add("timestamp","2019-04-19 12:27:00") hc.FormData.Add("v","1.0") hc.FormData.Add("method","StockOut.Notify.Query") hc.FormData.Add("param","{""Owner"": """",""Code"": ""160427101336895""}") hc.FormData.Add("sign", "fd7c0e699ad5dab8ca83358086737cdc") Dim ret As String = hc.getData() msgbox(ret)



结果报错,经咨询对方的签名是md5加密计算的,在net中直接调用md5工具类计算,那我在foxtable中该如何处理签名呢。




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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/19 16:09:00 [只看该作者]

比如

 

Dim str = "qqqq"
Dim s = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5")
msgbox(s)


 回到顶部