这里用是的苹果原生和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. QML学习笔记之一

    摘自<Qt Quick中文手册> Qt Quick提供了一套高动态,丰富的QML元素来定制用户界面的说明性框架. Qt Quick包含了QtDeclarative C++模块.QML,并且 ...

  2. HDU 4099 Revenge of Fibonacci(高精度+字典树)

    题意:对给定前缀(长度不超过40),找到一个最小的n,使得Fibonacci(n)前缀与给定前缀相同,如果在[0,99999]内找不到解,输出-1. 思路:用高精度加法计算斐波那契数列,因为给定前缀长 ...

  3. linux C(hello world) 解方程

  4. 关于设置ScrollView的滚动条为隐藏的方法

    要实现ScrollView滚动条的隐藏,有两种方法, 一种是在XML的ScrollView布局中加入属性android:scrollbars="none" 另一种则是在代码中获取S ...

  5. WPF之复杂形状控件

    有的时候想将一张图片变成一个按钮.当然这里不是单纯讲图片作为按钮的背景. 这两者是有区别的: 前者图片即按钮,比如你有一个空心的圆圈,当你点击中间空心部分的时候是没有任何反应的因为它不是属于按钮的一部 ...

  6. jquery datatable[表格处理]

    最近在公司实习发现一个额功能强大的表格解决方案,了解了一下,先总结如下: 1.官网:http://www.datatables.net/ 2.需要特别注意:被dataTable处理的table对象,必 ...

  7. iOS 应用首次开启 出现引导页面

    关于引导页面 ,可以是独立的一个视图控制器控制的滚动视图. 重点是处理 如何判断app是首次开启 而调用这个视图控制器得方法. 逻辑如下: -(BOOL)isFirstLoad { if(!标记第一次 ...

  8. 阮一峰博客里面css3的display:flex的布局

  9. 【阿里云产品公测】阿里云ACE配置全程图解,详细到不行!

    作者:阿里云用户sofia 看过阿里云社区的其他技术大姥们的评测教程,感觉还是不够详细,对于一个第一次接触ace.新浪sae这类的应用来说还是比较陌生的.我最喜欢写教程了,不过我有我的风格,那就是简单 ...

  10. Android中“再按一次返回键退出程序”实现

    private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyC ...