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

iOS微信支付集成

作者: feng1991 | 来源:发表于2017-03-03 15:29 被阅读0次

    首先还是要去注册微信开放平台,创建应用获取appid,appSecret,申请支付功能,申请成功之后会返回AppID、微信支付商户号、API秘钥(自己设置即可,注意一定要32位字母加数字的组合)。
    然后,去下载sdk,[微信SDK下载](https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&lang=zh_CN

    C21E7C96-7A21-4764-9A11-DB811FA82647.png )
    下载好后,将SDK包里面的libWeChatSDK.a、WechatAuthSDK.h、WXApi.h、WXApiObject.h这四个拷贝到你的工程里面
    E117B014-487A-4580-8266-04B6EE7A2E15.png
    拷贝后添加所需的依赖库
    SystemConfiguration.framework
    libz.tbd
    libsqlite3.0.tbd
    CoreTelephony.framework
    libc++.tbd
    libsqlite3.0.tbd
    CoreTelephony.framework
    libc++.tbd
    A9C99EA7-2D9F-4CC0-9F4E-2F3EC3C4FC35.png
    依赖库添加完后就是在Info.plist添加下面的字段
    <key>LSApplicationQueriesSchemes</key>
    <array>
    <string>weixin</string>
    </array>
    <key>NSAppTransportSecurity</key>
    <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    </dict>
    4F5A6B7B-2ED1-4CA3-B798-80A2E87F48FE.png
    字段添加完就在Build Settings里面找到Other Linker Flags 加入-Objc -all_load
    76D51D1B-A718-49E5-BB53-08B3CA636A0E.png
    最后,因为要应用跳转,所以进入Info里面的URL Types将APPID添加到里面
    485CB036-FC44-4B81-A333-1471BEE08D6A.png
    这些都弄完以后进入工程里面,在AppDelegate.m导入#import "WXApi.h",导入后进行注册
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        [WXApi registerApp:@"wx930fde9f97d60569"];//@"wx930fde9f97d60569"是APPID
    
        return YES;
    }
    

    再在AppDelegate.m里面遵守<WXApiDelegate>协议

    4E765D26-AC49-4AA8-B732-DEB6A394D85B.png

    遵守协议后在AppDelegate.m里面添加下面的代码

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
    {
        /*! @brief 处理微信通过URL启动App时传递的数据
         *
         * 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL中调用。
         * @param url 微信启动第三方应用时传递过来的URL
         * @param delegate  WXApiDelegate对象,用来接收微信触发的消息。
         * @return 成功返回YES,失败返回NO。
         */
        return [WXApi handleOpenURL:url delegate:self];
    }
    /*! @brief 发送一个sendReq后,收到微信的回应
     *
     * 收到一个来自微信的处理结果。调用一次sendReq后会收到onResp。
     * 可能收到的处理结果有SendMessageToWXResp、SendAuthResp等。
     * @param resp具体的回应内容,是自动释放的
     */
    - (void)onResp:(BaseResp *)resp
    {
        //支付返回结果,实际支付结果需要去微信服务器端查询
        NSString *strMsg = [NSString stringWithFormat:@"支付结果"];
        switch (resp.errCode) {
            case WXSuccess:
                strMsg = @"支付结果:成功!";
                NSLog(@"支付成功-PaySuccess,retcode = %d", resp.errCode);
                break;
            default:
                strMsg = [NSString stringWithFormat:@"支付结果:失败!retcode = %d, retstr = %@", resp.errCode,resp.errStr];
                NSLog(@"错误,retcode = %d, retstr = %@", resp.errCode,resp.errStr);
                break;
        }
    }
    

    再到要实现支付的ViewController.m里面导入#import "WXApi.h",我是点击微信支付按钮跳转到支付页面,在按钮的点击事件里面添加下面的代码

    PayReq *request = [[PayReq alloc] init];
        /** 商家向财付通申请的商家id */
        request.partnerId = @"10000100";
        /** 预支付订单 */
        request.prepayId= @"1101000000140415649af9fc314aa427";
        /** 商家根据财付通文档填写的数据和签名 */
        request.package = @"Sign=WXPay";
        /** 随机串,防重发 */
        request.nonceStr= @"a462b76e7436e98e0ed6e13c64b4fd1c";
        /** 时间戳,防重发 */
        request.timeStamp= 1397527777;
        /** 商家根据微信开放平台文档对数据做的签名 */
        request.sign= @"582282D72DD2B03AD892830965F428CB16E7A256";
        /*! @brief 发送请求到微信,等待微信返回onResp
         *
         * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持以下类型
         * SendAuthReq、SendMessageToWXReq、PayReq等。
         * @param req 具体的发送请求,在调用函数后,请自己释放。
         * @return 成功返回YES,失败返回NO。
         */
        [WXApi sendReq: request];
    

    相关文章

      网友评论

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

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