golang 虚拟币的充值原理

这里所说的充值钱币是虚拟币(如A、B、XX币等)。大概是这样,我有一个 更新余额 的接口,但需要一定的条件下(如看完广告等),才能让用户更新余额,可能需要一个令牌(我的理解,也可能不需要),来告诉程序允许更新用户余额。
1,那么令牌什么时候创建呢?
2,使用什么技术创建呢?
3,怎么检验令牌呢?
刚学后端,不太懂具体的充值流程是怎么样的,有人能告知吗?谢谢

阅读 2.2k
2 个回答

一般来说,通过完成任务来获得奖励,可以做一个简单的对用户透明的简易任务系统,只是业务逻辑上存在的这样的任务系统。

一、任务分为单步任务和多步任务,任务可以设定永久或者限时,超时未完成任务自动取消并删除

二、对于单步任务,只需要对应的业务逻辑中添加任务是否完成的条件检查,然后直接更新余额即可

三、对于多步任务,比如视频广告 ,自然是希望用户能每一秒都能看广告,至少不屏蔽嘛,打开视频,加载/推送广告时,创建一个视频广告播放任务(状态数据),扔到redis里,设置过期时间(用户可能看到广告就关闭视频了),
比如前端播放器成功播放5秒,更新一下任务redis里的任务状态,当然不只想防君子的话,可以稍微意思下,把任务进度数据加密复杂化,视频广告会给前端一个初始数据,然后播放器播放5秒计算出5秒的加密后的任务进度数据传给“视频广告播放进度”接口,然后“视频广告播放进度”接口发现某次播放秒数符合要求,同步或异步去更新余额,然后根据需求决定要不同时删除redis里任务数据,是否重置超时时间,是否每次看完同一个视频的视频广告(或是否同一个广告)可以重复获得奖励。

这是个简单的设计,具体实现还得细想,设计严谨。

简单的话随便弄个随机算法都行,生成一组随机的字符串当做令牌,存储在redis中,当请求拿随机字符串验证时,你就从redis里找,找不到就是非法请求.当然这是比较不严谨的流程,复杂的搞法那就很多了,你这个问题的本质就是接口安全问题,你可以看看接口安全性的文章,一般来说jwt+接口验签处理,能处理大部分的接口安全问题,能基本保证用户随意非法调用你的接口,就算知道你的参数与请求路径也不行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题