IOS H5支付调起微信支付宝客户端问题总结

很早之前公司的支付功能,通过H5去支付宝和微信支付,开始使用的是UIwebView来加载h5页面,当初只有支付宝网页支付形式,所以没有考虑到那么多,现在新增微信支付后发现不在info.plist中添加Alipay和weixin的白名单压根调不起客户端,折腾了好久,终于算是解决了,但是仍然不理想,下面记录下这个坎坷的过程。

加载web页ios下目前提供了两种框架,UIWebView和WKWebView,经过反复测试,发现在WKWebView下在ios9系统上不能调起微信支付客户端,因此,暂时放弃WKWebView(虽然很倾向于使用它)。下边说下使用UIWebView,并不需要添加白名单即可。

创建加载UIWebView就不多说了,这里主要说下打开支付宝和微信客户端的处理

使用UIWebView调用支付宝支付很简单,只要在- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType{}协议方法中检测当前request的url是否可以打开客户端,即可

对于微信需要检测当前的request的url.scheme是否是weixin://,如果是的检测是否设置了Referer,否则先设置  Referer,如果当前scheme不是weixin://,像支付宝一样拉起客户端即可,微信支付还需要注意一点,就是支付完成和返回后如果下单url携带了回调页地址的话,微信会自动跳转到浏览器(这个地方出了设置scheme下的域名外如果还有其他方法的欢迎提供意见),同样返回应用内后也会展示改回调页,所以这个就需要服务器做下处理,如果需要进行交互,这里也不说了,网上有很多文档,下面附上代码

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {

NSURL*url = [requestURL];

NSString *newUrl = url.absoluteString;

if ([url.scheme isEqualToString:@"weixin://"]) {

NSDictionary *headers = [request allHTTPHeaderFields];

BOOLhasReferer = [headersobjectForKey:@"Referer"] !=nil;

if(hasReferer){

if(![newUrlhasPrefix:@"http"]) {

UIApplication *application = [UIApplication sharedApplication];

if([applicationrespondsToSelector:@selector(openURL:options:completionHandler:)]) {

[applicationopenURL:request.URLoptions:@{}completionHandler:^(BOOLsuccess) {

}];

}else{

if([applicationcanOpenURL:request.URL]) {

[applicationopenURL:request.URL];

}

}

}else{

NSLog(@"===================false");

}

returnYES;

}else{

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

[requestsetHTTPMethod:@"GET"];

[requestsetValue:@"xxx.xxx.xx" HTTPHeaderField:@"Referer"];

[self.myWebViewloadRequest:request];

}

returnYES;

}else{

if(![newUrlhasPrefix:@"http"]) {

UIApplication *application = [UIApplication sharedApplication];

if([applicationrespondsToSelector:@selector(openURL:options:completionHandler:)]) {

[applicationopenURL:request.URLoptions:@{}completionHandler:^(BOOLsuccess) {

}];

}else{

if([applicationcanOpenURL:request.URL]) {

[applicationopenURL:request.URL];

}

}

}else{

NSLog(@"===================false");

}

returnYES;

}

return YES;

}

第一次写文章,有错误的地方还请指出来,大家一块进步啊~

h5支付不能打开支付宝 ios_IOS H5支付调起微信支付宝客户端问题总结相关推荐

  1. android 浏览器打开微信支付宝,Android通过webview调起微信和支付宝app进行支付

    extraHeaders = new HashMap(); // extraHeaders.put("Referer", "http://zxpay.fss518.cn& ...

  2. 苹果+android+扫码支付,苹果iOS12捷径扫码付款怎么设置 微信支付宝扫码二合一支付捷径...

    苹果iOS12捷径扫码付款怎么设置 微信支付宝扫码二合一支付捷径.捷径是苹果手机一个比较实用的功能,如今手机扫码支付非常流行,因此在苹果手机中安装一个支付捷径,还是非常方便的.下面小编就来分享一个微信 ...

  3. h5语音自动播报,能够兼容ios,安卓微信支付宝

    1.语音播报使用方式如下,由于安卓ios兼容性问题封装成不同组件 <!-- 安卓版微信.安卓.ios版支付宝--><common-audio ref="audioTip&q ...

  4. APP内嵌网页使用微信或支付宝的H5支付

    如何绕过微信或支付宝的H5支付的拦截验证?下面我们从本质上来说明该如何解决这个问题. 微信和支付宝的H5支付下单成功后都会返回一个跳转支付的url连接,通过这个连接可以拉起微信或支付宝进行支付操作. ...

  5. 新版开运网运势测算网站源码 支持微信/支付宝H5支付 支持分销代理 可封装APP

    源码介绍 我在外面花钱购买的某站VIP资源,就是那种搬砖站,买来没时间调试发给大家看看吧,喜欢的就下去玩玩! 支持微信/支付宝H5和电脑端扫码支付.手机端可以调起微信/支付宝应用支付 支持后台设置价格 ...

  6. 微信浏览器iframe嵌套h5,h5页面不能调起微信支付问题处理

    微信浏览器iframe嵌套h5,h5页面不能调起微信支付问题处理 第一步: 微信公众号配置网页授权域名,拿用户openid 第二步: h5页面跳转后端微信静默授权,拿到用户的openid 第三步: 微 ...

  7. 抓包抖音充值页面实现微信支付宝充值抖币,可提供api

    抖币充值系统重写升级: 1.支持配置扫码配置多个CK 2.支持生成 微信/支付宝 支付二维码 扫码充值 3.支持 微信/支付宝 APP 直接唤醒充值 体验如下: 需要的小伙伴可私信 留言! 整个开发流 ...

  8. h5支付不能打开支付宝 ios_iOS 解决微信h5支付,支付宝h5支付无法直接返回APP的问题...

    由于公司的业务需要,为了节省申请开通微信支付的时间和人力,公司决定使用微信h5支付.这样即节省了时间,同时以后所有的APP都能使用h5支付,既方便又快捷. 但是真正做的时候问题来了,当你支付成功之后或 ...

  9. h5支付不能打开支付宝 ios_IOS WKWebView H5支付打开支付宝/微信客户端

    近期公司项目中的App使用WKWebView封装作为一个壳,加载web的网页,其中的支付使用的是H5支付,在APP中需要调起微信和支付客户端进行支付,过程中遇到了一些问题,好在通过查找资料找到了以下解 ...

最新文章

  1. 響應式設計中百分比 % 的問題
  2. adb查看app的日志
  3. matlab fix函数_Matlab课后答案第四章
  4. Delphi面向对象学习随笔六:接口
  5. 软件开发过程(CMMI/RUP/XP/MSF)是与非?
  6. 用倍增方式查询本表数据再插入到本表,用作测试数据
  7. vb 源代码格式化工具,Visual Basic程序源代码格式化工具
  8. 日记侠:我为什么学习网络营销
  9. Solr6适配自定义升级版mmseg4j
  10. 2021年数据泄露成本报告解读
  11. windows server ----域(D)的创建
  12. web-HTML5-图片+超链接标签..
  13. 第一课.极大似然估计与有偏性无偏性
  14. 经典算法之贪心(Greedy)
  15. 步进电机每转步数和步进角关系:每转步数 = 360°/歩进角
  16. eclipse安装red5插件
  17. 这就是爱,说也说不清楚
  18. 惯导IMU和惯导INS
  19. 中国信息安全测评中心强硬发声,落实等保2.0制度
  20. 卡罗拉 (COROLLA) - 加注玻璃水

热门文章

  1. 21_异常_第21天(异常、企业面试题,思维导图下载)
  2. 近期在看的一段JS(谁能看出我想实现什么功能)
  3. Java简单知识梳理
  4. 使用setfacl实现子目录继承父目录权 限
  5. IPsec-×××基本技术挖掘
  6. MySQL 修复root权限
  7. archlinux包管理器--pacman常用命令
  8. Python把数据存储到CSV
  9. js面向对象编程:this究竟代表什么?第二篇
  10. CH4402 小Z的袜子(莫队)