iOS微信支付集成

第一步、下载微信SDK

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&token=&lang=zh_CN

 

第二步、.微信支付处理和友盟库冲突

点击工程->Build Settings -> Library Search Paths 删除不引用的库 解决冲突

 

第三步:使用:

  NSDictionary *dic = @{
                          @"payType":@"wxpay",
                          @"info":@{ @"package": @"Sign=WXPay",
                                     @"appid": @"wx190aa967a28b2ce9",
                                     @"sign": @"C869B2846125E850AF900407BDAE0296",
                                     @"partnerid": @"1485899712",
                                     @"prepayid": @"wx2017111616255525ce0d9da30274759227",
                                     @"noncestr": @"gJYC2FQyX8c5vgjy",
                                     @"timestamp": @"1510820708",}
                          };
        //微信支付
        NSDictionary *dict = payInfo[@"info"];
        HKPayService *p = [HKPayService sharedInstance];
        p.appId = dict[@"appid"];
        p.partnerId = dict[@"partnerid"];
        p.prepate_id = dict[@"prepayid"];
        p.nonceStr = dict[@"noncestr"];
        p.timeStamp = dict[@"timestamp"];
        p.sign = dict[@"sign"];
        [[HKPayTools sharedPay]payWithPayType:HKPayTypeWechat orderModel:nil];

#pragma mark---------微信支付------
-(void)weixinPay:(NSDictionary *)orderModel {
    /**
     1.用appid 和 商户号 初始化手柄;
     2.用手柄设置商户密钥
     3.提交预支付,获得prepape_id
     4.如果预支付id不为空,那么就吊起微信支付
     */
//    payRequsestHandler *handle = [[payRequsestHandler alloc]init];
//
//    //用appid 和 商户号 初始化手柄;
//    if ( [handle init:APP_id mch_id:MCH_id]) {
//        NSLog(@"初始化成功");
//    }
//    //设置商户密钥
//    [handle setKey:PARTNER_id];//用手柄设置商户密钥
//    //提交预支付,获得prepape_id
//    NSString *order_name =self.order[@"Title"] ;   //订单标题
//    NSString *order_price = [NSString stringWithFormat:@"%.f",[self.order[@"Pay_money"]floatValue]];//@"1"; //测试价格 分为单位
//
//    NSString *nocify_URL = self.order[@"nocify_URL"];    //回调接口
//    NSString *noncestr  = [NSString stringWithFormat:@"%d", rand()]; //随机串....8-16位
//    NSString *orderno   = [NSString stringWithFormat:@"%@",self.order[@"Order_no"]];//订单号
//    NSLog(@"订单号:%@",orderno);
//    NSMutableDictionary *params = [@{@"appid":APP_id,
//                                     @"mch_id":MCH_id,
//                                     @"device_info":[[[UIDevice currentDevice] identifierForVendor] UUIDString],
//                                     @"nonce_str":noncestr,
//                                     @"trade_type":@"APP",
//                                     @"body":order_name,
//                                     @"notify_url":nocify_URL,
//                                     @"out_trade_no":orderno,//商户订单号:这个必须用后台的订单号
//                                     @"spbill_create_ip":@"8.8.8.8",
//                                     @"total_fee":order_price}mutableCopy];
//
//    //提交预支付两次签名得到预支付订单的id(每次的请求得到的预支付订单id都不同)
//    NSString *prepate_id = [handle sendPrepay:params];
//    NSLog(@"%@",prepate_id);
    HKPayService *p = [HKPayService sharedInstance];
//    //LgEJlpmuknCkrytWwx9jQehfpSTMg5KI
//    //提交预订单成功
//    //微信支付Key
//    //p.weixinKey = PARTNER_ID;
    if (p.prepate_id && p.appId && p.partnerId) {
        //吊起微信支付
        
        PayReq *request = [[PayReq alloc]init];
        //商家id
        request.partnerId = p.partnerId;
        //订单id
        request.prepayId = p.prepate_id;
        //扩展字段(官方文档:暂时填写固定值)
        request.package = @"Sign=WXPay";
        //随机字符串
        request.nonceStr = p.nonceStr;
        //时间戳
        request.timeStamp = [p.timeStamp intValue];// (UInt32)[[NSDate date] timeIntervalSince1970];
        //sign参数(很经常出现的问题:就是调起支付到微信那边只出现一个确定按钮,单击确认按钮直接返回到app,出现这个问题100%是sign参数的问题)
        /*
         参数依次是: appid_key、partnerid_key、prepayid_key、固定值Sign=WXPay、预支付的随机数(跟上面得到预支付订单的随机数要一致)、支付时间(秒)
         */
        request.sign =  p.sign;// [self createMD5SingForPay:p.appId partnerid:p.partnerId prepayid:p.prepate_id package:@"Sign=WXPay" noncestr:p.nonceStr timestamp:request.timeStamp];
        //带起微信支付
        if ([WXApi sendReq:request]) {
            [[HKPayService sharedInstance]setAppNotify:YES];
            NSLog(@"微信app支付!");
        }else{
            //未安装微信客户端
            [XBAlertView showWithTitle:@"温馨提示" andMessage:@"您未安装微信,请选择其他方式支付" cancelTitle:@"知道了" cancelHandler:nil];
        }
    }
}

 

posted @ 2018-09-19 17:39  淡然微笑_Steven  阅读(507)  评论(0)    收藏  举报