内购分两个部分
第一 在开发者账号里设置产品信息 包括 价格,标识。。。 客户端需要用这些标识从Iturns获取产品信息列表(苹果分装好接口,调用即可),然后显示 这一部分要点主要是产品标识 因为存在对产品增加 修改等操作 所以把产品的标识放在自己的服务器 而不是在程序里写死 方便以后修改
第二部分就是 购买 根据产品标识购买 这个购买的接口苹果分装好一个库 storekit 直接调用 然后返回购买凭证 这时候交易已经完成 但是你的服务器不知道当前用户是否购买了产品 因为购买的行为是与苹果的服务器交互 为了通知服务端 当前用户已经购买了产品 你需要把这个凭证发给服务端 服务端根据购买凭证与苹果服务器进行验证 验证通过后 服务端才知道 当前用户确实购买了产品 然后给当前用户分配购买到的权限
向服务器传送购买凭证网络断掉的处理方案
transaction持久化,将加密的Base64字符串保存到本地,每次用户登录的时候自动重新验证。当二次验证时,用户的客服端断网,就进入重试状态。如果二次验证时,自己的服务器断网,curl会得到一个"couldn't connect to host"这样的错误,就服务器端重试。对于网络超时或无法找到主机的都将transaction保存下来就行了,由于http是基于tcp/ip协议的服务层次应用,所以对验证通过或者失败的就直接移除掉就行了。
那么问题来了,用户在二次验证超时后,删掉了app,那么就完了。。。所以还没有找到万无一失的方法。(听说:“用户可以通过iTunes在我的购买内容中找到自己购买的所有内容的Receipt,引导用户找到单号并提供即可”,如果真的有这种情况试试吧)