p++之支付宝支付与余额支付

曾经做过支付模块,当时只是考虑了正流程,其他的也没有太多的考虑,感觉支付也挺简单的。然而,最近在项目中,全面负责支付这一模块,瞬间觉得自己曾经思维是多么的不缜密。废话就不多说了。边写边整理一下这块逻辑实现。

前提1:支付方式 1.支付宝支付 2.余额支付

前提2:支付返回结果,不以支付宝同步返回结果为准,是以本地服务器为基准的。

前提3:在没有安装支付宝的前提下,余额支付与支付宝支付操作方式一样。

基础工作1:判断是否安装了支付宝APP

当存在支付宝支付方式时,我们需要做的第一件事情就是需要判断手机是否安装了支付宝APP。虽然在你拿着支付串去调用支付宝的时候,支付宝自己会识别,但是你自己程序内的逻辑也需要进行判断,后面写到的细节会解释这块内容。

如何判断你手机内是否安装了支付宝APP,见下面代码:

同时,还需要再plist进行配置白名单,否则iOS9以上这个判断无效。

基础工作2:注册监听home键是否进入前台。后面写到的细节会解释这块内容。

涉及到通知的注意事项就先不讲了

创建订单的过程就不说了,直接从拿着p++的订单NSData串去调支付宝开始。

支付宝支付:

1.手机安装了支付宝APP时:

(1)调起支付宝时,对于我们自己的APP来说,相当于执行了home键。我们的应用进入后台,支付宝应用进入前台。此时为了避免重复下单,需要记录我们APP的支付页面此时执行到流程的哪一步了。

(2)进入支付宝页面,我们可能会有4种操作方式。

A:对于iOS9以上系统来说,我们直接点击左上角返回键,直接返回我们自己的应用。

这种情况下返回我们的应用,是不走我们生命周期函数的。也不会走支付宝同步回调的那个方法的,此时是没有完成支付的。

存在的问题:

如果我们前期不记录离开我们自己应用时的执行状态,此时再次点击支付按钮,就是重复创建订单重复获取p++串,重复调用sdk了。这显然不是我们想要的结果。

解决方法:

a.在执行下面这段代码调起支付宝之前,先记录上次离开APP时这个界面执行到哪一步了,(到这里,应该是执行到获取p++串进行调用支付宝sdk这个流程了)

b.返回到我们应用时,我们使用home键监听,再监听的方法里去请求后台服务器是否支付成功。也就是支付查询结果协议。当然此时后台肯定会告诉你支付没有成功,后续处理方式因需求而异了。比如,重试,直接再次调起支付宝。

c.这里仍然需要注意一个小小的细节就是,home键监听稍微慢了些,也就是说先返回我们应用,之后也就是1s左右,home键监听的方法才执行,此时页面支付按钮仍然是可点击的,为了防止他点击,我们仍然可以在记录上次页面流程执行到哪一步的地方同时将页面可点击状态设置为不可点击,等到请求回支付查询结果协议后,变成可点击状态。这个处理也是因需求而异了。

B:我们点击取消,返回我们自己的应用

当我们在支付宝中点击取消,此时支付宝会同步回调到我们的应用中,告诉我们支付失败,这里需要注意一个细节。

a.我们的应用先执行回调方法,后home键监听的方法才执行,这个时候产生问题

存在问题:

在回调方法里会查询一次支付结果请求,在home键监听方法里也会查询一次支付结果请求。这样显然不合理。也会影响后续的操作。

解决方法: 【我的这种解决方法不是最优啦。】

因为调起支付宝进行支付,后续可能存在多种情况返回我们自己的应用,方便统一且不容易出错,在手机安装了支付宝APP应用的前提下,不管哪种方式返回我们自己的应用,都已home键监听为主,进行查询支付结果。这样就避免查询2次的可能。如果不以home键监听为主的话,我们会先请求支付查询结果,后由支付宝再打开我的APP。如果查询结果很快,当查询结果这个协议后续还有其他逻辑,比如延迟返回上一页,这时就会产生时间问题。比如支付宝打开我们的APP慢了些,导致支付宝返回我们APP直接返回到支付页面的上一页了

【有看我文章的小伙伴们,帮我一下,怎么实现,同步线程中,执行2个延时方法。也就是说,让2个延时方法同步执行。我目前测试得到的结果是,同步线程中,存在2个延迟执行的方法,他们两个并不是同步执行。也就是说存在同步线程异步执行的问题。】

C:我们点击home键,将支付宝应用挂起,此时重新点击我们自己的应用切换到前台。

重新点击我们的应用进入前台,此时是不走支付页面的生命周期函数的。

存在问题:与A一样

解决方法:与A一样

D:我们正常支付,支付成功或者失败后,自动返回我们自己的应用。

存在问题:与B一样。

解决方法:与B一样。

2.手机没有安装支付宝及采用余额支付时

手机没有安装支付宝,当我们拿着支付宝串去调支付宝时候,会通过支付宝sdk在我们的应用内直接调起支付宝网页进行支付。这时候就不会涉及到我们的APP打开支付宝或者支付宝打开我们的APP这些操作,也不会有因为我们应用于支付宝应用相互之间相互打开中间所产生的home键监听问题。

余额支付,直接在应用内完成,不会调起支付宝。所以,余额支付与手机没有安装支付宝支付的操作是一样的。他们只需要在支付回调方法里处理逻辑。

总结:

感觉自己写的比较固执。大部分是按照项目需求进行写了。还有些细节可能因需求而异不会那么做,也就没写了。但是主流程我觉得还是可以跟大家分享的。有不当的地方,希望看到的朋友们能帮我指出来。重要的是我提的问题,这个很急,有知道的朋友联系我呀(QQ:702042658)。超级感谢了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,825评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,066评论 4 62
  • 从街头流浪卖艺女子,到声名傍身女商人,由孙俪饰演的周莹,完美演绎了每个女人梦寐以求的成功之路,也更是让一票男人望尘...
    小文不才阅读 1,116评论 2 3
  • 春城烟花映安详 谁家灯火夜照窗 身入闹市心未足 ...
    青琴绛树阅读 175评论 0 2