微信支付

微信支付

首先还是要下载好SDK,导入相关库,配置好一些环境,接着就开始做支付


服务器签名版

首先在AppDelegate.m里面注册微信的key

[WXApi registerApp:@"appkey" withDescription:@"wxdemo"];

然后处理微信的跳转,记得配置好url schemes

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    if ([url.host isEqualToString:@"pay"]) {
        [WXApi handleOpenURL:url delegate:self];
        
        return YES;
    }
}


然后在点击微信支付按钮里这样写(以下用到的所有参数均是服务器返回的)

//微信支付
- (void)weixinpay {
    
    PayReq *request = [[PayReq alloc] init];
    request.partnerId = partnerid;           //商家向财付通申请的商家id
    request.prepayId = prepayid;             //预支付订单
    request.nonceStr = noncestr;             //随机串,防重发
    request.timeStamp = timestamp.intValue;  //时间戳,防重发
    request.package = package;               //商家根据财付通文档填写的数据和签名(Sign=WXPay)
    request.sign = sign;                     //商家根据微信开放平台文档对数据做的签名
    
    [WXApi sendReq:request];
    
}

完成支付之后,会来到这个回调,我们再根据回调处理结果即可

-(void)onResp:(BaseResp *)resp {
    
    switch (resp.errCode) {
        case WXSuccess:
            NSLog(@"支付成功-PaySuccess,retcode = %d", resp.errCode);
            
        default:
            NSLog(@"支付错误,retcode = %d, retstr = %@", resp.errCode,resp.errStr);
    }
}

如果这样写完还是没有支付成功,那么90%是后台返回来的参数有问题,叫后台去查查吧

另外有可能会出现调起微信,但只有一个确定按钮的情况,详情看这里:http://www.cocoachina.com/bbs/read.php?tid-321546.html

上面那位兄弟已经写得非常详细了,如果他帖子里的方法试完了还是没有解决,那就下载下面这位大神写的demo,跟服务器返回给你的参数一一对比,看是哪个地方出现了问题

@狂龙天使 的demo地址http://www.cocoachina.com/bbs/read.php?tid-309177-keyword-%CE%A2%D0%C5%D6%A7%B8%B6.html


本地签名版本


本地签名无非就是多了个签名的步骤,用微信demo里的方法,或者上面@狂龙天使的demo,研究一下就可以做出来,我这就不写了。

以上



你可能感兴趣的:(ios,支付,微信支付)