第一步、下载微信SDK
第二步、.微信支付处理和友盟库冲突
点击工程->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]; } } }