iOS之微信支付开发

来源:互联网 发布:btx主板知乎 编辑:程序博客网 时间:2024/05/07 15:53
因为项目需求,支付方式添加了微信支付。之前做过银联的支付,所以,感觉不会太难。使用的SDK为1.7.是13年12月份的,还是手动管理内存。实际支付的代码不难,就是几个配置,因为项目之前做过微信分享,所以配置这步就省略了。具体支付代码:
//调起微信支付            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]removeObserver:self];//移除通知}

相关参数的获取,从我们自己的服务器获取

参考自:http://blog.csdn.net/sky_2016/article/details/39735637

2 0
原创粉丝点击