iOS微信支付集成

首先还是要去注册微信开放平台,创建应用获取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

iOS微信支付集成_第1张图片
C21E7C96-7A21-4764-9A11-DB811FA82647.png
)
下载好后,将SDK包里面的libWeChatSDK.a、WechatAuthSDK.h、WXApi.h、WXApiObject.h这四个拷贝到你的工程里面
iOS微信支付集成_第2张图片
E117B014-487A-4580-8266-04B6EE7A2E15.png

拷贝后添加所需的依赖库
SystemConfiguration.framework
libz.tbd
libsqlite3.0.tbd
CoreTelephony.framework
libc++.tbd
libsqlite3.0.tbd
CoreTelephony.framework
libc++.tbd
iOS微信支付集成_第3张图片
A9C99EA7-2D9F-4CC0-9F4E-2F3EC3C4FC35.png

依赖库添加完后就是在Info.plist添加下面的字段
LSApplicationQueriesSchemes

weixin

NSAppTransportSecurity

NSAllowsArbitraryLoads


iOS微信支付集成_第4张图片
4F5A6B7B-2ED1-4CA3-B798-80A2E87F48FE.png

字段添加完就在Build Settings里面找到Other Linker Flags 加入-Objc -all_load
iOS微信支付集成_第5张图片
76D51D1B-A718-49E5-BB53-08B3CA636A0E.png

最后,因为要应用跳转,所以进入Info里面的URL Types将APPID添加到里面
iOS微信支付集成_第6张图片
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里面遵守协议

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

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

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)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微信支付集成)