首先 “苹果禁止在app中提供第三方支付” 所以但凡是做IOS App的,需要充值的地方都会遇到服务端充值的功能需要开发。

充值的大体流程是这样的,App内在购买成功后,会得到一个从苹果AppStore服务器得到一个本次交易数据的字符串,即收据(Receipt),Receipt中包含了本次交易的几乎所有信息,前面这部分的内容都是由App内实现,所以服务端不用去管。

App拿到Receipt之后,向应用的服务端(即用户自己的服务器)请求发送本次交易的Receipt及当前用户的唯一标识。服务端再从Receipt中获取到交易信息,并发往苹果的AppStore服务器验证交易信息的真伪,验证通过后则修改当前App用户的账户余额信息(为了防止越狱和IAP free等插件造成的欺诈性购买)。之后将增加后的用户余额信息返回给App引用,此时用户看到app上显示充值成功并且自己的账户余额也发生了变化。

与服务器端的通信,就是一个RPC的过程,服务器端写好一些供调用的API接口,在客户端联网调用,具体有什么xmlrpc, jsonrpc的,都有开源的框架可以使用。注意:客户端与游戏服务器端通信的时候,必需附带一个标识其身份的代码(UUID或者帐号名称),否则服务器端无法知道是谁进行了充值。

参见:接口开发文档

Continue reading