iOS开发之微信支付

来源:互联网 发布:网站源码腾讯 编辑:程序博客网 时间:2024/04/27 20:30

具体支付代码: 
//调起微信支付 
PayReq* req = [[[PayReq alloc] init]autorelease]; 
req.openID = APPI_ID; 
req.partnerId = PARTNER_ID; 
req.prepayId = prePayid; 
req.nonceStr = nonce_str; 
req.timeStamp = now; 
req.package = package; 
req.sign = sign; 
[WXApi safeSendReq:req];

不得不吐槽,微信支付的SDK,这里连个代理都没有,所以,你想获取支付后的结果的返回信息,需要去AppDelegate里,添加如下代码,添加微信的代理:

  • (BOOL)application:(UIApplication )application openURL:(NSURL )url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 

    return [WXApi handleOpenURL:url delegate:self]; 
    }

然后,再实现这个方法:

-(void) onResp:(BaseResp*)resp 

通过这个方法,你就可以获取微信支付后的信息了。但是如果这样,所有的支付代码都在AppDelegate里,不好,至少微信给的例子就是这样。我的方法是添加通知,代码如下:

-(void) onResp:(BaseResp*)resp 

if ([resp isKindOfClass:[PayResp class]]) 

PayResp response = (PayResp )resp;

// NSString *strTitle = [NSString stringWithFormat:@”支付结果”]; 
// NSString *strMsg = [NSString stringWithFormat:@”errcode:%d”, response.errCode]; 
// 
// UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle 
// message:strMsg 
// delegate:self 
// cancelButtonTitle:@”OK” 
// otherButtonTitles:nil, nil]; 
// [alert show];

    switch (response.errCode) {        case WXSuccess: {            NSNotification *notification = [NSNotification notificationWithName:ORDER_PAY_NOTIFICATION object:@"success"];            [[NSNotificationCenter defaultCenter] postNotification:notification];            break;        }        default: {            NSNotification *notification = [NSNotification notificationWithName:ORDER_PAY_NOTIFICATION object:@"fail"];            [[NSNotificationCenter defaultCenter] postNotification:notification];            break;        }    }}

}

然后,在支付那个VC,添加通知

pragma mark - tabBar隐藏

  • (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    if([WXApi isWXAppInstalled]) // 判断 用户是否安装微信 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getOrderPayResult:) name:ORDER_PAY_NOTIFICATION object:nil];//监听一个通知 

    }

pragma mark - tabbar还原

  • (void)viewWillDisappear:(BOOL)animated 

    [super viewWillDisappear:animated]; 
    [[NSNotificationCenter defaultCenter
0 0
原创粉丝点击