TP钱包扫描二维码,本地授权登陆,通知Dapp,完成登陆过程
- 登陆二维码协议格式
{
protocol string // 协议名,钱包用来区分不同协议,本协议为 SimpleWallet
version string // 协议版本信息,如1.0
dappName string // dapp名字
dappIcon string // dapp图标
blockchain string //底层 "eos enu eth moac"
wallet string // 登陆的钱包(可以唯一表示一个钱包的信息)可选
action string // 赋值为login
actionId string // dapp 生成的,用于此次操作的唯一标识
callbackUrl string // dapp server上用于接受登录验证信息的url
expired string //二维码过期时间,时间为秒
memo string // 登录备注信息,钱包用来展示,可选
}
- 钱包对登陆信息签名
data = timestamp + wallet + actionId + ref
sign = ecc.sign(data, privateKey)
- 钱包将签名后的信息通过post请求发送到callbackUrl
{
protocol string
version string
timestamp string
sign string
actionId string
wallet string
ref string
}
- DAPP验证登陆信息
如果dapp没有登陆服务器,只需要拉起钱包获取相关账户信息,则不需要callbackUrl
- 拉起TokenPocket转账和扫扫码转账相比,多了callbackSchema字段,用于回调通知Dapp操作结果。其他字段一样
- 协议格式
...
callbackSchema string // Dapp自定义回调schema,例如:appABC://abc.com?action=login 返回结果为:appABC://abc.com?action=login&result=1¶m={json param} result的值为:0为用户取消,1为成功, 2为失败
...
拉起TokenPocket授权登陆成功返回信息json param格式如下
{
"sign": "SIG_K1_KZL9eR4cCQCJHpYHbh44yGrDqu4w8hHzQwb1xTk4Mcd4czqpw4jJUgg9DnWXzE3r",
"timestamp": "1546613919", //单位是秒
"wallet": "eoseoseosacc", //如果是eos系列,则为账户名
"ref": "TokenPocket",
"action":"login",
"actionId":"ljsdjljdljf-xjlsdjfkj" //dapp传递过来的actionId
"publickey": "EOS2TtWv19a9eYEQYB8NbGCM28nQNngWP4UcSjVYqtEz6kF7yCnPX",
"permissions": ["active", "owner"],
"result": 1
}
拉起TokenPocket授权登陆取消操作返回信息json param格式如下
{
"action":"login",
"actionId":"ljsdjljdljf-xjlsdjfkj" //dapp传递过来的actionId
"result": 0
}
- 使用TokenPocket SDK,Dapp不需要传递callbackSchema字段以及处理相关操作,只需要调用SDK相关方法即可
- 其他过程和扫码类似
TP钱包扫描二维码,完成转账操作,钱包将txID告诉Dapp,Dapp轮询支付结果
- 转账二维码协议
{
protocol string // 协议名,钱包用来区分不同协议,本协议为 SimpleWallet
version string // 协议版本信息,如1.0
dappName string // dapp名字,用于在钱包APP中展示,可选
dappIcon string // dapp图标Url,用于在钱包APP中展示,可选
action string // 支付时,赋值为transfer,必须
actionId string // 本次支付的唯一标识
blockchain string //底层 "eos enu eth moac"
from string // 付款人的EOS账号,可选
to string // 收款人的EOS账号,必须
amount number // 转账数量,必须
contract string // 转账的token所属的contract账号名,必须
symbol string // 转账的token名称,必须
precision number // 转账的token的精度,小数点后面的位数,必须
memo string // 由dapp生成的业务参数信息,需要钱包在转账时附加在memo中发出去,格式为:k1=v1&k2=v2,可选
// 钱包转账时还可附加ref参数标明来源,如:k1=v1&k2=v2&ref=walletname
desc string // 交易的说明信息,钱包在付款UI展示给用户,最长不要超过128个字节,可选
expired string // 二维码过期时间,单位是秒
callbackUrl string //回调url,例如:https://abc.com?action=transfer&qrcID=123,则回调结果为:
https://abc.com?action=transfer&qrcID=123&result=0&txID=xxx
其中result(0为用户取消,1为成功,2为失败)txID为执行成功的transactionHash
}
- 拉起TokenPocket转账和扫扫码转账相比,多了callbackSchema字段,用于回调通知Dapp操作结果。其他字段一样
- 协议格式
...
callbackSchema string // Dapp自定义回调schema,例如:appABC://abc.com?action=transfer 返回结果为:appABC://abc.com?action=transfer&result=0&txID=xxx¶m={json param} result的值为:0为用户取消,1为成功, 2为失败
...
转账完成后返回的json param格式如下
"ref": "TokenPocket",
"txID": "588c6797534d09e8e0b149c06c11bfd6ca7b96f0d4bba87700fffe7a87b0d988",
"publickey": "EOSX1tWv19a9eKEQQB8Nb2wM28nYNngWP3UcSjVYqtjz6kF7yCnQ",
"action":"transfer",
"actionId":"ljsdljf-xljlsdjfl" //由dapp传递过来的actionId
"wallet": "eoseoseostes",
"permissions": ["active", "owner"],
"result": 1
转账取消返回的json param格式如下
"action":"transfer",
"actionId":"ljsdljf-xljlsdjfl" //由dapp传递过来的actionId
"result": 0
- 使用TokenPocket SDK,Dapp不需要传递callbackSchema字段以及处理相关操作,只需要调用SDK相关方法即可
- 其他过程和扫码类似
使用TokenPocket扫码,执行pushTransaction操作
- 协议格式
protocol string // 协议名,钱包用来区分不同协议,本协议为 SimpleWallet
version string // 协议版本信息,如1.0
dappName string // dapp名字,用于在钱包APP中展示,可选
dappIcon string // dapp图标Url,用于在钱包APP中展示,可选
action string // 支付时,赋值为transfer,必须
actionId string // 本次支付的唯一标识
blockchain string //底层 "eos enu eth moac"
actions string //json数组 每个对象是一个action
memo string // 由dapp生成的业务参数信息,需要钱包在转账时附加在memo中发出去,格式为:k1=v1&k2=v2,可选
// 钱包转账时还可附加ref参数标明来源,如:k1=v1&k2=v2&ref=walletname
desc string // 交易的说明信息,钱包在付款UI展示给用户,最长不要超过128个字节,可选
expired number // 二维码过期时间,单位是秒
callbackUrl string //回调url,例如:https://abc.com?action=pushTransaction&qrcID=123,则回调结果为:
https://abc.com?action=pushTransaction&qrcID=123&result=0&txID=xxx
其中result(0为用户取消,1为成功, 2为失败)txID为执行成功的transactionHash
Dapp 拉起TokenPocket 执行合约操作,和扫码执行合约操作相比,多了callbackSchema字段,用于通知Dapp操作结果,其他字段一样
- 协议格式
...
callbackSchema string // Dapp自定义回调schema,例如:appABC://abc.com?action=pushTransaction 返回结果为:appABC://abc.com?action=pushTransaction&result=0&txID=xxx¶m={json param} result的值为:0为用户取消,1为成功, 2为失败
...
合约执行完成后返回的json param格式如下
"ref": "TokenPocket",
"txID": "588c6797534d09e8e0b149c06c11bfd6ca7b96f0d4bba87700fffe7a87b0d988",
"publickey": "EOSX1tWv19a9eKEQQB8Nb2wM28nYNngWP3UcSjVYqtjz6kF7yCnQ",
"action":"pushTransaction",
"actionId":"ljsdljf-xljlsdjfl" //由dapp传递过来的actionId
"wallet": "eoseoseostes",
"permissions": ["active", "owner"],
"result": 1
取消执行合约返回的json param格式如下
"action":"pushTransaction",
"actionId":"ljsdljf-xljlsdjfl" //由dapp传递过来的actionId
"result": 0
使用TokenPocket SDK,Dapp不需要传递callbackSchema字段以及处理相关操作,只需要调用SDK相关方法即可。SDK调用取消操作不需要返回相应的数据