Apple Pay(内购代码,真实项目验证2年)

简介

关于iOS苹果内购介绍相信大家已经了解得非常清楚了,本篇文章主要根据我开发iOS支付过程中遇到的真实漏单原因和如何解决(需要一定内购支付经验)

Apple Pay容易造成漏单的原因

1,苹果内购与支付宝/微信最大的技术区别就是,苹果用户支付成功后需要主动上传支付凭证到商户后台,再由商户服务器后台去苹果后台验证凭证的有效性。

这是由于这种机制,稍不留意,就很容易造成漏单的情况。这个过程中不可控的因素太多了,比如:1,用户iPhone网络状态不佳。2,突然杀掉进程APP,虽然有补单的功能,但也很容易处理不当。3,第一个订单未结束便进行第二个支付,等等情况都很容易造成不可预料的bug。

2,苹果支付后台会出现“卡单”的情况,就是明明用户已经付款成功了,但是iPhone迟迟收不到支付成功的凭证,笔者亲身经历过几次这样的情况,这种情况一般直接致电苹果客服进行退款或者其他处理,笔者暂时没有了解更有效的办法。

3,由于iPhone的服务器功能很多都位于美国,加上我们对外国网络的一定健康过滤,所以一定程度上会不稳定或者出错。

以上3种情况是我总结出来的,当然还有很多其他的因素,总而言之,处理内购代码,一定要慎重,毕竟关系到项目的营收。

分享笔者内购开发过程中,出现过的问题,希望能帮助更多人

正常的支付流程我就不说啦,说一说最容易也是最隐藏出现的bug

1,一个一个订单操作

千万不能让用户同时进行多个支付订单,不然及其容易造成支付结果的混乱,因此应该使用一些MBProgress提示框架,不让用户误操作。

2,一定要有补单功能


为了防止收到支付凭证并且传到商户服务器后台过程的各种报错,一定一定一定要将该凭证保存到本地iPhone客户端中,并且在APP重启的时候主动补单,拥有一定的重试机制,直到商户服务器的验证成功后再将其删除。

3,用户杀掉App进程

由于苹果支付的网络延迟等各种原因,用户很容易终止杀掉App进程,这个时候就应该注意了,因为该我们开发的时候往往喜欢将商家服务器后台的用户ID或者订单编号仅保存在内存中,所以如果在此过程中关闭App,再次打开App恰恰此时支付成功来了,但是却找不到相应的用户ID或者订单号了,此时就出现异常了。因此应该将用户ID或者订单信息持久化保存在iPhone当中。

如有说错的地方,敬请指教。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 移动支付的现状 今年二月份,苹果在中国大陆隆重推出了其手机支付工具,Apple Pay。该功能是苹果携手中国银联,...
    苦食轩主人阅读 1,104评论 2 2
  • 每天进步一点点点点点点点点点点点点点点点点点点点点点点点点点点点点点点~~从开始只能写几句话、模仿别人的观点,到现...
    一个帅气的名字呀阅读 18,399评论 4 31
  • 每周一到周五一天一幅,而这周因为个人原因我缺了三幅,今天全补上了。 每一幅都有搭配文字,而字写的不好,不仅不能给我...
    150小姑娘阅读 422评论 2 2
  • 七弦声声慢关情, 岩心自许两生花。 极愿人间莫离别, 夜月迢递照吾家。
    柒夜阅读 290评论 0 1
  • 写作已经被越来越多的人重视,写作与演讲在未来将成为人们的通用能力。不少人已经意识到了写作的重要性,想写作可提起笔来...
    Ameizeng阅读 1,867评论 9 33