美文网首页
iOS 微信支付

iOS 微信支付

作者: 静静ZZ | 来源:发表于2017-08-17 14:12 被阅读0次

    步骤 1 下载微信终端SDK文件
    SDK文件包括 libWeChatSDK.a,WXApi.h,WXApiObject.h

    SDK

    https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&lang=zh_CN
    步骤 2 添加依赖库
    微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和活跃情况。开发者需要在工程中链接上:SystemConfiguration.framework, libz.dylib, libsqlite3.0.dylib, libc++.dylib, Security.framework, CoreTelephony.framework, CFNetwork.framework

    依赖库
    步骤 3 在你的工程文件中选择Build Setting,在"Other Linker Flags"中加入"-Objc -all_load",在Search Paths中添加 libWeChatSDK.a ,WXApi.h,WXApiObject.h,文件所在位置(如下图所示)

    步骤 4 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id(如下图所示)。

    URL type

    步骤 5 在你需要使 用微信终端API的文件中import WXApi.h 头文件,并增加 WXApiDelegate 协议。

    import "WXApi.h"

    AppDelegate

    步骤 6 在代码中使用开发工具包
    [1] 要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的id。(如下图所示,在 AppDelegate 的 didFinishLaunchingWithOptions 函数中向微信注册id)。

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        //微信注册
        [WXApi registerApp:WXAPPID];
        return YES;
    }
    

    [2] 重写AppDelegate的handleOpenURL和openURL方法:

    -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
        
        if ([url.scheme isEqualToString:WXAPPID]){
            return  [WXApi handleOpenURL:url delegate:self];
        }
        return YES;
    }
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
        if ([url.scheme isEqualToString:WXAPPID]){
            return  [WXApi handleOpenURL:url delegate:self];
        }
        return YES;
    }
    

    [3] 如果你的程序要发消息给微信,那么需要调用WXApi的sendReq函数

    //从服务器请求到的数据
    PayReq* req             = [[PayReq alloc] init];
    req.openID              = [[responseObject objectForKey:@"response"] objectForKey:@"appid"];                //应用ID
    req.partnerId           = [[responseObject objectForKey:@"response"] objectForKey:@"partnerid"];            //商户号
    req.prepayId            = [[responseObject objectForKey:@"response"] objectForKey:@"prepayid"];             //预支付交易会话ID
    req.nonceStr            = [[responseObject objectForKey:@"response"] objectForKey:@"noncestr"];             //随机字符串
    req.timeStamp           = [[[responseObject objectForKey:@"response"] objectForKey:@"timestamp"] intValue]; //时间戳
    req.package             = [[responseObject objectForKey:@"response"] objectForKey:@"package"];              //扩展字段
    req.sign                = [[responseObject objectForKey:@"response"] objectForKey:@"sign"];                 //签名
    [WXApi sendReq:req];
    

    [4]现在,你的程序要实现和微信终端交互的具体请求与回应,因此需要实现WXApiDelegate协议的两个方法:

    -(void) onReq:(BaseReq*)req
    onReq是微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用sendRsp返回。在调用sendRsp返回时,会切回到微信终端程序界面。
    -(void) onResp:(BaseResp*)resp
    如果第三方程序向微信发送了sendReq的请求,那么onResp会被回调。sendReq请求调用后,会切到微信终端程序界面。
    

    相关文章

      网友评论

          本文标题:iOS 微信支付

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