这里用是的苹果原生和JS的交互 、有不明白JavaScriptCore框架的可以去网上搜索下这方面的资料很多
废话不多说直接上代码

@protocol JSContextDelegate <JSExport>//这里面写H5,也就是网页端定义的方法- (void)isLogin;//如判断用户有没有登录@end
@interface HtmlShopingViewController ()< JSContextDelegate>@property (nonatomic, strong) UIWebView *mainWebView;@property (nonatomic, strong) JSContext *jsContext;//支付宝返回的状态码@property (nonatomic ,strong)NSString * alipayCode;//微信返回的状态码@property (nonatomic ,strong)NSString * wxCode;//点击系统左上角的返回app的状态码,这里随便给一个值,前提是你和H5端商量好的值@property (nonatomic, strong) NSString *backCode@end
- (void)viewDidLoad {
   [super viewDidLoad];    self.alipayCode = @"";//给初始值
   self.wxCode = @"";//给初始值
   self.backCode = @"";//给初始值}

接着在webview的代理方法中写

- (void)webViewDidFinishLoad:(UIWebView *)webView{self.jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];    self.jsContext[@"填H5端的方法名(如abc. 方法名,取abc)"] = self;//也就是填的  self.jsContext[@"abc"]
   self.jsContext.exceptionHandler = ^(JSContext *context, JSValue *exceptionValue) {
       context.exception = exceptionValue;        NSLog(@"异常信息:%@", exceptionValue);
   };      if (![self.alipayCode isEqualToString:@""]) {//表示有值
       NSString *alipayCodeJS=[NSString stringWithFormat:@"h5端的方法名('%@')",self.alipayCode]; //准备执行的js代码
       [self.jsContext evaluateScript: alipayCodeJS];//通过oc方法调用js的alert
       self.alipayCode = @""; //给回空值
     }
}

微信的和系统返回键的值同理、这里就只写支付宝  怎么传值可以参考http://www.jianshu.com/p/2536a7d689a5

#pragma mark - 支付宝支付后接收的值(状态码)- (void)aliPayReslut:(NSNotification *)notfication {        self.alipayCode = notfication.userInfo[@"resultStatus"];//支付宝的传回来的值
       [self.mainWebView reload];//刷新WebView  }

支付宝在传值的时候需要注意一下

上面的是在手机上安装了支付宝客户端,没有安装客户端的情况就需要在支付宝在没有客户端的时候传回状态码的地方调用

  //此方法只在没有支付宝客户端的时候传支付的状态码
       [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {            self.alipayCode = resultDic[@"resultStatus"];
           [self.mainWebView reload];
       }];

最后在写一个在支付过程中直接点击左上角的返回App的处理
当点击左上角返回App的时候回调用AppDelegate.h用的这个方法

- (void)applicationWillEnterForeground:(UIApplication *)application {    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
   [[NSNotificationCenter defaultCenter]postNotificationName:@"resumeBack" object:nil userInfo:nil];
}

上面同和支付宝一样的传值给H5端,进行界面跳转处理。OK写到这里就搞定了支付宝、微信回调传值给H5网页,写的不好莫怪。

关注微信公众号

学习区块链

如果你觉得我的文章对你有帮助,请支持我,你的支持是我最大的动力

IOS 支付宝、微信回调传值给H5网页的更多相关文章

  1. chrome调试微信,app中H5网页的方法!

      调试微信,app中H5网页大概有如下几个方法: (1).我们可以直接把网页的url放在chrome浏览器中进行调试.(不涉及微信登录) (2).我们可以把网页的url放在微信开发者工具中进行调试. ...

  2. 【微信H5支付】微信公众号里H5网页点击调取微信支付

    最近在公众号里开发了下单支付H5网页,需要在H5里调用微信支付界面.开发思路和代码整理如下: todo...

  3. C#POST 支付宝/微信回调接口

    一般支付宝/微信的回调接口都会返回xml格式,下面是调用类似这种接口的办法: public async Task<string> GetData() { string requestUrl ...

  4. iOS支付宝SDK回调那坑

    支付宝钱包支付接口开发包2.0标准版(iOS 2.2.1) ,回调不出来,demo给出的方法是: - (BOOL)application:(UIApplication *)application op ...

  5. iOS 微信和支付宝关于回调处理

    在支付这一块,发现讲支付集成的比较多,但是关于支付后回调处理的不多见,(当时因为这个问题懵逼了好久)就自己总结一下, 1.支付宝回调 支付宝的回调想对来说比较简单一些,因为支付宝的回调就在调起支付宝的 ...

  6. ThinkPHP 5 整合支付宝微信支付(支付宝H5,微信H5、APP支付、公众号支付)

    因项目没有PC站所以没有写电脑网站支付. Pay.php支付控制器 <?php // +----------------------------------------------------- ...

  7. iOS支付宝,微信,银联支付集成封装(上)

    一.集成支付宝支付 支付宝集成官方教程https://docs.open.alipay.com/204/105295/ 支付宝集成官方demo https://docs.open.alipay.com ...

  8. 如何将h5网页改成微信网页

    1.如何将h5网页改成微信网页 1.设置安全域名          先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”.         备注:登录后可在“开发者中心”查看对 ...

  9. iOS开发集成支付宝支付、支付宝&微信支付

    支付宝支付: 参考链接:https://www.jianshu.com/p/60175e525c0e https://blog.csdn.net/zhonggaorong/article/detail ...

随机推荐

  1. center os 6.5 vsftpd 登陆出现 530 错误拒绝 解决方法

    别管那么多 把 /etc/vsftpd/ftpusers  里面的用户名删掉就好了.

  2. CSDN问答频道“华章杯”7月排行榜活动开始,丰厚奖品等你拿

    CSDN问答频道月度排行榜,是CSDN问答频道从3月开始举办的活动,旨在鼓励更多用户参与提问和解答,创造一个良好的互帮互助氛围,使参与者在问和答的过程中得到技术水平的提升,也希望大家能在技术交流中结交 ...

  3. 学渣告诉你,到底神马是傅里叶级数!转自 新浪@工程师style

  4. C# redis 分布式session存储

    https://github.com/uliian/SessionExtentionStore 一个基于Redis的Session存储扩展方案,解决ASP.NET中Session的局限性和跨应用程序使 ...

  5. asp.net负载均衡方案[转]

    在前面的几篇文章中,主要谈到了在Discuz!NT中的跨站缓存数据,数据库负载均衡.但如果要实现将产品分布式布置到若干机器,组成集群来共同支撑起整个业务的话,还是有一定问题的(后面会有所介绍).下面先 ...

  6. [Express] Level 5: Route Instance -- refactor the code

    Route Instance Let's rewrite our cities routes using a Route Instance. Create a new Route Instance f ...

  7. python 列表函数(转)

    list函数: 功能:将字符创转化为列表,例: 列表基本函数: 1.元素赋值,例: 注意:通过list[0]= 'hel',如果原来位置上有值,会覆盖掉原来的. 2.分片操作 1)显示序列,例: 注意 ...

  8. 几种 HtmlEncode 的区别(转发)

    问题: HttpUtility.HtmlDecode ,HttpUtility.HtmlEncode  与  Server.HtmlDecode ,Server.HtmlEncode  与 HttpS ...

  9. Web前段优化,提高加载速度 css

    前言:  在同样的网络环境下,两个同样能满足你的需求的网站,一个"Duang"的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒, ...

  10. win7系统中的声音图标不见了怎么办

    转载:http://jingyan.baidu.com/article/dca1fa6f815023f1a44052d6.html 我以前用的比较多的还是xp系统,对xp系统中的一些常见的操作还是很方 ...