2018-01-18微信支付

首先去微信开放平台下载微信SDK,导入到工程中。

点击工程,info下面的最后一项,URL Types ,在identifier后面写上weixin,在URL Schemes后面写上你的APPID。

1,在AppDelegate.m里面导入

#import "WXApi.h"

2,在AppDelegate.m中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   //注册微信
[WXApi registerApp:@"你的APPID"];

}

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options
{
 //处理微信支付的结果
if ([url.host isEqualToString:@"pay"]){
      
            [WXApi handleOpenURL:url delegate:self];
    
    }
    return YES;
}

//微信SDK自带的方法,处理从微信客户端完成操作后返回程序之后的回调方法,显示支付结果的
-(void) onResp:(BaseResp*)resp
{
    //启动微信支付的response
    NSString *payResoult = [NSString stringWithFormat:@"errcode:%d", resp.errCode];
    if([resp isKindOfClass:[PayResp class]]){
        //支付返回结果,实际支付结果需要去微信服务器端查询
        switch (resp.errCode) {
            case 0:
                payResoult = @"支付结果:成功!";
                NSLog(@"支付结果:成功!");
                break;
            case -1:
                payResoult = @"支付结果:失败!";
                NSLog(@"支付结果:失败!");
                break;
            case -2:
                payResoult = @"用户已经退出支付!";
                NSLog(@"用户已经退出支付!");
                break;
            default:
                payResoult = [NSString stringWithFormat:@"支付结果:失败!retcode = %d, retstr = %@", resp.errCode,resp.errStr];
                break;
        }
        //发出通知
        NSNotification * notification = [NSNotification notificationWithName:@"WXPay" object:payResoult];
        [[NSNotificationCenter defaultCenter] postNotification:notification];
    }
}

3.在要调用支付的类里面,我用的这些数据是后台给的,所以直接从后台返回的字典中取就好。

             {
                NSDictionary *url = [responseObject objectForKey:@"url"];
                PayReq *request = [[PayReq alloc]init];
                request.partnerId = [url objectForKey:@"mch_id"];
                request.prepayId = [url objectForKey:@"prepay_id"];
                request.package = [url objectForKey:@"wxpackage"];
                request.nonceStr = [url objectForKey:@"nonce_str"];
                request.timeStamp = [[url objectForKey:@"timestamp"] intValue];
                request.sign = [url objectForKey:@"sign"];
                [WXApi sendReq: request];
            }
//最后看看是不是支付成功。支付成功之后干什么。
-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:YES];
    //检测是否装了微信软件
    if ([WXApi isWXAppInstalled])
    {
        //监听通知
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getOrderPayResult:) name:@"WXPay" object:nil];
    }
}

- (void)getOrderPayResult:(NSNotification *)notification
{
    NSLog(@"userInfo: %@",notification.userInfo);

    if ([notification.object isEqualToString:@"支付结果:成功!"])
    {
        //我这边是支付成功之后返回到钱包界面
        if (self.block) {
        self.block(self.rechargMoney);
        }
       [self goBack];
    }
    else if([notification.object isEqualToString:@"用户已经退出支付!"])
    {
        [self mbShowToast:@"支付取消"];

    }
    else
    {
       [self mbShowToast:@"支付失败"];
    }
}

-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:YES];
    [[NSNotificationCenter defaultCenter]removeObserver:self];
    [self mbDismiss];
}

刚开始都是小白,慢慢的摸索,你认为难的,总有一天你会觉得不算什么。

你可能感兴趣的:(2018-01-18微信支付)