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. 【Web安全】DVWA之Command injection(命令执行漏洞)探索
  2. [bzoj2467][中山市选2010]生成树_快速幂
  3. Lync 2010迁移Lync 2013 PART6:迁移CMS
  4. Css中Position属性的含义
  5. 实例化bean的三种方式
  6. selenium firefox驱动_Python3+selenium配置常见报错解决方案
  7. 【调试工具】之VIM快捷键
  8. 条件变量的陷阱,惊群效应(转载)
  9. SpringBoot实战(七):替代if的优雅方案,提高程序扩展性
  10. 贪心法——LeetCode 55 跳跃游戏
  11. bzoj 4827 礼物
  12. MyBatis_Study_003(字段名与属性名称不一致,resultMap)
  13. Linux的互斥锁、条件锁的用法
  14. 《给产品经理讲技术》笔记之第三章:开发技术
  15. ES-Checker
  16. 计算机组装硬件配置清单,组装电脑配置清单
  17. ipad查看本地文件html文件,ipad如何观看本地视频 怎么用iPad观看电脑上的影片
  18. 基于C#程序触摸屏软件盘开发总结
  19. 靠贴牌飞利浦冲击上市,德尔玛的自有品牌又该如何“起跳”?
  20. 一图读懂昇思MindSpore | 秒懂简介,你想知道的都在这里!

热门文章

  1. MVC4 WebAPI(一)
  2. Selenium-三种等待方式
  3. mediawiki常用设置
  4. 奇虎360:说爱你不容易的“母婴平台”故事
  5. SQL查询存在一个表而不在另一个表中的数据
  6. zabbix系列(四)Zabbix3.0.4添加对Nginx服务的监控
  7. maven添加非官方jar包到本地库
  8. 不要在覆写的方法中用super
  9. dos下常用网络相关命令解释
  10. ASP.NET HTTP运行时组成详解(转贴)