iOS-微信分享和支付

栏目: IOS · 发布时间: 5年前

内容简介:使用微信分享和微信支付,已经渐渐成为用户的习惯,现在的app几乎都支持微信分享和微信支付功能,所以在这里我也分享一下我实现的步骤,也是对自己学习的总结.注意:支付的话还需要到微信的商户平台:使用微信的API

使用微信分享和微信支付,已经渐渐成为用户的习惯,现在的app几乎都支持微信分享和微信支付功能,所以在这里我也分享一下我实现的步骤,也是对自己学习的总结.

一、准备阶段

  1. 首先得到微信的开放平台注册账号: https://open.weixin.qq.com ;
  2. 然后申请app的相关信息,到“创建移动应用”页面完善应用的资料,然后就是等待审核。。。。
iOS-微信分享和支付

注意:支付的话还需要到微信的商户平台: https://pay.weixin.qq.com ,填写相关资料。。。

二、开发阶段

  1. 导入最新的微信SDK
    可以到微信开放平台下载最新的SDK到工程中,也可以通过pod导入
    添加依赖。库:SystemConfiguration.framework,liz.tbd,libsqlite3.0.tbd,libc++.tbd
  2. 项目设置APPID商户在微信开放平台申请开发APP应用后,微信开放平台会生成APP的唯一标识APPID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的
iOS-微信分享和支付

使用微信的API

在需要使用微信支付的地方导入:

#import "WXApi.h"

在AppDelegate中的didFinishLaunchingWithOptions方法中添加以下代码向微信注册APP:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
    // Override point for customization after application launch.  
      
    //注册APP,  
    [WXApi registerApp:@"你注册的APPID"];  
    return YES;  
}

跳转URL scheme

// 这个方法是用于从微信返回第三方App- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {        // 授权跳转支付宝钱包进行支付,处理支付结果
        [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {            NSLog(@"result = %@",resultDic);            // 解析 auth code
            NSString *result = resultDic[@"result"];            
            NSString *authCode = nil;            
            if (result.length>0) {                
                    NSArray *resultArr = [result componentsSeparatedByString:@"&"];                for (NSString *subResult in resultArr) {                    if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
                    authCode = [subResult substringFromIndex:10];                        break;
                    }
                }
            }            
            NSLog(@"授权结果 authCode = %@", authCode?:@"");
        }];        
        return YES;
    }
    [WXApi handleOpenURL:url delegate:self];    
    return YES;
}

添加微信的支付结果的回调

- (void)onResp:(BaseResp *)resp {   
    //微信支付 PayResp
    if ([resp isKindOfClass:[PayResp class]]) {        NSString *resultCode;        
        switch (resp.errCode) {            case WXSuccess:                //支付成功
                resultCode = @"9000";
                [[NSNotificationCenter defaultCenter] postNotificationName:@"paysuccess" object:nil];               
                break;            default:                //支付失败
                resultCode = @"6001";
                [[NSNotificationCenter defaultCenter] postNotificationName:@"paydefeat" object:nil];                break;
        }        //返回支付结果 支付成功9000 支付失败 6001
        //  [[NSNotificationCenter defaultCenter] postNotificationName:@"payResult" object:resultCode];
    }
}

吊起微信所需的参数配置可参考官方提供的一个连接:

http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php ,用于调试支付接口的参数设置;

这里所获取到的参数可以全部由服务器提供,即在服务器返回prepayId的时候,一并将吊起微信所需的参数返回:

[Networking getWithUrl:@"http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php" params:nil success:^(id response) {  
        NSLog(@"%@",response);  
          
        //配置调起微信支付所需要的参数  
          
        PayReq *req  = [[PayReq alloc] init];  
          
        req.partnerId = [response objectForKey:@"partnerid"];  
        req.prepayId = [response objectForKey:@"prepayid"];  
        req.package = [response objectForKey:@"package"];  
        req.nonceStr = [response objectForKey:@"noncestr"];  
        req.timeStamp = [[response objectForKey:@"timestamp"]intValue];  
        req.sign = [response objectForKey:@"sign"];  
          
        //调起微信支付  
        if ([WXApi sendReq:req]) {  
            NSLog(@"吊起成功");  
        }  
  
          
    } fail:^(NSError *error) {  
        NSLog(@"%@",error);  
    }];

注册通知

在吊起微信的地方注册通知(用于接收支付结果)的时候,最好先判断一下用户是否安装了微信:

//判断是否安装微信   if([WXApi isWXAppInstalled]) {  
        // 监听一个通知  
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getOrderPayResult:) name:@"ORDER_PAY_NOTIFICATION" object:nil];  
  }

然后实现通知方法,在这里获取支付结果,处理相关逻辑:

#pragma mark - 收到支付成功的消息后作相应的处理  
- (void)getOrderPayResult:(NSNotification *)notification  
{  
    if ([notification.object isEqualToString:@"success"]) {  
        NSLog(@"支付成功");  
    } else {  
        NSLog(@"支付失败");  
    }  
}

三、微信分享

调用方法

if ([WXApi isWXAppInstalled] && [WXApi isWXAppSupportApi]) {
        SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];
        req.scene = WXSceneSession;
        WXMediaMessage *message = [WXMediaMessage message];
        message.title = shareDic[@"title"];
        message.description = shareDic[@"content"];
        

[message setThumbData:[NSData dataWithContentsOfURL:[NSURL URLWithString:shareDic[@”image”]

]]];         WXWebpageObject *webObj = [WXWebpageObject object];         webObj.webpageUrl = shareDic[@”url”];         message.mediaObject = webObj;         req.message = message;         [WXApi sendReq:req];              }

转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/25407.html

iOS-微信分享和支付

iOS-微信分享和支付 微信打赏

iOS-微信分享和支付 支付宝打赏

感谢您对作者Miya的打赏,我们会更加努力!    如果您想成为作者,请点我


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JSP 2.0技术手册

JSP 2.0技术手册

杜远君、林康司、林上杰 / 湖北教育出版社,电子工业出版社 / 2004-5-1 / 59.0

本书图文并茂,以丰富的实例为引导,全面介绍了主流的Java Web开发技术——JSP 2.0,重点介绍Java在展示层的两项重要技术:Java Servlet与JavaServer Pages。它们是最重要的Java核心技术。对这两项技术的深入了解,将有助于您未来对于JavaServer Faces(JSF)技术以及Java Web Services技术的学习。 本书分为三大部分,前......一起来看看 《JSP 2.0技术手册》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具