iOS 内购(In-App Purchase)踩坑
2022-06-15 本文已影响0人
Alter桐
1.App 内购时,提示说:此时没有权限在Sandbox购买此InApp
2.添加 Sandbox 测试账号,注册时一定要填写真实邮箱,点击邀请,然后登录刚刚的邮箱,验证地址
就可以免费测试自己 APP 的内购项了。
3.bundleID要与iTunes Connect上你App的相同,不然是请求不到产品信息的
4.监听购买结果,当失败和成功时代码中要调用:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
该方法通知苹果支付队列该交易已完成,不然就会已发起相同 ID 的商品购买就会有此项目将免费恢复的提示。
5.游客模式可以出现购买虚拟币以及购买VIP的页面 而且允许游客购买 购买后的凭证要保存在本地 然后当用户登录的时候 把这个凭证在发给服务器去验证 验证成功后 将虚拟币或者是VIp加到当前账户上
(但是不建议这么做处理起来比较繁琐)
6.内购掉单问题
(1)将订单信息保存到本地,每次打开app时自动检测本地是否有未完成的订单,所以在服务端未给返回完成时,这笔订单是不会被完成的,再次打开app都会走一个支付未完成的回调,会根据系统给到的订单信息匹配本地保存的未完成的订单信息,再去服务端进行校验, 通过这种模式去保证不掉单
(2)如何APP被删除了那么订单可能也会失去了,这种情况比较极端,但是如果非要处理可以考虑保存到钥匙串中
7.没有订单号
处理方式一样在下单成功后,先把订单保存在本地,再去确认订单时,若是没有订单号,就从本地拿一下确认成功后,删除对应订单号。