美文网首页
iOS 集成微信支付

iOS 集成微信支付

作者: 善良的karl | 来源:发表于2019-06-13 23:37 被阅读0次

    这次是一个新项目,集成支付宝和微信支付,在上一篇中,记录了一下集成支付宝支付时的一些坑,不过集成微信时要顺利得多。微信支付客户端的代码量稍微多一些,不过也是非常简单的。

    首先我碰到了一个问题,不知道大家有没有碰到过,就是使用cocopods导入的时候,友盟的微信分享库与微信官方库冲突的问题。最开始友盟微信分享我是集成了完整版的,再通过pod 'WechatOpenSDK'导入的时候,就发现库文件冲突了,然而不导入这个的时候呢,微信支付的PayReq好像这个类又找不到。最后我试着把微信友盟分享完整版,改成了友盟微信分享精简版,没想到,这个冲突问题就解决了。
    集成步骤

    1、使用cocopods导入微信的sdk库

    pod 'WechatOpenSDK'
    

    安装好之后运行一下,看有没有冲突。
    2、在需要使用的地方导入头文件

    #import <WXApi.h>
    

    3、在AppDelegate.m中注册微信服务

    //向微信注册
    [WXApi registerApp:WeChatKey];
    //WeChatKey 您在申请微信支付时的appkey
    

    4、在info.plist中的“URL Types”选项中,点击“+”,在“URL Schemes”中输入“您申请的微信appkey”,方便回调。

    5、在向服务端创建好支付订单之后,服务端会返回客户端调起微信支付时所需的参数,然后创建请求参数,向微信发起支付请求即可。

    //dict的内容为服务端返回给客户端
    PayReq* req = [[PayReq alloc] init];
    req.partnerId   = dict[@"partnerid"];
    req.prepayId    = dict[@"prepayid"];
    req.nonceStr    = dict[@"noncestr"];
    req.timeStamp   = [dict[@"timestamp"] doubleValue];
    req.package     = dict[@"package"];
    req.sign = dict[@"sign"];
    [WXApi sendReq:req];
    

    6、处理支付结果回调

    // NOTE: 9.0以后使用新API接口
    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
    {
       if ([url.host isEqualToString:@"pay"]){ //微信支付的回调
            NSString *result = [url absoluteString];
            NSLog(@"微信------%@",result);
            NSArray *array = [result componentsSeparatedByString:@"="];
            NSString *resultNumber = [array lastObject];
            NSLog(@"微信------%@",resultNumber);
            if ([resultNumber integerValue] == 0){ //成功
                //发送支付成功的通知
                [[NSNotificationCenter defaultCenter] postNotificationName:NoticePaySuccess object:nil];
            }else if ([resultNumber integerValue] == -1) { //错误
                //发送支付失败的通知
                [[NSNotificationCenter defaultCenter] postNotificationName:NoticePayFailure object:nil];
            }else if ([resultNumber integerValue] == -2){ //用户取消
                //发送支付取消的通知
                [[NSNotificationCenter defaultCenter] postNotificationName:NoticePayCancel object:nil];
            }
        }
        return YES;
    }
    

    结束。

    相关文章

      网友评论

          本文标题:iOS 集成微信支付

          本文链接:https://www.haomeiwen.com/subject/tlcyfctx.html