美文网首页
苹果内购丢单问题

苹果内购丢单问题

作者: 琦玉老师很强 | 来源:发表于2021-02-27 09:27 被阅读0次

1.内购流程

内购流程

1.APP调用Apple服务器接口创建订单,发起购买请求

2.内购的api完成购买,获取receipt发送本地服务器,本地服务器拿到receipt向苹果发起验证,并回调结果给APP

以上就是整个购买的过程,大致分为两个阶段:支付阶段和验证阶段

2.为什么会丢单原因?

1.不能得到凭证去Apple服务器验证订单的正确性(支付阶段)

解决:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

这个队列里面存着所有的已支付,未支付的订单,而且需要手动移除,而APP每次启动和每次支付的时候都会去判断这个队列里面是否为空,如果不为空的话会调用<SKPaymentTransactionObserver> 代理方法

  • (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions;
2.APP在上传凭证给服务器时发生了网络或各种原因,造成了凭证的丢失,产生了掉单 (验证阶段)

解决:在支付之前需要通过自己的服务器创建订单,在交易成功回调之后,立马将该订单和本次交易凭证存储到数据库中。在用户下次登录的时候和每次支付结束时候,要首先验证该数据库中的交易凭证是否都经过后台验证过并成功给用户商品,然后将本地保存的凭证移除。

验证的时机:

  • 用户下次登录
  • 每次支付之后

3.代码实现

1.设置监听,在APP启动时候监听内购的订单情况

设置监听

2.请求商品订单

请求商品

3.查询构造的商品订单

查询构造的商品订单

4.购买成功后的回调

购买成功后的回调

5.存储交易凭证,并且上传凭证

存储交易凭证 上传凭证

6.验证交易凭证

验证交易凭证

注:验证凭证是将获取的凭证通过接口交给后台去验证App是否交易成功。如果发生弱网,APP杀死,或者验证失败,凭证会保存在本地,当APP重启时候会把本地保存的凭证进行二次的验证。

参考文章:

https://www.jianshu.com/p/e489c6d25dc3

https://www.jianshu.com/p/bfa265971ce5

https://www.jianshu.com/p/c4e24d4eebd9

相关文章

  • 苹果内购丢单问题

    1.内购流程 1.APP调用Apple服务器接口创建订单,发起购买请求 2.内购的api完成购买,获取receip...

  • 苹果内购丢单问题

    问题描述: 在苹果内购财务报表里,10月13日有4笔订单,但是CRM里只看到了3笔。 问题分析: 用户付款后,网络...

  • iOS内购丢单的解决方案

    iOS内购这块的开发一直比较麻烦,除了各种购买选项的问题,最恶心的问题就是丢单问题。丢单就是iOS内购过程中付了钱...

  • 苹果内购零丢单处理

    @[TOC](苹果能够的零丢单操作) # 文章的主要内容 你好!这是我发表的第一段关于苹果技术的博客,如果有说的不...

  • iOS内购的坑

    网上都说苹果内购的回调不准,之前只是看看,并没有太在意直到目前在做的项目出现了内购丢单其实就是某一个订单在苹果回调...

  • iOS 内购漏单问题解决参考方案

    问题:iOS内购漏单的问题 事由: 不久前,有用户反映,大概意思是这样:苹果扣款成功了,但是没有发放应得的内购产品...

  • 记录一下IAP内购的流程

    前段时间做了点内购的东西,记录一下内购流程,对于丢单的处理留到下一篇再记录,本次先不考虑丢单的情况。开发者中心设置...

  • IAP内购丢单处理

    要想处理丢单,就要搞清楚哪些环节会出现丢单的情况。首先来理一下支付流程:1.调用IAP接口发起支付2.支付成功,获...

  • 苹果内购In-app purchase

    关于苹果内购(IAP)的一些问题以及那些坑: 最近在研究苹果内购功能,所以,在网上找了一些资料,进行学习。但是,内...

  • iOS 内购丢单处理策略

    漏单等情况预防与处理方案 1.漏单处理所谓的漏单就是玩家已经正常付费,却没有拿到该拿的道具。 解决:只要购买成功,...

网友评论

      本文标题:苹果内购丢单问题

      本文链接:https://www.haomeiwen.com/subject/isazxltx.html