在这里不介绍具体的iOS内购流程实现,只是分享一下自己在处理iOS内购过程中遇到的问题和解决思路。国外也好,国内也好,任何一种支付都有可能会出现掉单,网络问题,逻辑问题...而我碰到的iOS内购掉单的情况频率相对而言出现的更高,在这里介绍几种可能会导致掉单或者支付失败的情况:
一、mobileprovision不匹配
这种情况一般是初次接触iOS内购容易搞错的地方,在应用发布之前要是用ad hoc的mobileprovision,并且使用的苹果设备也要加入到开发者设备,苹果账号也要加入沙盒账号,才能够测试充值。而上传的提审客户端,要用distribution的mobileprovision匹配发布证书来签名,这个客户端虽然开发者是不能充值的,但是只要你的逻辑和代码没有问题,苹果的审核人员是有权限进行充值的。
二、没有执行 finishTransaction操作
这种情况一般也是初次接触iOS内购容易忽略的步骤,也是网络上面出现求助最多的一种情况。苹果内购的一般处理流程为:
如果没有执行finish订单的操作,用户将不能创建新的苹果内购订单,导致再次发起苹果内购失败。
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
三、 applicationUsername