CoinSU数字钱包接入流程案例
一、准备工作 1、 在CoinSU官网注册企业白金版 (免费) 帐号 2、 登录CoinSU管理后台, 获得接入API所需的Secret-Key和Access-Token 3、 同时也需要设置用户充币至CoinSU钱包后的回调接口 二、业务流程 1、为每位用户创建唯一的CoinSU子账户与相应货币的子钱包 (例如: 业务中需要使用到数字货币BTC与ETH, 则需要为用户创建子账户、BTC钱包、ETH钱包) , 以便用户充币后, CoinSU回调通知充值详情。 2、用户可以通过自己的账户钱包地址, 进行充币与提币, 货币余额可以在业务内操作与记录, 不必通知CoinSU。 3、用户提币前, 应先调用GetFeeByCoin接口获取该币种的手续费, 在扣除用户余额时, 同时扣除本次交易的手续费。 4、用户充入的所有数字货币, 都会进入主账户的冷钱包中, 但是用户提币需要从主账户的热钱包中扣除, 所以主账号管理员需要定期检查热钱包中的余额充足。 三、API调用 1、在调用接口前, 您需要在HTTP请求头部设置好SecretKey和AccessToken确保API能正确识别您的身份, 然后设置参数和模块名和方法名来调用接口 import json import requests def postToCoinSu(module,func,data): # coinsu参数 post_url = "https://api.coinsu.com/_api/v1/" sec_key = " dAzX1CcfBnPpQd6riw27ShasPgk0OvC7ShasPgkIRX/7g==" aes_key = " ZszDJ9cAEUjdU0fGIrw9zeZf9LQOhT7ShasPgkhsdzsaXqqOKf1X6YQaYMlyPOMCNdQjwyZVmhS0jQrAvrbg==" url = post_url + module + "/" + func headers = { 'Secret-Key':sec_key, 'Access-Token':aes_key, 'Content-Type':'application/json' } r = requests.post(url, headers=headers, data=json.dumps(data)) dict = r.json() if dict['retcode'] == "200": ret = dict['data'] else: ret = dict['retmsg'] return ret 2、调用API, 以创建子账户为例 body = { "authority_code":1, "email":"", "name":"" } ret = postToCoinSu ("account","CreateAccount",body) if type(ret) != str: uid = ret['uid'] # 业务代码 3、在创建SecretKey和AccessToken的同时, 也需要设置对应的回调接口, 以下是回调返回格式, notify_code返回为1时为交易结果的回调, 返回2时为审批结果的回调 { "notify_code":"1", "msgid":"tx10021", "data":{ "tid":"15432878047853809300009955", "tx_hash":"0xd70de4a2a56191d8901956191d89", "uid":"uc783f11e-f1f0-11e8-a2cc-1e8121e8", "from":"0xaE91688dC28C7ffe7BB67ffe7B7ff", "to":"0xF07adb2E9c4a62f49bACc4a62f4sa3", "coin_type":"ETH", "recv_or_send":0, "is_inside":"1", "amount":"1.11", "confirmed":"1", "status":"SUCCESS" } } 4、回调处理 def tradeCallBack(dict): if dict['status'] == "SUCCESS": if dict['recv_or_send'] == "1": #-------------- # 充币业务处理代码 #-------------- elif dict['recv_or_send'] == "0": #-------------- # 提币业务处理代码 #-------------- elif dict['status'] == "FAILURE": #-------------- # 充提币失败业务处理代码 #-------------- # 交易结果处理 if dict["notify_code"] == "1": tradeCallBack(json.loads(dict['data'])) elif dict["notify_code"] == "2": #-------------- # 审批结果业务处理代码 #-------------- 四、文档 帮助中心: https://www.coinsu.com/help 开发文档: https://www.coinsu.com/api/doc