首先说下我们的项目需求,我们的IAP内购是非消耗型产品。
实现原理:下订单的时候就把订单和产品id系列化保存起来,为了避免订单数据越来越多,所以当收到交易失败或者交易成功的时候就把当前订单删除了。
然后本地各种测试没有问题,等到发布线上的时候很多用户反馈微信扣钱了,但是视频还是不能正常观看,然后就反复排查代码,逻辑还是没问题啊,然后本地又各种测试还是没有复现。
最后测试直接模拟用户操作,首先appid里面没有钱也没有绑定微信支付宝,这时支付不成功会弹出是否继续的提示框,然后点继续绑定微信操作,由于我们是非消耗型产品所以绑定成功直接扣款了,可是回到app发现并没有去向服务器验证订单。
由于苹果支付坑不能本地调试所以只有在代码里面加点log发布到appstore上面测试,发现弹出是否继续提示框的时候苹果返回了一个失败的回调,由于这时我把订单删除了,所以等到支付成功时就找不到订单了。
记住这里有个大坑:IAP支付,绑定微信或者支付宝时会有一个失败的回调SKPaymentTransactionStateFailed。
网友评论