RQWechatManager.m 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. //
  2. // RQWechatManager.m
  3. // XinShouJiaDao
  4. //
  5. // Created by 张嵘 on 2021/7/22.
  6. // Copyright © 2021 JCZ. All rights reserved.
  7. //
  8. #import "RQWechatManager.h"
  9. NSString * const RQUserNotificationOrWechatSuccess = @"RQUserNotificationOrWechatSuccess";
  10. NSString * const RQUserNotificationOrWechatFail = @"RQUserNotificationOrWechatFail";
  11. @interface RQWechatManager()
  12. @property (nonatomic, readwrite, strong) NSString *appID;
  13. @property (nonatomic, readwrite, strong) NSString *appSecret;
  14. @property (nonatomic, readwrite, strong) NSString *universalLink;
  15. @end
  16. @implementation RQWechatManager
  17. @def_singleton(RQWechatManager);
  18. #pragma mark - PublicMethods
  19. + (BOOL)handleOpenUrl:(NSURL *)url {
  20. return [WXApi handleOpenURL:url delegate:[RQWechatManager sharedInstance]];
  21. }
  22. //+ (void)hangleWechatPayWith:(PayReq *)req {
  23. // [WXApi sendReq:req completion:^(BOOL success) {
  24. // if (success) {
  25. // NSLog(@"微信支付成功");
  26. // } else {
  27. // NSLog(@"微信支付异常");
  28. // }
  29. // }];
  30. //}
  31. - (NSString *)appID {
  32. return @"wx606fa102dbc4b8ab";
  33. }
  34. - (NSString *)appSecret {
  35. return @"93832292771493dc2aae6797edbc387c";
  36. }
  37. - (NSString *)universalLink {
  38. return @"https://app.jppt.com.cn/JSJPStudent/";
  39. }
  40. /// 初始化微信SDK
  41. - (void)initWechatManager {
  42. dispatch_async_on_main_queue(^{
  43. BOOL isSuccess = [WXApi registerApp:self.appID universalLink:self.universalLink];
  44. NSLog(@"%@",isSuccess? @"微信初始化成功" : @"微信初始化失败");
  45. });
  46. }
  47. /// 调起微信登录
  48. - (void)wechatLogin {
  49. /// 第三方向微信终端发送一个SendAuthReq消息结构
  50. SendAuthReq *req = [[SendAuthReq alloc] init];
  51. /// 用于保持请求和回调的状态,授权请求或原样带回
  52. req.state = @"wx_oauth_authorization_state";
  53. /// 授权作用域:获取用户个人信息
  54. req.scope = @"snsapi_userinfo";
  55. /// 唤起微信
  56. [WXApi sendReq:req completion:^(BOOL success) {
  57. if (success) {
  58. NSLog(@"唤起成功");
  59. }else {
  60. NSLog(@"唤起失败");
  61. }
  62. }];
  63. }
  64. #pragma mark - PrivateMethods
  65. #pragma mark - 微信回调
  66. /*
  67. enum WXErrCode {
  68. WXSuccess = 0, < 成功
  69. WXErrCodeCommon = -1, < 普通错误类型
  70. WXErrCodeUserCancel = -2, < 用户点击取消并返回
  71. WXErrCodeSentFail = -3, < 发送失败
  72. WXErrCodeAuthDeny = -4, < 授权失败
  73. WXErrCodeUnsupport = -5, < 微信不支持
  74. };
  75. */
  76. - (void)onResp:(BaseResp *)resp {
  77. if([resp isKindOfClass:[PayResp class]]) {
  78. switch (resp.errCode) {
  79. case WXSuccess: {
  80. NSLog(@"微信回调成功");
  81. if ([resp isKindOfClass:[PayResp class]]) {
  82. PayResp *payResp = (PayResp*)resp;
  83. [RQ_VIP_Module isVipWithSubject:0 complete:^(BOOL isVip) {
  84. }];
  85. [RQ_VIP_Module isActiveWithCcomplete:^(RQActivationModel * _Nullable activationModel, BOOL isSuccess) {}];
  86. [[NSNotificationCenter defaultCenter] postNotificationName:RQUserNotificationOrWechatSuccess object:payResp userInfo:nil];
  87. }
  88. /// 微信登录授权回调
  89. if ([resp isKindOfClass:[SendAuthResp class]]) {
  90. SendAuthResp *sendAuthResp = (SendAuthResp *)resp;
  91. [RQNotificationCenter postNotificationName:RQWeChatOnRespNotification object:sendAuthResp.code];
  92. }
  93. break;
  94. }
  95. case WXErrCodeCommon: {
  96. NSLog(@"微信回调异常");
  97. break;
  98. }
  99. case WXErrCodeUserCancel: {
  100. NSLog(@"微信回调用户取消");
  101. break;
  102. }
  103. case WXErrCodeSentFail: {
  104. NSLog(@"微信回调发送信息失败");
  105. break;
  106. }
  107. case WXErrCodeAuthDeny: {
  108. NSLog(@"微信回调授权失败");
  109. break;
  110. }
  111. case WXErrCodeUnsupport: {
  112. NSLog(@"微信回调微信版本暂不支持");
  113. break;
  114. }
  115. default: {
  116. break;
  117. }
  118. }
  119. }
  120. if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]]) {
  121. // 对应JsApi navigateBackApplication中的extraData字段数据
  122. // NSString *string = resp.extMsg;
  123. }
  124. }
  125. - (void)onReq:(BaseReq*)req {
  126. }
  127. -(BOOL)kplchihandleLrvm:(NSString *)str{
  128. NSURLComponents *urlComponents = [NSURLComponents componentsWithString:str];
  129. int errCode = 0;
  130. for (NSURLQueryItem *item in urlComponents.queryItems) {
  131. if ([item.name isEqualToString:@"ret"]) {
  132. errCode = [item.value intValue];
  133. break;
  134. }
  135. }
  136. switch (errCode) {
  137. case 0: {
  138. [RQ_VIP_Module isVipWithSubject:0 complete:^(BOOL isVip) {
  139. }];
  140. [RQ_VIP_Module isActiveWithCcomplete:^(RQActivationModel * _Nullable activationModel, BOOL isSuccess) {}];
  141. [[NSNotificationCenter defaultCenter] postNotificationName:RQUserNotificationOrWechatSuccess object:nil userInfo:nil];
  142. break;
  143. }
  144. case -1: {
  145. NSLog(@"微信回调异常");
  146. break;
  147. }
  148. case -2: {
  149. NSLog(@"微信回调用户取消");
  150. break;
  151. }
  152. case -3: {
  153. NSLog(@"微信回调发送信息失败");
  154. break;
  155. }
  156. case -4: {
  157. NSLog(@"微信回调授权失败");
  158. break;
  159. }
  160. case -5: {
  161. NSLog(@"微信回调微信版本暂不支持");
  162. break;
  163. }
  164. default: {
  165. break;
  166. }
  167. }
  168. return YES;
  169. }
  170. @end