1. 去微信开放平台注册app key ,获取相应的app key 创建应用
2. 在工程中导入weixinsdk
3. 添加相关依赖库
CoreTelephony.framework
SystemConfiguration.framework
libz.tbd
libsqlite3.0.tbd
libc++.tbd
4.配置文件的添加
Info.plist:
添加URL types
Item 0:
Document Role Editor
URL identifier weichat
URL Schemes
Itime 0. XXXXXXXX(开放平台申请的到的key值)
5.去工程中的Info中修改URL Types如图,将申请的到的key值填在相应的位置
6. 进入AppDelegate.m的application: didFinishLaunchingWithOptions: 方法进行微信支付的初始化设置
(1). 首先要导入
(2). 在代码中注册微信支付:[WXApi registerApp:(申请的id)]
(3). WXApi.h中是微信支付api所暴露的使用方法:
- (void)registerApp:(NSString *)appid; //将申请的appkey注册到微信中去
+ (BOOL)isWXAppInstalled; //检测是否安装微信客户端
+ (BOOL)sendReq:(BaseReq *)req; //发送请求到微信等待微信返回onResp
+ (BOOL)sendAuthReq:(SendAuthReq *)req viewController:(UIViewController *)viewController delegate:(id )delegate; // 发送授权到微信,等待微信返回onResp
支付时方法调用:
PayReq:第三方向微信终端发起支付的消息体结构,将自己的订单信息赋值给PayReq对应的属性再进行支付
partnerId: 商家向财付通申请的商家id
prepayId: 预支付订单
nonceStr: 随机串,防重发
timeStamp:时间戳
package: 商家根据财付通文档天蝎的数据和签名
sign: 商家根据微信开放平台文档对数据做的签名
7.支付回调
支付回调SenAuthResp:微信处理完认证和权限之后返回的结果
- (void)onResp:(BaseResp *)resp
{
//向微信请求授权后得到的响应
if([rep isKindOfClass:[SenAuthResp class]] && rep.errCode == 0)
{
//微信支付 url: wx_base_url = @"https://api.weixin.qq.com/sns"
SenAuthResp *temp = (SenAuthResp *)rep;
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/html",@"text/json",@"text/javascript",@"text/plain",@"image/jpeg",@"application/x-png",nil];
NSString *accessUrlStr = [NSString stringWithFormat:@"%@/oauth2/accsee_token?appid=%@%secret=%@&code=%@&grant_type=authorization_code",wx_base_url,申请的id, key,temp,code];
}
}