苹果内购

一、内购支购买项目类型:

1.消耗型商品
2.非消耗型商品
3.非续期订阅
4.自动续期订阅

苹果官方网址:
https://help.apple.com/app-store-connect/#/dev3cd978dbd
https://developer.apple.com/in-app-purchase/


二、内购支付流程:

1.用户点击发起购买请求

2.APP服务器获生成一份订单并返回App Store商品id给客户端

3.客户端对这个商品id进行苹果服务器IAP商品查询

4.用户支付调起IAP支付

5.支付成功获取到一份交易成功凭证

6. 客户端发送订单号和成功支付的凭证到服务器(区分沙盒环境还是正式环境)

7. 服务器验证凭证是否合法,对用户业务操作(成功增加一个月会员)

8.返回查询结果到客户端

9.客户端业务逻辑处理


三、注意事项:

申请相关:

需要注意的是如果应用是第一次进行IAP开发, 首先要完善苹果商店内的个人信息 (银行卡信息、 税务相关信息)才能创建相关商品, 而且需要在下一个发布版本中审核商品, 如果曾经审核过IAP开发, 可直接在后台进行新增商品审核。

测试相关:

1.内购必须用真机测试;
2.测试时必须退出App Store自己的Apple ID,登录沙盒的测试Apple ID .
3.本身请求美国服务器就慢,为防止审核人员误解,我们需要在购买时加载动画;

丢单处理

由于IAP服务器无法保证质量, 或者自己服务器验证凭证出现问题时, 可能会出现丢单(用户付费成功, 但是凭证无法成功向自己服务器验证)的情况, 对于这种情况, 我们可以这样处理。

用户成功下单后,储存订单&uid&凭证。

存储 订单&uid&凭证
@param orderID 订单
@param uid 用户uid
@param receipt 凭证
@param saveKey 储存key
*/
- (void)saveOrderReceiptWithOrderID:(long long)orderID
                            uid:(NSString *)uid
                        receipt:(NSString *)receipt
                        saveKey:(NSString *)saveKey;

在用户向服务器验证成功后或者非网络原因造成的失败后, 删除此条记录,

删除 订单&凭证
@param orderID 订单
@param receipt 凭证
@param saveKey 储存key
*/
- (void)removeOrderReceiptWithOrderID:(long long)orderID
                          receipt:(NSString *)receipt
                          saveKey:(NSString *)saveKey;

这样如果由于网络问题或者服务器出现问题造成丢单, 我们可以在下一次用户启动APP再次去进行验证这笔订单, 重复上面流程

 核对支付成功但是验证失败的订单
*/
- (void)checkLocalLostVipOrder;

你可能感兴趣的:(苹果内购)