开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2681|回复: 2
收起左侧

[已解决] 易语言调用网站api的问题

 关闭 [复制链接]
结帖率:100% (2/2)
发表于 2019-10-19 14:21:38 | 显示全部楼层 |阅读模式   广东省深圳市
14精币


我需要搞定一个交易平台的下单api, api说明地址https://binance-docs.github.io/apidocs/spot/cn/#api

下面是关于这个接口的描述,我从网页里复制过来的,我需要的那个接口是需要
  • API-key 和 前面的,我要问的就是如何提交key和签名



接口鉴权类型
  • 每个接口都有自己的鉴权类型,鉴权类型决定了访问时应当进行何种鉴权。
  • 鉴权类型会在本文档中各个接口名称旁声明,如果没有特殊声明即默认为 NONE。
  • 如果需要 API-keys,应当在HTTP头中以 X-MBX-APIKEY字段传递。
  • API-keys 与 secret-keys 是大小写敏感的
  • API-keys可以被配置为只拥有访问一些接口的权限。 例如, 一个 API-key 仅可用于发送交易指令, 而另一 API-key 则可访问除交易指令外的所有路径。
  • By default, API-keys 可访问所有鉴权路径.
[td]
鉴权类型
描述
NONE不需要鉴权的接口
TRADE需要有效的 API-Key 和签名
USER_DATA需要有效的 API-Key 和签名
USER_STREAM需要有效的 API-Key
MARKET_DATA需要有效的 API-Key
  • TRADE, MARGIN 和USER_DATA 接口是 签名(SIGNED)接口.

SIGNED (TRADE、USER_DATA AND MARGIN) Endpoint security
  • 调用SIGNED 接口时,除了接口本身所需的参数外,还需要在query string 或 request body中传递 signature, 即签名参数。
  • 签名使用HMAC SHA256算法. API-KEY所对应的API-Secret作为 HMAC SHA256 的密钥,其他所有参数作为HMAC SHA256的操作对象,得到的输出即为签名。
  • 签名 大小写不敏感.
  • “ totalParams”定义为与“ request body”串联的“ query string”。
时间同步安全
  • 签名接口均需要传递 timestamp参数,其值应当是请求发送时刻的unix时间戳(毫秒)。
  • 服务器收到请求时会判断请求中的时间戳,如果是5000毫秒之前发出的,则请求会被认为无效。这个时间空窗值可以通过发送可选参数 recvWindow来定义。






‘-----------------------------------------------------------下面是一些他们的例子--------------------------------------------
POST /api/v3/order 的示例
以下是在linux bash环境下使用 echo openssl 和curl工具实现的一个调用接口下单的示例 apikey、secret仅供示范
[td]
Key
Value
apiKeyvmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A
secretKeyxxtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j
[td]
参数
取值
symbolLTCBTC
sideBUY
typeLIMIT
timeInForceGTC
quantity1
price0.1
recvWindow5000
timestamp1499827319559




$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559" | openssl dgst -sha256 -hmac "xxtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
    (stdin)= c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71

我猜测上面这段是把symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559参数用用sha256来加密,加密使用的密钥是xxtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0,加密后得到的密文是c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71 。为了验证我的想法,我去测试了一次,加密后得到的密文是完全一致的。

翻译为易语言代码就是

参数=”symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=”+时间_取现行时间戳()
密文=sha256(参数,"xxtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j")
这个sha256()是一个我另外写的子程序,能加密就对了

$ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST 'https://api.binance.com/api/v3/order' -d 'symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71'

我猜测上面这段是一个post提交,提交地址=“https://api.binancezh.com/api/v3/orde”,,实际域名是binancezh.com,binance.com需要翻xx才能访问

提交数据=参数+”&signature=“+密文

附加协yi直接填写到常量里,填写的内容为   "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A"   那个常量里只有这个内容

然后用精易模块网页_访问


返回文本 = 到文本 (网页_访问 (提交地址, 1, 参数 + “&signature=” + 密文, , , #协yi头))   



我测试了发现返回404,所以我完全不懂了,不知道是哪一步我猜错了,希望有大神指点一下,万分感谢。

最佳答案

查看完整内容

.版本 2 .子程序 功能_网页访问, 文本型, , 本命令由【精易网页调试助手】生成,请配合精易模块使用。 .局部变量 局_网址, 文本型 .局部变量 局_方式, 整数型 .局部变量 局_提交数据, 文本型 .局部变量 局_提交协yi头, 文本型 .局部变量 局_结果, 字节集 .局部变量 局_返回, 文本型 局_网址 = "https://api.binance.com/api/v3/order" 局_方式 = 1 局_提交数据 = "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quant ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:89% (8/9)
发表于 2019-10-19 14:21:39 | 显示全部楼层   山东省烟台市
.版本 2

.子程序 功能_网页访问, 文本型, , 本命令由【精易网页调试助手】生成,请配合精易模块使用。
.局部变量  局_网址, 文本型
.局部变量  局_方式, 整数型
.局部变量  局_提交数据, 文本型
.局部变量  局_提交协yi头, 文本型
.局部变量  局_结果, 字节集
.局部变量  局_返回, 文本型
局_网址 = "https://api.binance.com/api/v3/order"
局_方式 = 1
局_提交数据 = "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1571468538&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71"
局_提交协yi头 = "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A” + #换行符 + “User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"

局_结果 = 网页_访问_对象 (局_网址, 局_方式, 局_提交数据, , , 局_提交协yi头, , , , , , , , , , , )
局_返回 = 到文本(编码_编码转换对象(局_结果))
返回(局_返回)

'{"code":-2015,"msg":"Invalid API-key, IP, or permissions for action."}
貌似正常?  另外一个地址无返回'

回复

使用道具 举报

结帖率:100% (27/27)

签到天数: 8 天

发表于 2019-10-19 15:16:55 | 显示全部楼层   浙江省宁波市
curl 方式,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表