最近因为公司业务发展,需要研究APICloud的使用,主要是针对iOS模块化开发这块。我在APICloud官网搜索半天也没得到解决方案,而下载的APICloud Demo过于简单,故经过几天的钻研,找到了解决办法,现总结出来,给有类似需求的朋友提供一个解决方案。老规矩,先发一个效果图(内附iOS模块及项目Demo)。

一、两个核心文件内容
APICloudSDK.m

#import "APICloudSDK.h"
#import "NSDictionaryUtils.h"
#import "PayModel.h"
#import "ResultModel.h"
#import "ThridViewController.h"@interface APICloudSDK () {NSUInteger _cbId;
}@end@implementation APICloudSDK- (id)initWithUZWebView:(UZWebView *)webView_ {if (self = [super initWithUZWebView:webView_]) {}return self;
}- (void)dispose {//do clean
}//调起iOS模块方法
- (void)beginPayWithInfo:(NSDictionary *)params {NSLog(@"params = %@", params);_cbId = [params integerValueForKey:@"cbId" defaultValue:0];[PayModel sharedPayInfo].orderNo = params[@"orderNo"];[PayModel sharedPayInfo].transTime = params[@"transtime"];[PayModel sharedPayInfo].totalFee = params[@"totalFee"];[PayModel sharedPayInfo].title = params[@"title"];[PayModel sharedPayInfo].body = params[@"body"];UIViewController *currentVC = [self getCurrentVC];[self startPay:currentVC resultBlock:^(NSDictionary *resultDict) {NSLog(@"resultDict = %@", resultDict);if (_cbId > 0) {[self sendResultEventWithCallbackId:_cbId dataDict:resultDict errDict:nil doDelete:YES];}}];
}- (void)startPay:(UIViewController *)subCotroller resultBlock:(void (^)(NSDictionary * resultDict))introduceResultBlock {[ResultModel sharedInstance].payResultBlock = introduceResultBlock;ThridViewController *thridVC = [[ThridViewController alloc] init];UINavigationController *navVc = [[UINavigationController alloc] initWithRootViewController:thridVC];[subCotroller presentViewController:navVc animated:YES completion:nil];}//获取当前控制器
- (UIViewController *)getCurrentVC {UIViewController *result = nil;UIWindow * window = [[UIApplication sharedApplication] keyWindow];if (window.windowLevel != UIWindowLevelNormal){NSArray *windows = [[UIApplication sharedApplication] windows];for(UIWindow * tmpWin in windows){if (tmpWin.windowLevel == UIWindowLevelNormal){window = tmpWin;break;}}}UIView *frontView = [[window subviews] objectAtIndex:0];id nextResponder = [frontView nextResponder];if ([nextResponder isKindOfClass:[UIViewController class]])result = nextResponder;elseresult = window.rootViewController;return result;
}@end

module.json文件

 {"name":"aPICloudSDK","class":"APICloudSDK","methods":["beginPayWithInfo"],"launchClassMethod":"myLaunch"}

二、iOS模块及使用方法简单说明
1.下载iOS模块及项目Demo
点击下载iOS模块
点击下载相关Demo

2.导入iOS模块

三、其它注意事项
在APICloud新手指南里写了,如果调用微信支付等SDK时在config.xml里做相应配置:比如

<feature name="wxPay">  <param name="urlScheme" value=""/>  <param name="apiKey" value=""/>  <param name="apiSecret" value=""/>
</feature>  

最新版的APICloud已经支持info.plist写入相应配置信息,如果有相应的需求可以在res文件夹下创建info.plist文件:比如我们打开微信App的时候需要做如下配置:

APICloud模拟微信支付调用(非集成微信支付SDK)相关推荐

  1. 成长的NFC移动支付和非接触式支付

    成长的NFC移动支付和非接触式支付 制作使用近场通信(NFC),全部只需要你按下一个按钮来传输数据,具有交易,或有过小的距离连接.它正在对商业世界产生了重大影响,并加快东西.当你正在使用的NFC技术, ...

  2. 微信支付服务器demo,集成微信支付(附带demo)

    首先忽略掉申请AppKey的步骤,直接从集成开始 1.cocopods集成SDK pod 'WechatOpenSDK' 2.添加依赖库 SystemConfiguration.framework, ...

  3. android 微信登陆功能,Android集成微信登录

    现在的项目中几乎都会用到微信登录分享支付之类的,我现在做的这个项目正好用到了微信登录功能,再次记录下我的使用过程: 1.第一步  先去微信开放平台注册账号,填写应用信息,提交审核,大概需要三到五天的时 ...

  4. 企业微信小程序_集成微信小程序插件_地图选点插件

    官网文档: https://lbs.qq.com/miniProgram/plugin/pluginGuide/locationPicker 具体操作参考官网文档即可,讲的很详细

  5. 第三方支付宝支付(非真实金额支付)

    config.php配置 'pay_type' => ['alipay' => ['pay_code'=>'alipay', 'pay_name'=>'支付宝', 'logo' ...

  6. Android集成微信支付

    Android集成微信支付 项目中集成第三方支付的功能,基本是我们app中经常用到的功能.今天先给大家讲一下微信支付的集成过程,重点只说一下代码部分.首先,你要到微信开发者平台注册账号,并创建你的应用 ...

  7. 微信分享调用 -- c#篇

    微信分享调用 -- c#篇 微信分享调用JS -- c#篇   1.前端 1.1 导入微信端的JS 如果你的网址是http,则地址为  http://res.wx.qq.com/open/js/jwe ...

  8. 支付宝,网银在线,快钱 3大支付接口的集成与对比,统合实现

    [支付宝参数设置案例]: t1 = "https://www.alipay.com/cooperate/gateway.do?" t4 = "images/alipay_ ...

  9. Visa和Planeta Informatica开拓新技术,助力全球交通运输运营商实现快速、安全、便捷的非接触式支付

    借助新的Visa安全存取模块,公共交通运营商可在闸机处实现"轻轻一挥"的支付方式,更快速.更轻松.成本更低 交通运输运营商Metro Rio将于4月底率先利用Visa安全存取模块推 ...

最新文章

  1. 显示计算机硬盘驱动器更改,笔记本硬盘驱动器的字母怎么修改?笔记本修改硬盘驱动器字母的方法...
  2. 经典C语言程序100例之四八
  3. MySQL 数据存储文件
  4. spring boot缓存_Spring Boot和缓存抽象
  5. Redis面试 - 哨兵集群实现高可用
  6. Java游戏用户登录注册_Java实现多用户注册登录的幸运抽奖
  7. Java数据库连接池c3p0和druid
  8. 动视服务器状态,《使命召唤12》A.B.C服务器错误不用怕 动视给你支招
  9. 浅析Hibernate映射(三)——继承映射
  10. java访问微信接口发送消息
  11. java 卡密_【java实现点卡生成】
  12. 网吧服务器记录修改,网吧服务器ip地址修改
  13. WPF实现无线扫码枪无焦点自动获取数据并逻辑处理
  14. 三星发布全球首款太阳能笔记本
  15. 程序员能成为自由职业者吗?
  16. 软件看门狗和硬件看门狗
  17. 第七期 OpenOCD配置分析 《路由器就是开发板》
  18. 半定制器件课程设计——基于FPGA的PS2键盘人机输入显示系统
  19. ThinkPHP导入Excel文件到数据库的简单实现
  20. 数学的回忆(二)——麦克斯韦方程

热门文章

  1. 网易云课堂Linux运维在线班英文单词笔记
  2. 【无标题】STM32F767串口空闲中断+DMA实现不定帧长度的接收
  3. 五个男人30年在同一位置拍摄相同合影,岁月不饶人啊
  4. matlab hdf write,matlab读hdf
  5. 用户注册密码加密和后端校验的权衡
  6. 【前端echatrs图表框架】使用echarts实现雷达图
  7. 如何在虚拟机(linux)下运行java程序
  8. 验证ssh免密登录_ssh无密码登录认证失败
  9. 大学生查重网站有哪些
  10. 苏宁易购董事会改选并聘任张近东为名誉董事长;ASSASSINA莎辛那首个香氛沙龙闪现网红玻璃森林 | 知消...