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(内购代码,真实项目验证2年))