我们游戏上线海外已经一个月时间了,昨天我们发现有个定位漂亮国的玩家,盗刷了多笔支付。
当前客户端是正常调用Unity的IAP功能,但仅仅客户端的效验是不够的,所以我们准备做两方面的改动:
1,将所有的公开public方法改为private,只留接口调用,以防止被破译(但还是不可信赖的)
2,服务器也加上谷歌支付效验判断,进一步保证该支付信息的正确性。
其实重点在于第二步,因为所有关于付费信息的操作,都存储在服务器。即使玩家能破译客户端,但服务器是破译不了的。
因为我们用的是谷歌支付,服务器通过获取到谷歌公钥。购买初始客户端从服务器获得购买序列,将该序列存入支付序列,然后再将谷歌返回的数据发给服务器;服务器会通过客户端获得加密序列号来验证。