简述集成微信支付

原文链接: 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>

还有这两个


5. //向微信注册

    [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(@"支付成功-PaySuccessretcode = %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.到这里就结束了 !!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值