RQWechatManager.m 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. /// 支付成功通知
  10. NSString * const RQUserNotificationAlipayOrWechatSuccess = @"RQUserNotificationAlipayOrWechatSuccess";
  11. /// 支付成功通知
  12. NSString * const RQUserNotificationAlipayOrWechatFail = @"RQUserNotificationAlipayOrWechatFail";
  13. @interface RQWechatManager()
  14. @property (nonatomic, readwrite, strong) NSString *appID;
  15. @property (nonatomic, readwrite, strong) NSString *appSecret;
  16. @property (nonatomic, readwrite, strong) NSString *universalLink;
  17. @end
  18. @implementation RQWechatManager
  19. @def_singleton(RQWechatManager);
  20. #pragma mark - PublicMethods
  21. + (BOOL)handleOpenUrl:(NSURL *)url {
  22. return [WXApi handleOpenURL:url delegate:[RQWechatManager sharedInstance]];
  23. }
  24. + (void)hangleWechatPayWith:(PayReq *)req {
  25. [WXApi sendReq:req completion:^(BOOL success) {
  26. if (success) {
  27. NSLog(@"微信支付成功");
  28. } else {
  29. NSLog(@"微信支付异常");
  30. }
  31. }];
  32. }
  33. - (NSString *)appID {
  34. return @"wx606fa102dbc4b8ab";
  35. }
  36. - (NSString *)appSecret {
  37. return @"93832292771493dc2aae6797edbc387c";
  38. }
  39. - (NSString *)universalLink {
  40. return @"https://app.jppt.com.cn/JSJPStudent/";
  41. }
  42. /// 初始化微信SDK
  43. - (void)initWechatManager {
  44. dispatch_async_on_main_queue(^{
  45. BOOL isSuccess = [WXApi registerApp:self.appID universalLink:self.universalLink];
  46. NSLog(@"%@",isSuccess? @"微信初始化成功" : @"微信初始化失败");
  47. });
  48. }
  49. /// 调起微信登录
  50. - (void)wechatLogin {
  51. /// 第三方向微信终端发送一个SendAuthReq消息结构
  52. SendAuthReq *req = [[SendAuthReq alloc] init];
  53. /// 用于保持请求和回调的状态,授权请求或原样带回
  54. req.state = @"wx_oauth_authorization_state";
  55. /// 授权作用域:获取用户个人信息
  56. req.scope = @"snsapi_userinfo";
  57. /// 唤起微信
  58. [WXApi sendReq:req completion:^(BOOL success) {
  59. if (success) {
  60. NSLog(@"唤起成功");
  61. }else {
  62. NSLog(@"唤起失败");
  63. }
  64. }];
  65. }
  66. #pragma mark - PrivateMethods
  67. #pragma mark - 微信回调
  68. /*
  69. enum WXErrCode {
  70. WXSuccess = 0, < 成功
  71. WXErrCodeCommon = -1, < 普通错误类型
  72. WXErrCodeUserCancel = -2, < 用户点击取消并返回
  73. WXErrCodeSentFail = -3, < 发送失败
  74. WXErrCodeAuthDeny = -4, < 授权失败
  75. WXErrCodeUnsupport = -5, < 微信不支持
  76. };
  77. */
  78. - (void)onResp:(BaseResp *)resp {
  79. if([resp isKindOfClass:[PayResp class]]) {
  80. switch (resp.errCode) {
  81. case WXSuccess: {
  82. NSLog(@"微信回调成功");
  83. /// 微信支付回调
  84. if ([resp isKindOfClass:[PayResp class]]) {
  85. PayResp *payResp = (PayResp*)resp;
  86. [RQ_VIP_Module isVipWithSubject:0 complete:^(BOOL isVip) {
  87. }];
  88. [RQ_VIP_Module isActiveWithCcomplete:^(RQActivationModel * _Nullable activationModel, BOOL isSuccess) {}];
  89. [[NSNotificationCenter defaultCenter] postNotificationName:RQUserNotificationAlipayOrWechatSuccess object:payResp userInfo:nil];
  90. }
  91. /// 微信登录授权回调
  92. if ([resp isKindOfClass:[SendAuthResp class]]) {
  93. SendAuthResp *sendAuthResp = (SendAuthResp *)resp;
  94. [RQNotificationCenter postNotificationName:RQWeChatOnRespNotification object:sendAuthResp.code];
  95. }
  96. break;
  97. }
  98. case WXErrCodeCommon: {
  99. NSLog(@"微信回调异常");
  100. break;
  101. }
  102. case WXErrCodeUserCancel: {
  103. NSLog(@"微信回调用户取消");
  104. break;
  105. }
  106. case WXErrCodeSentFail: {
  107. NSLog(@"微信回调发送信息失败");
  108. break;
  109. }
  110. case WXErrCodeAuthDeny: {
  111. NSLog(@"微信回调授权失败");
  112. break;
  113. }
  114. case WXErrCodeUnsupport: {
  115. NSLog(@"微信回调微信版本暂不支持");
  116. break;
  117. }
  118. default: {
  119. break;
  120. }
  121. }
  122. }
  123. if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]]) {
  124. // 对应JsApi navigateBackApplication中的extraData字段数据
  125. // NSString *string = resp.extMsg;
  126. }
  127. }
  128. - (void)onReq:(BaseReq*)req {
  129. }
  130. @end