相关教程:微信支付开发流程

一直到设置URL Scheme,均按照步骤进行。下面的内容将作为笔记着重介绍:

注册APPID步骤1~3:

在AppDelegate.m中

1、导入#import "WXApi.h"

2、继承<WXApiDelegate>

3、在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {}
复制代码

中向微信终端注册ID:[WXApi registerApp:@"wx7588a96585cd8751"];

需要注意的是:其中@"wx7588a96585cd8751"为URL Type中的

4、在支付成功之后,支付结果返回,需要获取url,也需要在Appdelegate中完成,代码如下:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{if([url.host isEqualToString:@"pay"]){//处理微信的支付结果[WXApi handleOpenURL:url delegate:self];return YES;}else{// 友盟回调return [self UMapplication:application openURL:url sourceApplication:sourceApplication annotation:annotation];}}- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{//微信if([url.host isEqualToString:@"pay"]){//处理微信的支付结果[WXApi handleOpenURL:url delegate:self];return YES;}else{//友盟return [[UMSocialManager defaultManager] handleOpenURL:url options:options];}}
复制代码

两个方法中都要写,才能适用旧版本和新版本.

5、微信SDK自带的方法,处理从微信客户端完成操作后返回程序之后的回调方法,显示支付结果的:(直接copy过来使用即可)

// 微信显示支付结果
-(void) onResp:(BaseResp*)resp
{//启动微信支付的responseNSString *payResoult = [NSString stringWithFormat:@"errcode:%d", resp.errCode];if([resp isKindOfClass:[PayResp class]]){//支付返回结果,实际支付结果需要去微信服务器端查询switch (resp.errCode) {case 0:payResoult = @"支付结果:成功!";break;case -1:payResoult = @"支付结果:失败!";break;case -2:payResoult = @"用户已经退出支付!";break;default:payResoult = [NSString stringWithFormat:@"支付结果:失败!retcode = %d, retstr = %@", resp.errCode,resp.errStr];break;}}
}
复制代码

6、创建model,内容为后台返回参数,固定格式,但要注意返回参数和微信服务器端返回字段的一一对应,

@property (nonatomic, copy) NSString *appid;
@property (nonatomic, copy) NSString *noncestr;
@property (nonatomic, copy) NSString *packageStr;
@property (nonatomic, copy) NSString *partnerid;
@property (nonatomic, copy) NSString *prepayId;
@property (nonatomic, copy) NSString *sign;
@property (nonatomic, copy) NSString *signType;
@property (nonatomic, copy) NSString *timestamp;
复制代码

7、在调用的控制器中,继承model,创建带参数的支付方法,(带参数是为了将后台返回的参数传给调用微信支付方法),内容也是固定格式的,只是右边的值需要对应修改:

#pragma mark 微信支付方法
- (void)WechatPay:(ABWechatRechargeModel *)model{//需要创建这个支付对象PayReq *req   = [[PayReq alloc] init];//由用户微信号和AppID组成的唯一标识,用于校验微信用户req.openID = model.appid;// 商家id,在注册的时候给的req.partnerId = model.partnerid;// 预支付订单这个是后台跟微信服务器交互后,微信服务器传给你们服务器的,你们服务器再传给你req.prepayId  = model.prepayId;// 根据财付通文档填写的数据和签名req.package  = model.packageStr;// 随机编码,为了防止重复的,在后台生成req.nonceStr  = model.noncestr;// 这个是时间戳,也是在后台生成的,为了验证支付的NSString * stamp = model.timestamp;req.timeStamp = stamp.intValue;// 这个签名也是后台做的req.sign = model.sign;//发送请求到微信,等待微信返回onResp[WXApi sendReq:req];}
复制代码

8、在网络请求方法中,调用微信支付方法,并传返回值:

#pragma mark - request- (void)WechatPay{WS(weakself);NSMutableDictionary *dict = @{}.mutableCopy;[dict setValue:self.topupView.sumTextField.text forKey:@"total"];[LWNetWorkManager requestWithMethod:GET Url:KWeChatRecharge Parameters:dict success:^(id responseObject) {[weakself WechatPay:[ABWechatRechargeModel modelWithJSON:responseObject]];} requestRrror:^(id requestRrror) {}];
}
复制代码

9、在点击方法中调用网络请求方法即可。

iOS初级开发学习笔记:微信充值相关推荐

  1. iOS初级开发学习笔记:APP生命周期的学习总结

    我们平常使用APP时,一般人都会知道有:简单的正在使用状态:通过home键等方式离开应用,但是不关闭应用,即后台状态:以及调出后台程序管理后向上滑动将应用"杀死",三种状态.而我们 ...

  2. iOS之 开发学习笔记-block

    block在oc中是一个比较好用的"代码块"可以用来传递参数,回调等等相对于大工程block要比代理 好的多相信大家也都被工程里繁多的代理弄得晕来晕去. block  --> ...

  3. ios开发学习笔记--Core Motion

    iOS开发学习笔记之CoreMotion-运动传感器 官网文档:CoreMotion Framework Reference 一.     简介 现在的苹果手机都基本有运动传感器,能够过获取到设备的加 ...

  4. IOS开发学习笔记-----UILabel 详解

    IOS开发学习笔记-----UILabel 详解 01 //创建uilabel 02 UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMa ...

  5. IOS开发学习笔记(一)

    概述: iOS是苹果开发的手持设备操作系统(iPhone,iPad,iPod touch,iPad mini). 基于UNIX,层次架构:核心操作系统层(Core OS)-> 核心服务层(Cor ...

  6. 我的苹果开发学习笔记

    好链接: 你的第一个 iOS 应用程序: 100% 的编程方式 http://www.oschina.net/translate/your-first-ios-app-100-programmatic ...

  7. iOS 实战开发课程笔记

    iOS 实战开发课程笔记 本贴旨在作为对极客班 <iOS 开发实战>第五期期课程视频重新学习的笔记. 目标是建立一个比较完整的 iOS 开发知识点框架以及快速手册. 对各个内容的详细研究会 ...

  8. Go语言开发学习笔记(持续更新中)

    Go语言开发学习笔记(持续更新中) 仅供自我学习 更好的文档请选择下方 https://studygolang.com/pkgdoc https://www.topgoer.com/go%E5%9F% ...

  9. iOS App Clips学习笔记

    一.什么是App Clip? App Clip是一个App的轻量版,用来提供一些用户所需功能,我们可以把它看成苹果的小程序.它不需要下载就直接能打开.这样即可达到不下载完整版APP便可体验APP的部分 ...

最新文章

  1. 关于SAP BW提示“Carry out repairs in non-original only
  2. 好消息,MaxtoCode完全支持2005BETA2版,多谢恩电提供的测试样例
  3. Mac 技术篇-设置Finder文件管理显示文件路径
  4. 博士申请 | 北京理工大学张睿恒老师组招收计算机视觉方向硕士/博士生
  5. 分治策略之最大子数组问题
  6. 移动端页面滑动事件穿透问题及其解决方案
  7. 基于bert的语义匹配_构建基于BERT的语义搜索系统…针对“星际迷航”
  8. java 异常处理发生异常_处理Java中的异常
  9. MySql命令行基本操作
  10. git获取本地版本号_Git使用小结
  11. 网络基本概念之TCP, UDP, 单播(Unicast), 多播(组播)(Multicast)
  12. ubuntu 18 安装xgboost GPU版本
  13. 用mapgis数据转成arcgis中shape格式的方法
  14. 二十一世纪大学英语读写教程学习笔记(原文)——2 - Conversational Ballgames(对话风格与球类运动)
  15. 田野调查手记·浮山摩崖石刻(十三)
  16. ipad html阅读器,iPad 超强文档阅读应用(GoodReader)
  17. python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)...
  18. OSChina 周二乱弹 —— 人家BAT出身,专业清洁经验三十年
  19. 【调剂】中国地震局工程力学研究所2021年考研预调剂征集信息
  20. screen 使用方法

热门文章

  1. 龙族幻想微信一区哪个服务器人多,龙族幻想哪个区人最多_龙族幻想哪个区人多一点...
  2. 用计算机弹出thatgirl,抖音thatgirl谐音唱法音译 thatgirl歌词是什么意思中文翻译...
  3. GFS(分布式文件系统)
  4. Deep Learning Trends @ ICLR 2016:深度学习趋势@ICLR2016(译)
  5. Kali-Linux安装驱动并使用Blueman连接蓝牙耳机
  6. 特里回归战世界杯 英足总主席力挺 霍奇森已拒绝
  7. ccf170902-公共钥匙盒
  8. 微信小程序下发消息通知
  9. Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-1.5.0-gcj-4.5/lib/tools.jar 求解
  10. python全栈生鲜电商_Django REST framework+Vue 打造生鲜电商项目(笔记八)