内容简介:使用微信分享和微信支付,已经渐渐成为用户的习惯,现在的app几乎都支持微信分享和微信支付功能,所以在这里我也分享一下我实现的步骤,也是对自己学习的总结.注意:支付的话还需要到微信的商户平台:使用微信的API
使用微信分享和微信支付,已经渐渐成为用户的习惯,现在的app几乎都支持微信分享和微信支付功能,所以在这里我也分享一下我实现的步骤,也是对自己学习的总结.
一、准备阶段
- 首先得到微信的开放平台注册账号: https://open.weixin.qq.com ;
- 然后申请app的相关信息,到“创建移动应用”页面完善应用的资料,然后就是等待审核。。。。
注意:支付的话还需要到微信的商户平台: https://pay.weixin.qq.com ,填写相关资料。。。
二、开发阶段
- 导入最新的微信SDK
可以到微信开放平台下载最新的SDK到工程中,也可以通过pod导入
添加依赖。库:SystemConfiguration.framework,liz.tbd,libsqlite3.0.tbd,libc++.tbd - 项目设置APPID商户在微信开放平台申请开发APP应用后,微信开放平台会生成APP的唯一标识APPID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的
使用微信的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
微信打赏
支付宝打赏
感谢您对作者Miya的打赏,我们会更加努力! 如果您想成为作者,请点我
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 【行业分享】(3)—— 支付网关架构演进
- 40 页 PPT 分享万亿级交易量下的支付平台设计
- 阿里p8架构师分享:支付宝三面Java面试题:JVM+缓存+性能+架构
- 支付宝小程序Serverless服务架构演进 | mPaaS 线下沙龙 CodeDay#1 分享实录
- IJPay 0.5 让支付触手可及,已完成微信支付,支付宝支付
- 支付宝支付参数获取
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Agile Web Development with Rails 4
Sam Ruby、Dave Thomas、David Heinemeier Hansson / Pragmatic Bookshelf / 2013-10-11 / USD 43.95
Ruby on Rails helps you produce high-quality, beautiful-looking web applications quickly. You concentrate on creating the application, and Rails takes care of the details. Tens of thousands of deve......一起来看看 《Agile Web Development with Rails 4》 这本书的介绍吧!