在这里致敬所有开发者,我们正在改变整个世界!

用户可在第三方网页或APP中通过VAS授权机制,来获取用户基本信息和接收用户付款,进而实现业务逻辑,共创VAS生态。

VAS钱包的Scheme为vaswallet


申请授权接入

​接入方需在vas钱包授权申请中填写上线的第三方应用相关信息,社区通过评审通过后会在APP中反馈接入情况。

其中授权回调域名配置规范为全域名,比如需要网页授权的域名为:错误! 超链接引用无效。http://www.vasblock.com/music.html 、 http://www.vasblock.com/login.html 都可以进行授权操作。但http://pay.vasblock.com 、 http://music.vasblock.com 、 http://vasblock.com无法进行授权操作。

如果是手机H5发起的授权操作,scheme请填写http或者https,并填写安全回调域名。

​ 接入方申请通过后将获得uuid,accessToken,rsaPrivate,rsaPublic(可在DAPP接入申请记录点击“查看详情”进行查看,如有疑问请发送邮件至vas.github@outlook.com或在github上留言),作用将会在下面介绍。

授权登录流程分为四步:

1、第三方APP激活vaswallet;

2、引导用户进入授权页面同意授权,AID用户点击确认授权后获取openCode

3、钱包APP将openCode返回给接入方APP或H5后台

4、接入方使用openCode和accessToken以及appId(第三方APP申请后获得的uuid)请求钱包后台获取用户aid与address


授权登录

app授权登录

1、APP调用钱包申请授权登录

第三方APP通过SchemeURL调起钱包APP并使用URL编码的JSON传递如下参数

KEY 描述
type 传login 必填
uuid 开通接入服务时获得的app的uuid必填
callbackUrl schemeurl格式的回调地址,schemeurl后不能为空。必填。 例如:appscheme://login
callbackType 为0时,返回openCode将通过"?“或者”&"进行拼接。为1时openCode直接拼接在callbackUrl的最后 默认0 非必填
openCallBackType platform未指定或platform为mobile时生效。openCallBackType为0或空时, 钱包打开callbackurl应用。openCallBackType为1时, 钱包向callbackurl发起http请求并最小化钱包。非必填
platform 调起钱包的终端。如果是手机内调用填写 mobile如果是扫网页二维码填写web

由于IOS系统不允许在scheme使用特殊符号,所以需要对JSON数据进行url编码

需要注意的是,callbackurl本身的参数中如果出现了特殊字符需要提前先对内部参数进行url编码

整体URL编码前

vaswallet://{“type”:“login”,“uuid”:“121212-121212-121212”,“callbackUrl”:“appscheme://login/a/b?d=1&redirect=http%3A%2F%2Fwww.google.com%2Fs%3Fwd%3D12345”}

整体URL编码后

vaswallet://%7B%22type%22:%22login%22,%22uuid%22:%22121212-121212-121212%22,%22callbackUrl%22:%22appscheme://login/a/b?d=1&redirect=http%253A%252F%252Fwww.google.com%252Fs%253Fwd%253D12345%22%7D

2、获取AID与Address

​ 用户在VAS钱包中允许授权后,钱包生成授权openCode并携带openCode参数跳转回调callbackUrl的地址

openCode有效期为1分钟,且使用一次后失效

获取openCode后,请求以下链接获取aid与address

https://mobile.vasblock.com/vas/server/oauth/login/aidInfo?openCode={openCode}&accessToken={accessToken}&appId={appId}

参数名称 描述
openCode 填写第一步获取的openCode
accessToken 开通第三方接入时获得的accessToken
appId 开通第三方接入时获得的uuid

返回说明

正确时返回的JSON数据包如下

{

"result":{"address":"*******","aid":"*********"},"success":true,"errorCode":""

}

错误返回码errorCode说明如下:

错误码 描述
900001 accessToken错误
010001 未知错误
900002 查询已超时或AID信息不存在

WEB扫码授权登录

1、创建二维码

接入方需要提供URL二维码供应VAS钱包扫码登录。URL参数如下

参数名称 描述 是否必填
type 填写login
platform 填写web
callbackUrl 授权后将openCode带入的回调地址
uuid 接入方申请通过后的uuid
callbackType 为0时,返回openCode与webToken将通过"?“或者”&"进行拼接。为1时openCode与webToken直接拼接在callbackUrl的最后 默认0
webToken 接入方验证授权登录用户地址

例如:

vaslogin://{“type”: “login”,“platform”: “web”,“callbackUrl”: “https://www.google.com/login”,“uuid”: “123-123-123”,“webToken”: “SSFJIEKALSM”}

用户确认授权后,钱包APP会将授权openCode与二维码中的webToken带回callbackUrl参数地址中。

openCode有效期为1分钟,且使用一次后失效

2、获取AID与Address

获取openCode后,请求以下链接获取aid与address

https://mobile.vasblock.com/vas/server/oauth/login/aidInfo?openCode={openCode}&accessToken={accessToken}&appId={appId}

参数名称 描述
openCode 填写第一步获取的openCode
accessToken 开通第三方接入时获得的accessToken
appId 开通第三方接入时获得的uuid

返回说明

正确时返回的JSON数据包如下

{

"result":{"aid":"aid","address":"address"},"success":true,"errorCode":"","errorMsg":""

}

错误返回码errorCode说明如下:

错误码 描述
900001 accessToken错误
010001 未知错误
900002 查询已超时或AID信息不存在

钱包支付

第三方APP可以调用VAS支付完成下单支付的流程。

1、申请用户支付

1.1APP调用

APP钱包通过schemeurl调起VAS钱包,并通过URL编码的JSON对象传递以下参数

参数名称 描述
type 类型。填写pay
appUuid app申请时的uuid,必须。
orderId 订单id,必须。
toAddr 接收方地址,必须。
assetType 付款资产类型,必须。
amount 付款金额,必须。
callbackUrl 付款成功VAS服务通知付款状态的后台回调,host需要在安全域名内,必须。
callbackScheme 支付完成后跳转回的appschemeurl,必须。
description 描述,将展示给用户。
signedContent 签名数据。使用接入时获得的rsa私钥对参数进行签名,必须。
openCallBackType 支付完成后APP回调方式。为0时手机打开callbackScheme。为1时不打开其他APP,仅将钱包APP最小化,此操作不影响支付状态回调。

例:

URL编码前

vaswallet://{“type”: “pay”,“appUuid”: “8888-9999-1111-6666”,“orderId”: “201911087855441”,“toAddr”: “*********************”,“assetType”: “VAS”,“amount”: “0.001”,“callbackUrl”: “https://localhost:8080/pay?orderId=201911087855441”,“callbackScheme”: “payApp”,

“description”: “*****”,“signedContent”: “*******”,“openCallBackType”: “1”}

注意:amount为字符串类型

URL编码后

vaswallet://%7B%22type%22:%20%22pay%22,%22appUuid%22:%20%228888-9999-1111-6666%22,%22orderId%22:%20%22201911087855441%22,%22toAddr%22:%20%22*********************%22,%22assetType%22:%20%22VAS%22,%22amount%22:%20%220.001%22,%22callbackUrl%22:%20%22https://localhost:8080/pay?orderId=201911087855441%22,%22callbackScheme%22:%20%22payApp%22,%0A%09%22description%22:%20%22*****%22,%22signedContent%22:%20%22*******%22,%22openCallBackType%22:%20%221%22%7D

1.2二维码调用

接入方需构建URL二维码由钱包APP扫码。参数使用json方式,内容如下

参数名称 描述
type 填写pay
signedContent 签名数据。使用接入时获得的rsa私钥对参数进行签名,必须。
appUuid 开通时获得的appuuid,必须。
orderId 第三方业务系统订单号,必须。
toAddr 收款地址,必须。
assetType 付款资产类型,必须。
amount 付款金额,必须。
callbackUrl 付款成功VAS服务通知付款状态的后台回调,host需要在安全域名内,必须。
description 描述,将展示给用户。

例如:

vaswallet://{“type”: “pay”,“appUuid”: “8888-9999-1111-6666”,“orderId”: “201911087855441”,“toAddr”: “*********",“assetType”: “VAS”,“amount”: “0.001”,“callbackUrl”: “https://localhost:8080/pay?orderId=201911087855441”,“description”: "",“signedContent”: "”,}

签名算法

使用申请时的rsaPrivate运用SHA1WithRSA算法对amount,assetType,callbackUrl,orderId,toAddr,uuid参数进行签名。

假设需签名的参数如下:

{“appUuid”:“uuidVal”,“orderId”:“orderIdVal”,“toAddr”:“toAddrVal”,“assetType”:“assetTypeVal”,“amount”:“amountVal”,“callbackUrl”:“callbackUrlVal”}

1.按照amount,assetType,callbackUrl,orderId,toAddr,uuid顺序将参数排成json结构。

2.对参数使用SHA1withRSA进行签名,签名后的内容进行BASE64编码即为rsaContent。

2、支付完成后跳回原APP,后台通知支付状态

若支付成功,且得到区块确认,那么将会发送GET表单请求至callbackUrl。

CallbackUrl中携带的参数如下:

参数名称 描述
uuid 开通支付服务时申请的appUuid
orderId 第三方业务系统订单号
fromAddr 支付地址
toAddr 收款地址
assetType 付款资产类型
amount 付款金额,字符串类型
txid 支付成功后的链上交易号
callbackUrl 付款成功VAS服务通知付款状态的后台回调路径
rsaContent 签名数据,使用接入时获得的rsa私钥对参数进行签名

签名算法

使用APP申请时的rsaPrivate运用SHA1WithRSA算法对参数进行签名。

1.按照amount,assetType,callbackUrl,fromAddr,orderId,toAddr,txid,uuid顺序将参数排成json结构。

amount为字符串类型,直接拼入JSON中,不要转浮点字符串(1.00000)

2.对参数使用SHA1withRSA进行签名,签名后的内容进行BASE64编码即为rsaContent,第三方dapp可用公钥对参数和签名后信息进行验证。

第三方Dapp需要返回的信息如下:

返回字段 描述
success true or false,若为true,回调成功,若为false,回调失败
errorCode 错误码,若success为true,可不返回.
errorMsg 错误信息,若success为true,可不返回.

当前价格查询

接口地址

[POST] https://mobile.vasblock.com/vas/server/oauth/pay/price?currency=USD&accessToken=000000

注意,此处价格为存托池价格非二级市场价格。

频率限制:每分钟限10次

接口参数

参数名称 参数描述 是否必填
currency 币种类型。目前仅支持CNY,USD,EUR,GBP,JPY,KRW
accessToken 接入方accessToken

返回结果

名称 描述
success true or false,若为true,调用成功,若为false,调用错误
errorCode 错误码。当success为false时有效
errorMsg 错误信息。当success为false时有效
result 当success为true时得到指定币种当前价格,否则返回空

错误码

错误码 描述
900013 accessToken错误
900014 获取价格失败
900015 对标货币类型错误

VAS授权接入开发者文档,全民共创VAS生态相关推荐

  1. 【LayIM】开发者文档

    webim[LayIM]开发者文档 在WebIM似乎已被打入冷宫的今天,LayIM正试图重新为网页带来一些社交想象.作为一款Web即时通讯前端解决方案(服务端需自写),LayIM提供了全方位接口支撑, ...

  2. Twitter开发者账号申请被拒【推特开发者文档系列6】——Twitter IDs(snowflake)

    文章转自:https://www.jianshu.com/p/c199f8767d19 本系列是对推特开发者文档进行的翻译,以便帮助开发人员使用API接口,难免有些地方存在不足,还请谅解. 关于如何获 ...

  3. layuiAdmin pro v1.x 【单页版】开发者文档

    layuiAdmin pro v1.x [单页版]开发者文档 layuiAdmin pro (单页版)是完全基于 layui 架构而成的后台管理模板系统,可以更轻松地实现前后端分离,它是 mvc 的简 ...

  4. java 微信转账 ca_error_【微信支付】企业付款开发者文档

    [微信支付]企业付款开发者文档 2018-11-24 简介 企业付款业务是基于微信支付商户平台的资金管理能力,为了协助商户方便地实现企业向个人付款,针对部分有开发能力的商户,提供通过API完成企业付款 ...

  5. 苹果开发者_苹果,你的开发者文档写得烂透了

    作者丨小智 策划丨赵钰莹 苹果的 App Store 审核之严格,大家都有所耳闻.但在苹果公司的平台上写代码,似乎却不是那么一件令人身心愉快的事儿.本文主人公 Chris Krycho 是一位前端开发 ...

  6. apple开发者文档关于KVC和KVO文档的一些渣翻——这里是原地址

    apple开发者文档关于KVC和KVO文档的一些渣翻--这里是原地址 Key-Value Coding Programming Guide KVC编程介绍 介绍 本文档用来描述NSKeyValueCo ...

  7. 各大手机厂商开发者文档网址

    各大手机厂商开发者文档网址 小米官方文档 华为官方文档 三星官方文档 OPPO官方文档 VIVO官方文档 魅族官方文档 小米官方文档 https://dev.mi.com/console/doc/ 华 ...

  8. 推特开发者账号【推特开发者文档系列3】——推特标准接口API的请求频率限制说明

    本系列是对推特开发者文档进行的翻译,以便帮助开发人员使用API接口,难免有些地方存在不足,还请谅解. 关于推特开发者账号 elevated academic 请看此贴: 推特开发者账号申请权限 或 搜 ...

  9. ChatGpt接入Word文档,让你秒变职场达人!

    今天跟大家分享下我们如何使用VBA代码,将ChatGpt接入Word文档,操作非常的简单,但是开始之前我们需要做2项准备 1.     获取ChatGpt的API 2.     魔法上网 准备好这2件 ...

最新文章

  1. python基础看什么书-python新手看什么书比较好?这五本最靠谱
  2. Python小知识: List的赋值方法,不能直接等于
  3. 仓库的种类和彼此关系
  4. 苹果cms对接影视小程序源码完整源码
  5. 面试题 04.03. 特定深度节点链表
  6. 前置递增运算符(JS)
  7. 小数乘分数怎么算过程_教资分数怎么算?多少分合格?
  8. Pytext简介:facebook的基于PyTorch的NLP框架
  9. [转]使用Microsoft Web Application Stress Tool对web进行压力测试
  10. 2.这就是搜索引擎:核心技术详解 --- 网络爬虫
  11. ENVI5.3下载和安装
  12. 如何用Java写一个企业晨报?我来教你!
  13. java计算机毕业设计红色主题旅游网站源码+mysql数据库+系统+lw文档+部署
  14. 行业:美团将在快手开放平台上线美团小程序
  15. 浅谈数据治理(什么是数据治理)
  16. 设计模式——模板设计模式
  17. “灵”是我的眼 | 扫地机器人的智能化进阶之路
  18. HBase 常用操作
  19. 2019非上海生源高校应届生落户指南
  20. ARM状态寄存器-PSR

热门文章

  1. Python提取全国水雨情信息(大江大河和、大型水库和实时雨情)
  2. python对单个数字或者数组取对数和指数
  3. Ventoy 制作U盘启动盘 使用教程
  4. U盘插入电脑提示格式化怎么办
  5. Facebook Hacker Cup 2015 Round 1--Corporate Gifting(树形动态规划)
  6. linux 内核 课程,Linux内核分析课程-全面剖析Linux内核技术 揭开Linux内核的面纱 Linux内核学习视频教 ......
  7. Site Template
  8. 实践干货!猿题库 iOS 客户端架构设计
  9. CMake添加pthread.h
  10. 原神如何修改服务器,原神服务器选择攻略 新手选择官服还是渠道服好