6DGS云-云支付解决方案

如何使用6DGS云-云支付?

第1步:注册帐户


点击上面的按钮,如下图:

如果未注册帐户,请先注册帐户:

注意:一定要使用自己的手机号码注册,否则后续将无法改密。
其中英文名为您的nodeid(亦节点用户ID)--非常重要,建议填写与团队名、公司名相关。

第2步:创建G节点

我们使用第一步注册得到的帐号登录6DGS云控制台,登录后如下图:

我们看到有免费的1GB的G节点额度,这个额度可以立即使用,直接点击【创建G节点】或点击下图菜单:

点击创建G节点链接或菜单,进入创建G节点页面:

按上述内容填写(注意配置只能选择1GB,合约按流程我们先体验COIN-记帐型合约;
token命名可以直接使用自动生成的coin,如果已经创建过coin的G节点,须修改);
COIN币的数量上限可以随便选,这里因为我们仅仅是测试,设置为1个亿;
云服务商是指G节点集群托管所在地,推荐次序为:华为云-百度云-阿里云-腾讯云;
购买数量为月份数量,也就是这个G节点开通的月数,这里因为是免费额度只能选择1个月;
付款方式这里因为余额还没充值(充值了可以使用余额支付),只能选择会员特权(VIP0也是会员,特权为免费1个GB)
上述内容填写完成后,点击【确定购买】,出现下述弹窗:

可以看到需要支付60元,由于使用了会员特权,所以帐户没钱也是可以直接点击【确定购买】,如下图所未:

购买成功后,等待5秒钟,通过【刷新】按钮可刷新出下图数据,代表创建G节点成功:

至此,一个COIN-记帐型合约的G节点已经创建成功!

第3步:熟悉G节点的菜单功能

依据第2步创建了G节点,现在我们找到管理G节点的菜单:

因为刚才创建的这个G节点托管在了华为云,所以我们点击【G节点】华为云也可以找到它

找到它了,下面我们看一下G节点控制台页面的功能,如下图:

其中API接口和API接口密钥,在下页使用/fork等API接口时需要用到;
我们现在看一下如何管理数据,点击【管理】进入链数据管理操作台界面如下图:

注解:操作区【1】重启仅重启进程,【2】重启会更新代码逻辑并重启,
【3】清空cahe是清空状态缓存,清空数据是将链上的数据清除(会重新构建该G节点)
【4】会删除该G节点,删除后在G节点控制台就找不到它了。
对于数据区,我们看到token-id、height、txid、txjson、hash、sign、timestamp即为一个txid交易纪录在token-id这个高度为height上的一行链纪录;
这里值得注意的是,一个txid会分别出现在多个token-id上,代表了tx交易纪录在有关系的token上的六度共识同步!
下面我们使用G节点的API接口来实现helloworld功能,从而了解到G节点发挥作用的过程!

第4步,使用/fork接口API创建token帐户(token-id)

在使用/fork接口之前,先阅读API文档的接口规范,点击查看API接口文档
如下图所示:

这里可以看到,拼接一个可用的API接口,先在G节点控制台拿到API接口地址和接口密钥,如下图:

API接口地址复制到这里:https://c0.6dgs.opencom.cn/node.testphone.coin
API接口密钥复制到这里:appid=10001&secret_key=bfc51077860b2927be95c0807766ca56
按规范拼接API的接口URL:https://c0.6dgs.opencom.cn/node.testphone.coin/fork?appid=10001&secret_key=bfc51077860b2927be95c0807766ca56

这里在【API接口地址】后面添加了/fork?,还有API接口密钥,这样,一个有效的/fork接口地址就生产了。
我们看API文档,/fork接口需要哪些参数,如下图:

API接口拼接如下:
https://c0.6dgs.opencom.cn/node.testphone.coin/fork?appid=10001&secret_key=bfc51077860b2927be95c0807766ca56&token=coin_0000000000000000
返回结果:{"ret":true,"msg":"success","txid":"txid_2xsBJEgSn1hnGzn8","token_x":"coin_28PU1xiGV56VssZS","token_y":"coin_0000000000000000","x_state":{"token_state_p":"[\"coin_0000000000000000\"]","token_state_val":"0","token_height":0,"pre_txid":"null","private_key":"nYB4gXTsUVbFasL8s8rRZtgdRtd4T1eVZQZrJDo122F","public_key":"pTp6prhtAMfHKNTaeVFY5e8fGJc3K2SkSAKFx86ToHBE","token":"coin_28PU1xiGV56VssZS"},"y_state":{"token_state_p":"[]","token_state_val":"20","token_height":35,"private_key":"8egL8ivrhE3KkpW639f1fXv1Qb97psiudMqs5Kfb2WmL","public_key":"yizNoHddKNvchoikGRdrTaqeDJptUh9XvpnRiDfb85vz","token":"coin_0000000000000000"}}
可以看到ret=true,代表fork新帐户调用成功,同时返回token_x=coin_28PU1xiGV56VssZS;

第5步,使用/op接口pay指令获取聚合支付链接

在使用/op接口之前,先阅读接口API文档,点击查看/op的API接口文档
如下图所示:

交易纪录数据结构为:token_x op(sms) token_y opval(phone and code) extra_data ;(非转帐推荐使用assert、config、notice等指令)
一般情况下,除非是send消息,令token_x=coin_0000000000000000(即token_root)
令token_y=coin_28PU1xiGV56VssZS(我们使用上面fork接口API创建的token-id)
这里须使用pay指令,并且令opval={"order_number":"your-order-no","order_name":"充值1元钱","pay_money":1,"auto":1,"version":1,"extra_data":"云支付自动充值"}(其中order_name为充值名目,order_number为业务订单号,pay_money为充值金额(元),auto非空代表自动充值,version暂时只能为1,extra_data附加信息可填可不填)
因为在浏览器里直接使用该参数,所以我们进行urlencode转码:转码工具
转码得到opval:%7b%22order_number%22%3a%22your-order-no%22%2c%22order_name%22%3a%22%e5%85%85%e5%80%bc1%e5%85%83%e9%92%b1%22%2c%22pay_money%22%3a1%2c%22auto%22%3a1%2c%22version%22%3a1%2c%22extra_data%22%3a%22%e4%ba%91%e6%94%af%e4%bb%98%e8%87%aa%e5%8a%a8%e5%85%85%e5%80%bc%22%7d
接口API的URL拼接如下:
https://c0.6dgs.opencom.cn/node.testphone.coin/op?appid=10001&secret_key=bfc51077860b2927be95c0807766ca56&token_x=coin_0000000000000000&token_y=coin_28PU1xiGV56VssZS&opcode=pay&opval=%7b%22order_number%22%3a%22your-order-no%22%2c%22order_name%22%3a%22%e5%85%85%e5%80%bc1%e5%85%83%e9%92%b1%22%2c%22pay_money%22%3a1%2c%22auto%22%3a1%2c%22version%22%3a1%2c%22extra_data%22%3a%22%e4%ba%91%e6%94%af%e4%bb%98%e8%87%aa%e5%8a%a8%e5%85%85%e5%80%bc%22%7d&extra_data=pay-helloworld
得到的返回结果如下:
{"ret":true,"msg":"success","txid":"txid_25ruochfeTnEz3MA","token_x":"coin_0000000000000000","token_y":"coin_28PU1xiGV56VssZS","x_state":{"token_state_p":"[]","token_state_val":"20","token_height":38,"pre_txid":"txid_21EfrwpDyD5MfHVq","public_key":"yizNoHddKNvchoikGRdrTaqeDJptUh9XvpnRiDfb85vz","token":"coin_0000000000000000"},"y_state":{"token_state_p":"[\"coin_0000000000000000\"]","token_state_val":"0","token_height":2,"public_key":"pTp6prhtAMfHKNTaeVFY5e8fGJc3K2SkSAKFx86ToHBE","token":"coin_28PU1xiGV56VssZS"},"x6dgs_cloud_func_ret":{"ret":true,"msg":"success","order_id":"order_rmb27ECgiS3TWzpe","pay_url":"https://cloud.6dgs.opencom.cn/h5.html?order_rmb27ECgiS3TWzpe"}}
ret=true代表op接口调用和写入数据成功,这里获取聚合支付链接URL成功与否是通过x6dgs_cloud_func_ret的回参数判断:
如这里所示:"x6dgs_cloud_func_ret":{"ret":true,"msg":"success","order_id":"order_rmb27ECgiS3TWzpe","pay_url":"https://cloud.6dgs.opencom.cn/h5.html?order_rmb27ECgiS3TWzpe"},其中pay_url代表提供给用户点击支付充值的链接

点击充值URL:https://cloud.6dgs.opencom.cn/h5.html?order_rmb27ECgiS3TWzpe,得到图所未:

在非微信客户端扫一扫后,完成支付,即可在6DGS云控制台-帐户管理-余额管理看到自己有了1元钱的收入,如下图所示:

通过6DGS云控制台的G节点的数据管理,可看到token_y=coin_28PU1xiGV56VssZS已经成功自动充值1元(币):

这里,txjson为:{"txid":"txid_33WCnUpp78VxfnTT","token_x":"coin_0000000000000000","token_y":"coin_28PU1xiGV56VssZS","opcode":"send","opval":"1","extra_data":"{\"order_id\":\"order_rmb27ECgiS3TWzpe\",\"order_name\":\"充值1元钱\",\"order_number\":\"your-order-no\",\"pay_money\":\"1\",\"cloud_pay_fee\":\"0.050\",\"send_status\":2,\"ret\":true,\"msg\":\"success\",\"extra_data\":\"云支付自动充值\"}","timestamp_i":"1565954919","token_state":"1","token_height":3,"pre_txid":"null"},这里的token_state为1,且opcode=send,token_x为token_root,代表自动充值成功
通过6DGS云控制台的G节点的数据管理,还可以可看到token_y=coin_28PU1xiGV56VssZS的第二条pay指令的存储纪录(method=callback)代表回调时将结果状态写入:

这里,txjson为:{"txid":"txid_265nepS4gmJkewfK","token_x":"coin_0000000000000000","token_y":"coin_28PU1xiGV56VssZS","opcode":"pay","opval":"{\"order_id\":\"order_rmb27ECgiS3TWzpe\",\"order_name\":\"充值1元钱\",\"order_number\":\"your-order-no\",\"pay_money\":\"1\",\"cloud_pay_fee\":\"0.050\",\"send_status\":2,\"ret\":true,\"msg\":\"success\",\"extra_data\":\"云支付自动充值\",\"auto_send_cloud_rmb_ret\":{\"ret\":true,\"msg\":\"success\",\"txid\":\"txid_33WCnUpp78VxfnTT\",\"token_x\":\"coin_0000000000000000\",\"token_y\":\"coin_28PU1xiGV56VssZS\",\"x_state\":{\"token_state_p\":\"[]\",\"token_state_val\":\"19\",\"token_height\":40,\"pre_txid\":\"txid_21EfrwpDyD5MfHVq\",\"public_key\":\"yizNoHddKNvchoikGRdrTaqeDJptUh9XvpnRiDfb85vz\",\"token\":\"coin_0000000000000000\"},\"y_state\":{\"token_state_p\":\"[\\\"coin_0000000000000000\\\"]\",\"token_state_val\":\"1\",\"token_height\":3,\"public_key\":\"pTp6prhtAMfHKNTaeVFY5e8fGJc3K2SkSAKFx86ToHBE\",\"token\":\"coin_28PU1xiGV56VssZS\"}},\"method\":\"callback\"}","extra_data":"云支付自动充值","timestamp_i":"1565954919"}
opval里的值为回调的处理结果状态JSON的文本,注解如下:
  • 6DGS云开发者帐户余额成功收入1元钱:"pay_money\":\"1\",\"cloud_pay_fee\":\"0.050\",\"send_status\":2,这里:cloud_pay_fee代表系统扣手续费,这里手续费率为5%,(如果send_status=2代表充值成功,但是手续费率没有扣成功,当send_status=3时,充值成功并且费率也扣取成功)
  • 用户token-id:coin_28PU1xiGV56VssZS收入1:"auto_send_cloud_rmb_ret\":{\"ret\":true,\"msg\":\"success\"...\"token_state_val\":\"1\",这里ret=true代表用户token帐户充值1成功,token_state_val=1代表当前余额为:1
  • "method\":\"callback,这里说明的是pay指令存储的是回调的结果,以区分由opcode=pay的云支付API发起的获取聚合支付URL的请求。
成功扣除费率的图示如下(5%的手续费在6DGS云开发者帐户自动扣除):

当然,因为是op操作(opcode=pay),也可通过/chain/opcode可以查询到op接口的每一条存储纪录点击查看/chain接口文档

【指引】帮助您分析错误原因的客服联系方式

客服联系方式:
QQ:251499600
手机:17324139805



Copyright © 2012-2019 广州六度共识科技有限公司. All Rights Reserved.
粤ICP备14035184号