原文链接: http://blog.youkuaiyun.com/yidu_blog/article/details/51453496
1. 导入微信包
2.添加微信依赖的库
3.MRC的文件修改成ARC
方法:找到文件 -fno-objc-arc 添加这句话
要修改的有2个文件 一个是 pay..... 一个是 apiXml...
改好直接 command + B 编译一下。 成功往下进行
4.在appdelegate里面引入头文件,和协议
#import "payRequsestHandler.h"
#import <QuartzCore/QuartzCore.h>
还有这两个
[WXApiregisterApp:APP_IDwithDescription:@"demo 2.0"];
添加方法
6.回调方法
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
//weixin
NSUserDefaults *userDefaults = [[NSUserDefaultsalloc]init];
NSString *ispay = [userDefaultsobjectForKey:@"ispaying"];
if ([ispay isEqualToString:@"weixinpay"]) {
[userDefaults setObject:@""forKey:@"ispaying"];
return [WXApihandleOpenURL:url delegate:self];
}
return YES;
}
7.支付结果回调
//微信支付结果回调
-(void) onResp:(BaseResp *)resp{
NSString *strMsg = [NSStringstringWithFormat:@"errcode:%d", resp.errCode];
NSString *strTitle;
if([respisKindOfClass:[SendMessageToWXRespclass]])
{
strTitle = [NSStringstringWithFormat:@"发送媒体消息结果"];
}
if([respisKindOfClass:[PayRespclass]]){
//支付返回结果,实际支付结果需要去微信服务器端查询
strTitle = [NSStringstringWithFormat:@"支付结果"];
switch (resp.errCode) {
caseWXSuccess:
strMsg = @"支付结果:成功!";
NSLog(@"支付成功-PaySuccess,retcode = %d", resp.errCode);
break;
default:
strMsg = @"支付结果:失败!";
NSLog(@"错误,retcode = %d, retstr = %@", resp.errCode,resp.errStr);
break;
}
}
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:strTitlemessage:strMsg delegate:selfcancelButtonTitle:@"OK"otherButtonTitles:nil,nil];
[alert show];
}
8。接下来设置回调URL schemes 这个大家应该都会设置 不会的参考上一篇支付宝篇
9.支付方法
#pragma mark --------------- 微信支付 ---------------
-(void)payByWechatWithConut:(NSInteger)conut Message:(NSString *)message{
payRequsestHandler *req = [payRequsestHandleralloc];
[req init:APP_IDmch_id:MCH_ID];
[req setKey:PARTNER_ID];
NSMutableDictionary *dict = [reqsendPay_demoWithPrice:[NSStringstringWithFormat:@"%ld", (long)conut]andName:message];
NSLog(@"-------dict--%@",dict);
if(dict == nil){
NSString *debug = [reqgetDebugifo];
}else{
NSMutableString *stamp = [dictobjectForKey:@"timestamp"];
PayReq* req = [[PayReqalloc] init];
req.openID = [dictobjectForKey:@"appid"];
req.partnerId = [dictobjectForKey:@"partnerid"];
req.prepayId = [dictobjectForKey:@"prepayid"];
req.nonceStr = [dictobjectForKey:@"noncestr"];
req.timeStamp = stamp.intValue;
req.package = [dictobjectForKey:@"package"];
req.sign = [dictobjectForKey:@"sign"];
[WXApi sendReq:req];
}
NSUserDefaults *userDefaults = [[NSUserDefaultsalloc]init];
[userDefaults setObject:@"weixinpay"forKey:@"ispaying"];
}
//微信的信息回调 ----支付结果回调在appdelegate
-(void) onReq:(BaseReq *)req{
if([req isKindOfClass:[GetMessageFromWXReqclass]]){
NSString *strTitle = [NSStringstringWithFormat:@"微信请求App提供内容"];
NSString *strMsg =@"微信请求App提供内容,App要调用sendResp:GetMessageFromWXResp返回给微信";
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:strTitlemessage:strMsg delegate:selfcancelButtonTitle:@"OK"otherButtonTitles:nil,nil];
alert.tag = 1000;
[alert show];
}else if([reqisKindOfClass:[ShowMessageFromWXReqclass]]){
ShowMessageFromWXReq* temp = (ShowMessageFromWXReq*)req;
WXMediaMessage *msg = temp.message;
WXAppExtendObject *obj = msg.mediaObject;
NSString *strTitle = [NSStringstringWithFormat:@"微信请求App显示内容"];
NSString *strMsg = [NSStringstringWithFormat:@"标题:%@ \n内容:%@ \n附带信息:%@ \n缩略图:%lu bytes\n\n", msg.title, msg.description, obj.extInfo, (unsignedlong)msg.thumbData.length];
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:strTitlemessage:strMsg delegate:selfcancelButtonTitle:@"OK"otherButtonTitles:nil,nil];
[alert show];
}else if([reqisKindOfClass:[LaunchFromWXReqclass]]){
NSString *strTitle = [NSStringstringWithFormat:@"从微信启动"];
NSString *strMsg =@"这是从微信启动的消息";
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:strTitlemessage:strMsg delegate:selfcancelButtonTitle:@"OK"otherButtonTitles:nil,nil];
[alert show];
}
}
我在原方法上添加了一点修改。 直接复制就OK 记得导头文件
//wepay
#import "payRequsestHandler.h"
#import <QuartzCore/QuartzCore.h>
#import "WXUtil.h"
#import "ApiXml.h"
#import "WXApi.h"
10.到这里就结束了 !!