iOS开发(OC)——微信支付

1、首先在微信开放平台上创建应用,并按照开放平台上的步骤把SDK接入,配置环境(这些步骤微信开放平台写的很清楚,下面我主要写一些开放平台没有,或者需要注意的地方)
2、导入头文件#import "WXApi.h"(如果报错,则是缺少某些类库或者静态库和头文件路径没有设置好,请仔细查看并按照开放平台的步骤检查
3、注册

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [WXApi registerApp:@"此处是你在微信开放平台上创建的app的appid"];
}

4、iOS 8.0以下重写下面两个方法

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
    if([url.scheme isEqualToString:@"此处是上面开放平台步骤中的URL scheme的值"]){
        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:@"此处是上面开放平台步骤中的URL scheme的值"]){
        return [WXApi handleOpenURL:url delegate:self];
    }
    return YES;
}

5、iOS 9.0以上实现下面的方法(也就是说,如果app要兼容iOS 8.0以上,则步骤4的两个方法和这个方法都要实现)

//iOS9.0以上使用
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options {
    if ([url.scheme isEqualToString:@"URL scheme 的值"]) {
        return [WXApi handleOpenURL:url delegate:self];
    }
    return YES;
}

6、微信代理方法的实现

//发起支付请求回调
-(void)onReq:(BaseReq *)req{
    
}
//支付结果回调
-(void)onResp:(BaseResp *)resp{
    if ([resp isKindOfClass:[PayResp class]]){
        PayResp *response = (PayResp*)resp;
        //response.errCode
//        WXSuccess           = 0,    /**< 成功    */
//        WXErrCodeCommon     = -1,   /**< 普通错误类型    */
//        WXErrCodeUserCancel = -2,   /**< 用户点击取消并返回    */
//        WXErrCodeSentFail   = -3,   /**< 发送失败    */
//        WXErrCodeAuthDeny   = -4,   /**< 授权失败    */
//        WXErrCodeUnsupport  = -5,   /**< 微信不支持    */
    }
}

7、发起支付

//下面几个参数由后台返回,移动端不做处理
PayReq *request = [[PayReq alloc] init];
request.partnerId = sign[@"partnerid"];
request.prepayId= sign[@"prepayid"];
request.package = sign[@"package"];
request.nonceStr= sign[@"noncestr"];
request.timeStamp= [sign[@"timestamp"] intValue];
request.sign= sign[@"sign"];
[WXApi sendReq:request];

注意:为了支付完成后能成功返回app,需要在info.plist文件中设置URL scheme,并且这个值是唯一的(最好填写bundel id 或者开放平台上的app ID),详细步骤在微信开放平台的接入文档有

原文地址:https://blog.csdn.net/liumude123/article/details/82592129?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-11&spm=1001.2101.3001.4242

你可能感兴趣的:(iOS开发(OC)——微信支付)