为什么80%的码农都做不了架构师?>>>
内购的大致流程:
1.客户端向Appstore请求购买产品(假设产品信息已经取得),Appstore验证产品成功后,从用户的Apple账户余额中扣费。
2.Appstore向客户端返回一段receipt-data,里面记录了本次交易的证书和签名信息。
3.客户端向我们可以信任的游戏服务器提供receipt-data
4.游戏服务器对receipt-data进行一次base64编码
5.把编码后的receipt-data发往itunes.appstore进行验证
6.itunes.appstore返回验证结果给游戏服务器
7.游戏服务器对商品购买状态以及商品类型,向客户端发放相应的道具或者余额。
掉单问题一般出在环节3,可能因为用户手机信号不好,或者误操作返回了上个页面。导致receipt-data没有发送给我们自己的服务器,结果就是用户钱扣了,但是道具或者余额没到账。而且后台没收到receipt-data,根本就没有记录。
所以每次再发送receipt-data前,需要把它保存在本地,确认发送给后台,走完了充值流程,再删除。每次到内购页面,都检查下是否有未发送给后台的receipt-data。
转载于:https://my.oschina.net/yup/blog/3025112