Skip to content

Latest commit

 

History

History
56 lines (35 loc) · 2.89 KB

README_Design.md

File metadata and controls

56 lines (35 loc) · 2.89 KB

Populstay语音通话设计业务流程

Step1: 检查用户账户内PPS余额(通话1分钟以上); a)余额不足,调用提示购买PPS; b)余额充足,进入Step2;

Step2: 呼叫用户建立连接; 技术细节如下: a)用户A打开APP,即用自己的ID(0xa...)注册online事件(例如:io.socket.on('online0xa...')),并在服务器注册自己在线状态; b)用户B呼叫用户A: 1)通过服务器广播,通知用户A,希望构建联系(例如:broadcast('online0xa...'),此事件为用户A注册事件); 2)告知用户A自己的ID(0xb...); 3)初使化连接通道(例如:join('chat0xb...')),注册连接监听事件,准备建立连接; c)用户A同意通话连接: 1)初使化连接通道(例如:join('chat0xb...')),注册连接监听事件,建立连接;

Step3: 计费 a)记录用户B的PPS余额,计算出最长通话时间,设置计划任务,一旦达到最长通话时间,切断通话; b) 用户B的通话时间将被后台记录,以计算出需要支付的PPS数量; c)用户B的Account的私钥,将被保存到服务器,此私钥将被保存在Redis数据库中; d)利用用户B需要的PPS数量(包含少量gas费用),已经私钥,生成RawTransaction的数据; e)提交数据,完成对用户的PPS的费用扣除;

Populstay语音通话技术框架 1)后端服务器nodejs+sailsjs; 2)语言通话服务,Google的webRTC; 3)在线状态控制Redis; 4)用户数据记录于mongoDB; 5)通过nginx完成服务器数量的可扩展; 注意:因为1,2,3,4都是可扩渣的,因此改系统可以无限扩展;

支付设计:

1)接入微信支付接口;(还有其他支付接口,只要能付钱的); 2)计算出PPS作为预定金要多少RMB,计算出手续费多少,计算出多少租金; 3)(我们自己有个server的账户A,里面存有一定量的PPS和ETH)将PPS作为押金的部分写入合约,gas算在手续费里面,形成一个预定合约; 4)入住,将租金按时间算给房东; 5)不入住,房租退回,预定金给房东;

关于法币支付理顺一下思路:一切和PPS支付还是一样的,只是我们用一个像server的账户,完成向合约里面转入作为定金的PPS。用户向我们指定的账户转入法币。

智能合约要加两个字段,一个是房客的地址信息(原来用的msg.sender,谁发送的transaction,谁是房客地址,但是现在我们用的是一个类似server的address,所以要指定了),另一个字段是标志,标志是否为法币支付,法币支付的话,PPS表示定价,非法币支付的话PPS为整个价格。

开发步骤:1)将前端的PPS支付转向后端; 2)前端从我们的后端获取订单信息; 3)修改智能合约,并且测试; 4) 重新上传测试数据。