1、微信支付

1)准备

通过cocoapods安装:

#微信支付
pod 'WechatOpenSDK', '~> 1.8.1’

在微信开放平台注册应用,获取APPKey

在plist文件中添加白名单,见文章末尾

在Info中添加URL Types,URL Schemes 为appkey

2)在APPDelegate中导入头文件

#import <WXApi.h>
#import <WXApiObject.h>

遵守协议<WXApiDelegate>

注册微信支付

// 注册微信支付
[WXApi registerApp:kAppKey_Wechat];

3)iOS9之后重写以下方法:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
// 用于极光分享,可以忽略BOOL result = [JSHAREService handleOpenUrl:url];//6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响//    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url options:options];if (!result) {// 其他如支付等SDK的回调if ([url.host isEqualToString:@"safepay"]) {//跳转支付宝钱包进行支付,处理支付结果[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {NSLog(@"result = %@",resultDic);if ([resultDic[@"resultStatus"] isEqualToString:@"9000"]) {[SVProgressHUD showSuccessWithStatus:@"支付成功"];} else {}}];return YES;} else if ([url.scheme isEqualToString:kAppKey_Wechat] && [url.host isEqualToString:@"pay"]) {return  [WXApi handleOpenURL:url delegate:self];}return result;
}

4)实现微信支付代理方法:

#pragma mark - WXApiDelegate
-(void) onReq:(BaseReq*)req {DLog(@"---=-=-=-=-==");
}-(void)onResp:(BaseResp *)resp {if ([resp isKindOfClass:[PayResp class]]) {PayResp * response = (PayResp *)resp;  // 微信终端返回给第三方的关于支付结果的结构体switch (response.errCode) {case WXSuccess:{// 支付成功,向后台发送消息DLog(@"支付成功");[SVProgressHUD showSuccessWithStatus:@"支付成功"];}break;case WXErrCodeCommon:{ //签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等DLog(@"支付失败");}break;case WXErrCodeUserCancel:{ //用户点击取消并返回DLog(@"取消支付");kPostNotificationWithName(@"userCanclePay");}break;case WXErrCodeSentFail:{ //发送失败DLog(@"发送失败");}break;case WXErrCodeUnsupport:{ //微信不支持DLog(@"微信不支持");}break;case WXErrCodeAuthDeny:{ //授权失败DLog(@"授权失败");}break;default:break;}}
}

5)在支付页导入头文件,通过接口获取微信支付的参数,并赋值给消息结构体:PayReq

if ([WXApi isWXAppInstalled]) {NSDictionary * msgDic = result[@"wxPayInfo"];PayReq *req   = [[PayReq alloc] init];req.openID = kAppKey_Wechat;req.partnerId = msgDic[@"partnerid"];req.prepayId  = msgDic[@"prepayid"];req.package  = msgDic[@"package"];req.nonceStr  = msgDic[@"noncestr"];NSString * stamp = msgDic[@"timestamp"];req.timeStamp = stamp.intValue;req.sign = msgDic[@"sign"];if ([WXApi sendReq:req]) {DLog(@"吊起成功");} else {DLog(@"吊起失败");}} else {[SVProgressHUD showInfoWithStatus:@"该手机没有安装微信"];}

2、支付宝支付

1)准备

导入AlipaySDK

在蚂蚁金服开放平台注册应用,获取APPKey

在Info中添加URL Types,URL Schemes 为自己书写,保证唯一

导入依赖库:

依赖库1

其中,需要注意的是:

  • 如果是Xcode 7.0之后的版本,需要添加libc++.tbd、libz.tbd;
  • 如果是Xcode 7.0之前的版本,需要添加libc++.dylib、libz.dylib(如下图)。

依赖库2

在APPDelegate中导入头文件

#import <AlipaySDK/AlipaySDK.h>

2)重写openURL方法,见上文微信支付第4步

3)在支付页通过接口获取支付宝支付的参数,然后调用支付宝接口

// 注意,这里的Scheme参数就是Info中URL Types中填写的URL Schemes
NSString * msgStr = result[@"aliData"];
[[AlipaySDK defaultService] payOrder:msgStr fromScheme:@"alipayforlantingzhibo" callback:^(NSDictionary *resultDic) {NSLog(@"reslut = %@",resultDic);if ([resultDic[@"resultStatus"] isEqualToString:@"9000"]) {[SVProgressHUD showSuccessWithStatus:@"支付成功"];} else {}}];

附:白名单:(部分)

<key>LSApplicationQueriesSchemes</key>
<array>
<string>wechat</string>
<string>weixin</string>
<string>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string>
<string>mqqapi</string>
<string>mqq</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqconnect</string>
<string>mqqopensdkdataline</string>
<string>mqqopensdkgrouptribeshare</string>
<string>mqqopensdkfriend</string>
<string>mqqopensdkapi</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV3</string>
<string>mqqopensdkapiV4</string>
<string>mqzoneopensdk</string>
<string>wtloginmqq</string>
<string>wtloginmqq2</string>
<string>mqqwpa</string>
<string>mqzone</string>
<string>mqzonev2</string>
<string>mqzoneshare</string>
<string>wtloginqzone</string>
<string>mqzonewx</string>
<string>mqzoneopensdkapiV2</string>
<string>mqzoneopensdkapi19</string>
<string>mqzoneopensdkapi</string>
<string>mqqbrowser</string>
<string>mttbrowser</string>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>twitter</string>
<string>twitterauth</string>
<string>JChatPro</string>
</array>

iOS 微信支付和支付宝支付相关推荐

  1. IOS集成微信支付或者支付宝支付功能小结

    2019独角兽企业重金招聘Python工程师标准>>> 第一,你需要有微信开发平台的开发者账号,(网址https://open.weixin.qq.com/,或者自行百度" ...

  2. Vue app安卓端移动端实现微信支付和支付宝支付

    当前项目借助调用安卓和ios方法跳转第三方支付平台实现微信支付和支付宝支付  涉及到的安卓方法: window.AndroidFunction.wxpay('传递的参数') // 点击确认支付hand ...

  3. 个人开发者微信支付和支付宝支付

    个人开发者是不能申请微信支付和支付宝支付的 很多第三方使用添加二维码监听转账操作来实现是否功能

  4. 腾腾流氓,云云更流氓(问微信怎样接入支付宝支付),手贱的赶紧点,你会感谢我的...

    草原上的两匹马! 打从当年微信开始布局公众号之初时,估计就已经想到了与支付宝正面冲突的场面,所以微信先来个瞒天过海,在春晚搞了个微信红包,那叫一个火呀,此时的云云隐隐感觉到些许不安. 早期的微信开发者 ...

  5. 个人开发者只要一行代码接入微信支付和支付宝支付

    接入支付功能   对于个人开发者来说,我们很希望我们开发的App被广泛使用,同时可以获得一些额外收入,那就更好了.但是在微信开放平台或者支付宝开放平台申请支付功能,需要是企业才可以接入,对于我们个人开 ...

  6. 微信支付及支付宝支付开发指南

    从开始学习android开始到现在还没搞过三方支付,感觉挺遗憾的.看到最近有几篇关于微信支付和支付宝支付的文章,稍微进行一下整合,供大家参考. ---------------------------- ...

  7. 微信支付和支付宝支付整合(含设计模式1)

    微信支付和支付宝支付整合(含设计模式1) 1.说明: 设计模式:单例+策略模式+抽象 在开发中经常对接微信支付和支付宝支付,相对来说,阿里的文档比微信的接口文档清晰一点,这里用的第三方库(com.gi ...

  8. 关于微信支付,支付宝支付

    关于微信支付,支付宝支付 微信支付和支付宝支付属于第三方支付. 第三方支付是指具备一定实力和信誉保障的独立机构,通过与网联对接而促成交易双方进行交易的网络支付模式. 在第三方支付模式,买方选购商品后, ...

  9. php做微信支付和支付宝支付的方法

    php做微信支付和支付宝支付的方法 直接去官方下载demo 然后证书换一下 appid换下 就好了 如果测试成功 直接复制到项目中即可 这个方法目前是最好 最稳定的方法 查看原文:http://new ...

最新文章

  1. Django web框架-----Django连接现有mysql数据库
  2. 物流机器人站上风口!未来市场增长获双引擎加持
  3. boost::python::ndarray相关的测试程序
  4. 大话 JavaScript 动画
  5. iOS开发--AVFoundation自定义相机
  6. 使用fastcgi_cache加速Nginx
  7. java方面的文献综述怎么写_关于java的文献综述
  8. 基坑计算理论m法弹性支点法_建筑基坑支护考题汇总.doc
  9. Science观点:不同细菌物种间极少合作—合理利用细菌间普遍存在的竞争关系来替代抗生素...
  10. How browsers work----Introduction
  11. BP神经网络的初步介绍
  12. 进程间通讯(IPC)(有信号捕捉函数)
  13. PHP--extract 从数组中将变量导入到当前的符号表
  14. 【Power Automate】日期格式化函数formatDateTime详细说明及示例
  15. 【论文写作】LaTeX学习笔记:一文入门LaTeX(超详细)
  16. 双绞线绞合消除电磁干扰原理
  17. JS对象中添加新的属性及修改字段名
  18. vscode保存卡顿,显示正在从“‘Vetur‘, ‘ESLint‘”获取代码操作([配置]
  19. 动易安全开发手册 完整版
  20. Qt 加载了qm文件翻译无效的bug的分享

热门文章

  1. 解决:whm搬站出现的mysql error message:Can't find any matching row in the user table
  2. 运动的“点”与“线”,竟然能产生错觉???
  3. 【转】BCWS、BCWP、ACWP的理解
  4. Mysql启动时pid未更新_MySQL启动报错 无法更新PID文件
  5. 计算机慢怎么解决6,解决电脑运行慢卡顿问题的六种方法
  6. HttpWebRequest 无法连接到远程服务器
  7. Linux信号量(3)-内核信号量
  8. spacy语言模型安装踩坑经历
  9. Lake Counting S
  10. snipaste滚动截图方法_老板让你把整个网页截图形成长图,具体怎么做?