云开发小程序如何实现给用户发零钱的功能
~
01、相关背景
近期答题活动上线了抽奖发红包的功能,小程序本身是用云开发技术方案完成的,包括答题+抽奖,实际调研了下用云开发发放零钱的方案,发现这块文章有很多,但是都没有说明白是怎么发的,有没有发放成功
也就是没有找到成功发放的案例
那么没办法,只能求其他方案
~
02、技术方案
本文的方案是这样的
答题+抽奖用云开发完成
零钱发放是通过PHP来发放的,
云开发抽到固定红包金额的红包后,调用php的零钱发放脚本,这里就涉及一个问题
抽奖和发红包是相互独立解耦的,那么在如何在这个过程中做到安全,以防止被用户薅羊毛,就是本文思考的问题
目前准备了几个方案
方案1
该方案比较简单,
发放红包的脚本如下所示
xx/xx/index.php?openid=xx&amount=100&checkcode=xx
其中openid为用户id
amount为红包金额,单位为分,checkcode为签名字符串
在php一层,对checkcode进行校验,如果校验通过就可以执行给openid发放amount红包的逻辑
现在checkcode逻辑还是比较简单的,可以基本做到安全,但是真遇到做这块的技术,是防不住的
方案2
方案2是结合其他开源项目学习来的,通过增加一个前面的逻辑
前面逻辑如下
入参按字amount=100&openid=xxx,对该字符串进行AES (mode=ecb)加密,加密的秘钥不对外公开,加密生产前面执行web base64化,这样可以通过get传参放到url里面进行传递
当请求来到php后,对签名进行解密,解析出当前的openid、amount,跟实际传输的openid、amount对应上,执行打钱的逻辑
03、方案相关
1)
base64URL
https://juejin.cn/post/7042520107976753165
2)
aes对称加密
3)生成签名规则
如何用云开发实现给用户发零钱
密钥不公开是不是小程序里有一份,有就能破