// // RQWechatManager.m // XinShouJiaDao // // Created by 张嵘 on 2021/7/22. // Copyright © 2021 JCZ. All rights reserved. // #import "RQWechatManager.h" /// 支付成功通知 NSString * const RQUserNotificationAlipayOrWechatSuccess = @"RQUserNotificationAlipayOrWechatSuccess"; /// 支付成功通知 NSString * const RQUserNotificationAlipayOrWechatFail = @"RQUserNotificationAlipayOrWechatFail"; @interface RQWechatManager() @property (nonatomic, readwrite, strong) NSString *appID; @property (nonatomic, readwrite, strong) NSString *universalLink; @end @implementation RQWechatManager @def_singleton(RQWechatManager); #pragma mark - PublicMethods + (BOOL)handleOpenUrl:(NSURL *)url { return [WXApi handleOpenURL:url delegate:[RQWechatManager sharedInstance]]; } + (void)hangleWechatPayWith:(PayReq *)req { [WXApi sendReq:req completion:^(BOOL success) { if (success) { NSLog(@"微信支付成功"); } else { NSLog(@"微信支付异常"); } }]; } - (NSString *)appID { return @"wxc439503456129660"; } - (NSString *)universalLink { return @"https://app.jppt.com.cn/SuDaJiaKao/"; } /// 初始化微信SDK - (void)initWechatManager { dispatch_async_on_main_queue(^{ [WXApi registerApp:self.appID universalLink:self.universalLink]; }); } /// 调起微信登录 - (void)wechatLogin { /// 第三方向微信终端发送一个SendAuthReq消息结构 SendAuthReq *req = [[SendAuthReq alloc] init]; /// 用于保持请求和回调的状态,授权请求或原样带回 req.state = @"wx_oauth_authorization_state"; /// 授权作用域:获取用户个人信息 req.scope = @"snsapi_userinfo"; if ([WXApi isWXAppInstalled]) { /// 唤起微信 [WXApi sendReq:req completion:^(BOOL success) { if (success) { NSLog(@"唤起成功"); }else { NSLog(@"唤起失败"); } }]; } else { [WXApi sendAuthReq:req viewController:RQControllerHelper.currentViewController delegate:self completion:^(BOOL success) { }]; } } - (void)lianXiKeFu { WXOpenCustomerServiceReq *req = [[WXOpenCustomerServiceReq alloc] init]; req.corpid = @"ww6b1bf92786571685"; //企业ID req.url = @"https://work.weixin.qq.com/kfid/kfc49a3ec13656f2077"; //客服URL return [WXApi sendReq:req completion:nil]; } #pragma mark - PrivateMethods /// 调起微信支付 - (void)clickToWechatPayWithPrepareOrder:(RQPrepareOrderModel *)prepareOrder { // 发起微信支付,设置参数 //需要创建这个支付对象 PayReq *req = [[PayReq alloc] init]; //由用户微信号和AppID组成的唯一标识,用于校验微信用户 req.openID = prepareOrder.appId; // 商家id,在注册的时候给的 req.partnerId = prepareOrder.partnerId; // 预支付订单这个是后台跟微信服务器交互后,微信服务器传给你们服务器的,你们服务器再传给你 req.prepayId = prepareOrder.prepayId; // 根据财付通文档填写的数据和签名 req.package = prepareOrder.packageValue; // 随机编码,为了防止重复的,在后台生成 req.nonceStr = prepareOrder.nonceStr; // 这个是时间戳,也是在后台生成的,为了验证支付的 NSString * stamp = prepareOrder.timeStamp; req.timeStamp = (UInt32)stamp.intValue; // 这个签名也是后台做的 req.sign = prepareOrder.sign; //发送请求到微信,等待微信返回onResp [WXApi sendReq:req completion:^(BOOL success) { }]; } #pragma mark - 微信回调 /* enum WXErrCode { WXSuccess = 0, < 成功 WXErrCodeCommon = -1, < 普通错误类型 WXErrCodeUserCancel = -2, < 用户点击取消并返回 WXErrCodeSentFail = -3, < 发送失败 WXErrCodeAuthDeny = -4, < 授权失败 WXErrCodeUnsupport = -5, < 微信不支持 }; */ - (void)onResp:(BaseResp *)resp { switch (resp.errCode) { case WXSuccess: { NSLog(@"微信回调成功"); /// 微信支付回调 if ([resp isKindOfClass:[PayResp class]]) { PayResp *payResp = (PayResp*)resp; [RQNotificationCenter postNotificationName:RQUserNotificationAlipayOrWechatSuccess object:payResp userInfo:nil]; } /// 微信登录授权回调 if ([resp isKindOfClass:[SendAuthResp class]]) { SendAuthResp *sendAuthResp = (SendAuthResp *)resp; [RQNotificationCenter postNotificationName:RQWeChatOnRespNotification object:sendAuthResp.code]; } break; } case WXErrCodeCommon: { NSLog(@"微信回调异常"); break; } case WXErrCodeUserCancel: { NSLog(@"微信回调用户取消"); break; } case WXErrCodeSentFail: { NSLog(@"微信回调发送信息失败"); break; } case WXErrCodeAuthDeny: { NSLog(@"微信回调授权失败"); break; } case WXErrCodeUnsupport: { NSLog(@"微信回调微信版本暂不支持"); break; } default: { break; } } } - (void)onReq:(BaseReq*)req { } @end