前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >In-App Purchase 内购丢单、串单处理

In-App Purchase 内购丢单、串单处理

作者头像
陈雨尘
发布2018-06-07 15:17:17
3.1K2
发布2018-06-07 15:17:17
举报
文章被收录于专栏:雨尘分享雨尘分享

IMG_4304.JPG

In-App Purchase 内支付相信是很多开发者的伤痛,由于内支付的处理机制导致很多情况下会出现丢单的情况,这边文章就着重聊一下内购丢单的情况和处理。如果你对内支付还不是很了解建议你看下这边文章,内购流程:http://blog.csdn.net/teng_ontheway/article/details/47011813 惯例美女镇楼哈 ?

1.下面是我自己画的一个大概的流程图(字比较烂,将就这看吧哈~)

IMG_6284.JPG

图中 ① 为请求商品详情之后根据商品的ID 发起支付请求 (这里的Id 就是商品的ProductId)

1.png

在发起支付之后 ,会收到苹果返回的商品信息(这些信息是你上架商品时候填写的),然后在根据这些信息把此次支付封装成一次事务加到苹果的支付事务里(个人理解)。如图

这里面有一个重要是 操作是为了防止发生丢单,串单的在下面在详解

然后是图中② 在收到苹果返回的支付结果后做的处理

3.png

这里会收到苹果支付的返回凭证,这里要做下本地存储,防止发送后台失败引起的丢单。

4.png

然后在成功验证发放商品之后在删除本地存储

5.png

2.丢单产生的情况和处理

1.在①的时候重点是在封装的时候把订单信息写进SKMutablePayment,这样在收到支付结果的时候就可以去取出这个订单号,发送后台进行验证,这样就能有效的规避串单问题。 2.在②的时候在用户支付之后还未收到凭证回调之后如果app 出现异常,就不能正常接收支付结果的回调,这个时候,只要不主动关闭这次交易事务下次设置监听的时候(建议重启的时候),还是可以获取到这次交易回调,再进行凭证处理。

代码语言:javascript
复制
MyStoreObserver *tempObserver = [MyStoreObserver shareInstance];
self.observer = tempObserver;
[[SKPaymentQueue defaultQueue] addTransactionObserver:tempObserver];

3.在③的时候收到凭证的回调之后发送后台验证这块很可能会出现发送失败等情况,这个时候就要把凭证进行本地存储(存储的是记得是存储为数组,因为可能有多个),在验证成功之后再删除本地存储的凭证。

丢单的处理在上面的贴图代码中也有体现,希望对你会有帮助,大体总结就到这里了,中午吃饭了,就这么多吧! ?

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.11.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.下面是我自己画的一个大概的流程图(字比较烂,将就这看吧哈~)
  • 2.丢单产生的情况和处理
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档