前段时间因为公司添加了支付业务,于是集成了支付宝和内购。悲剧的是,😭,因为宝宝被拒了。拿句应景的话说,宝宝生气了,宝宝不说话,结果宝宝一说话就收费了。
好吧,扯完了。步入正题,怎么样绑定银行卡,申请内购我就不在这里长篇大论了,也没有让我来做,这个是公司的财务或者法务来做的。我们只是添加product,添加完product之后,就可以在沙盒环境下进行测试了。
在这里只是总结一下遇到的坑,如果说的不对或者想讨论的,欢迎指正和指教。
1.在Appdelegate 函数的入口处记得注册观察者,这样可以让你将已经支付成功而没有向自己服务器校验的内购商品校验。
[[SKPaymentQueue defaultQueue] addTransactionObserver:[CargoBay sharedManager]];
2.支付类型的选择,消耗型,非消耗型,订阅型,非消耗型需要添加恢复购买,不知道在哪儿看的博客说中国区没有非续费订阅型,太坑爹了,会员业务都是非续费订阅型的,一般来说为了公司的业务灵活,我们往往会使用消耗型达到其他类型的目的,就是引入中间虚拟币,在审核的时候要注意,类型一定要匹配,无法匹配了,要灵活,找到折中方案。
3.上线的时候,记得把你的内购商品勾选上,不然上线之后就请求不到商品,我司的哥们儿就犯了这个错误。
4.服务端在向苹果服务器校验的时候,记得处理返回的code码的异常,不要出现线上服务器去沙盒环境校验的低级问题。
5.上线显示价格的时候,可以记得进行转换,不收手动写上‘¥’,‘$’,这样的货币符号,在不同的地区的话价格上会有争议。
SKProduct *product = self.dataArray[indexPath.row];
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]
init];
[numberFormatter
setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter
setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter
setLocale:product.priceLocale];
//显示的价格
NSString*formattedPrice
= [numberFormatter stringFromNumber:product.price];
6.规避小技巧,加入自己的服务类型是消耗型的业务,但是却需要日期提示的,可以及对应的日期设置为其他的名词替代。例如 1个月 --- 初级 ,3个月 --- 中级 等等 ,否则可能苹果会以服务类型不匹配的理由reject 。
7.在测试的时候,在你的测试账号下,如果有多个人登录同一个账号,并且在不同设备上购买了服务,而恰好这个时候其他的设备没有校验成功,这个时候向Apple服务器校验的时候,receipt data 数组里或有多个结果,不要奇怪,这是正常现象,看其他的设备有没有向服务器验证完毕。一定要在向服务器验证成功之后,再移除本地的购买任务。
ok.啰里啰嗦就讲到这里了,有什么问题欢迎大家讨论。
欢迎交流! 联系方式在简介.