h5支付不能打开支付宝 ios_iOS 拦截支付宝H5支付,完成掉起支付宝APP支付,回到自己APP,完整流程...

本文介绍了如何在iOS应用中,通过WKWebView处理支付宝H5支付,使其能够唤起支付宝APP完成支付,并在支付完成后返回到自己的APP。通过监听WKWebView的导航动作,捕获支付宝的URLScheme,修改参数后唤起支付宝SDK,从而实现流畅的支付体验。
摘要由CSDN通过智能技术生成

先说一下这个想法的来源,然后有相关需求的朋友也可以这样来操作

公司产品用到了支付宝支付,但是避免上架审核问题(不能接入支付宝SDK,害怕检测),采用了支付宝的H5支付,作为产品的支付渠道;APP内部,采用了WKWebView作为主体来加载H5内容。

本来是没有什么问题的,但是每次看到支付宝H5支付页面的提示,就感觉有点别扭,而且支付的话,是在H5中完成支付,需要输入验证码、支付密码这些。如图:

[图一]

Simulator Screen Shot - iPhone XR - 2018-11-09 at 13.50.52.png

Simulator Screen Shot - iPhone XR - 2018-11-09 at 13.54.01.png

看到“尝试打开支付宝客户端”,就猜到,这个应该是会去唤起支付宝APP完成支付,然后本着一个程序员的心态,开始了踩坑之路。

首先,回顾一下支付宝SDK的支付流程:

通过后台接口,获取支付串(个人这样称呼哈),然后交给支付宝SDK

[[AlipaySDK defaultService] payOrder:@"支付串" fromScheme:@"本APP的Scheme" callback:^(NSDictionary * resultDic) {

// 回调流程

}];

当执行上面代码以后,就看到能掉起支付宝APP了(自己设置好白名单和相关SDK初始化工作);然后正常执行支付流程

完成支付以后,支付宝第一次会提示打开“***”APP,点击完成,即可回到自己的APP

APP在Appdelegate的OpenURL方法里处理好相关操作后,即可在第一部的回调流程中,获取到支付结果,即可完成整个支付流程

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

if ([url.host isEqualToString:@"safepay"])

[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {

}];

}

return YES;

}

然后,我们回头看下这个支付流程,和H5流程对比,我们想要做到的,就是1.掉起支付宝APP;2.支付完成后,支付宝APP要返回到我们的APP里面来

关键点就在这个“URLScheme”里面,废话不多说,直接说我这边的处理方法

在WKWebView进如“图一”页面的时候,看下WKWebView的代理方法

1.代理方法如下面代码

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值