123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- //
- // 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
|