在這裏致敬所有開發者,我們正在改變整個世界!
用戶可在第三方網頁或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接入申請記錄點擊“查看詳情”進行查看,如有疑問請發送郵件至[email protected]或在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
參數名稱 | 描述 |
---|---|
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
參數名稱 | 描述 |
---|---|
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 | 對標貨幣類型錯誤 |