描述:
请耐心看,着急的直接跳到第6点
我的问题是这样的,利用支付宝进行余额充值,支付宝生成订单扣费了,App余额却没有增加,苦思不果,尝试了各种方法终于......
其实这里的充值,一样的是调用
- (BOOL)payInterceptorWithUrl:(NSString *)urlStr
fromScheme:(NSString *)schemeStr
callback:(CompletionBlock)completionBlock;
这个方法,眼熟吗?想象中的,支付返回后,就会回调是吧~~
然而想象总是美好的......
现实是:
- 支付界面取消支付,返回到App界面,不会回调
- 支付界面进行支付,支付成功,不会回调
- 虔诚的祈祷,同样不会回调
[好了,皮一下就舒服了~~]
好了,说说我是怎么来填这个巨坑的吧:
- 1、因为支付宝支付、扣费是成功了的,所以,问题不在于发送的参数、订单生成等问题上,而是请求成功之后的操作上有误
[这是我的第一反应,然而由于之前我并没有接触过支付宝方面的操作,还是跟着断点走了很多遍这一系列过程]
。 - 2、But!它就是不走回调,根据官方Demo对Appdelegate文件做了更改
[上一任没有在Appdelegate.m里做支持回调的处理,小声bb......]
,结果是Appdelegate里的回调进去了,能得到支付成功与否的结果,但是!!!!我封装的支付类里的支付回调方法却依~
然~
没~
有~
回~
调~
! - 3、生气
ing~
!但是生气也是没用的,依然要继续搬砖......于是尝试曲线救国,在Appdelegate里将回调值传递出去,然而是不可行的[至少目前,我不知道,尝试写通知传值,然而事件的生命周期,在Appdelegate里就结束了,我传出去了值,也貌似做不了处理...当然也许是我写的只是bug~~]
。我开始怀疑,是不是集成错了?环境错了? - 4、接着上面的怀疑,我开始看项目里支付宝的集成环境,和官方文档一步一步的比较,发现...貌似...没问题!见鬼了?仔细想想,连支付宝订单都能生成,扣费都能成功,怎么会环境又问题,而且项目又没报错...此时此刻,开始为自己脑袋短路而感到愚蠢
~~
- 5、后来,我开始怀疑是不是SDK的原因,因为支付宝SDK有两个版本,旧版、新版,也许是这个问题了
[内心有种强烈的预感,就是这样,实际上,除此之外我根本找不出其他原因了~~]
。 - 6、结果,果真如此~!
新版本2017,不支持,移动支付方式,只支持h5支付,旧版才支持移动支付
。而项目里面用的就是新版本SDK,但是支付方式是移动支付,所以,并没有执行回调!!!!!!!!!!终于解决了[天呐,这个bug真的心累呀~~]
!
解决方法:
如果你仔细看了我上面的一把拉吧拉的吐槽和填坑经历的话,你已经知道怎么解决了,如果没仔细看,就直接看第6点吧,就酱~
网友评论