iOS开发集成第三方微信支付和分享问题
2016-08-29 20:17
78 查看
前言
直入主题
有关微信支付问题在这里就不再介绍有关微信支付申请的流程了,小白可以参看微信开放平台和微信服务号也可申请微信支付接口。这里是微信官方给的微信支付接入指南(然而并没有太大用处)
1. APP支付
1.业务流程:(这个很重要)APP支付时序图
这个图需要看懂:为了各种原因,下单、请求支付、结果回调等一般安排公司后台完成
大致流程如下:
【APP】用户使用商户APP选择商品完成下单
【APP】向公司服务器请求生成支付订单
【服务器】公司服务器调用统一下单接口
【微信完成】生成订单返回预支付信息(prepay_id)给公司服务器
【服务器】根据prepay_id生成带签名的支付信息,返回给移动端
【微信APP】微信授权需用户确认
【APP】通过公司服务器回调参数,调用微信SDK发起支付请求
【微信APP】向微信服务器发送请求,返回支付授权
【微信APP】用户确认支付,输入密码,提交微信服务器授权
【微信服务器】验证授权,异步通知公司服务器和移动端APP
【APP】可向公司服务器查询订单信息
需要查看官方文档,请点击这里
2.iOS开发xCode配置环境
有关demo下载,根据本文_作者demo 和
iOS微信官方demo
向微信注册你的应用程序id,具体教程可点击这里
下载"微信SDK",截止今日SDK已经更新到1.7.1已支持ipv6的。
使用xcode新建一个工程,将libWeChatSDK.a,WXApi.h,WXApiObject.h三个文件添加到工程中,如下图:
导入SDK文件
添加依赖库:
SystemConfiguration.framework,
libz.tbd,
libsqlite3.0.tbd,
libc++.tbd.
CoreTelephony.framework(不添加会报这个错误
"_OBJC_CLASS_$_CTTelephonyNetworkInfo", referenced from:)
需要添加库
允许http请求,编辑
Info.plist,在其中添加
<key>NSAppTransportSecurity</key><dict> <key>NSAllowsArbitraryLoads</key> <true/></dict>
配置http请求
配置URL scheme(应用跳转返回应用标识)
还记得你在微信注册应用分配给你的id麽?就是需要这个东西
查看微信AppID
填写完成大概就是这样
配置scheme
这里需要注意一下在iOS9以后,唤起另一个APP时(此时是欢迎微信第三方APP完成支付)需要在info.plist中配置一下
LSApplicationQueriesSchemesiOS9之后才会需要,iOS9之后提高了APP的安全性,需要给出一个类似白名单的东西,在白名单里面的才能打开APP。不然报错:
-canOpenURL: failed for URL: "OpenAppTest://mark?id=007" - error: "This app is not allowed to query for scheme OpenAppTest"
配置结束~应该就是这个样子~
配置白名单
配置开发环境遇到的各种坑:
1.到此开发环境已经全部结束了,至于有些导入依赖库遇到的.dylib文件都是很老的版本了。xcode7.0之后导入.tbd即可。
2.至于有关在Build Setting的Search Paths中添加我们刚刚导入的SDK文件有关问题都不需要做了,Xcode都已经帮我们处理好了。至少使用xcode7.0之后都已经帮我们搞定了,在这里,不得不说微信这部分文档确实很老了。
......
到此为止,有关微信分享好友、朋友圈、收藏等第三方支付环境配置问题已经结束~接下来正式码砖了~
3.SDK使用
在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;方法中向微信终端注册你的AppID
注册AppID
配置AppDelegate中的代码,效果图见后
(1).导入头文件
#import "WXApi.h"
#import "WXApiObject.h"
(2). 重写AppDelegate中
handleOpenURL和
openURL方法:(多个应用之间的调用)
(3). 在需要与微信交互的地方,遵守WXApiDelegate协议,实现协议中的两个方法(处理向微信发送、微信返回结果回调)
- (void)onReq:(BaseReq *)req和
- (void)onResp:(BaseResp *)resp;
AppDelegate
附: 需要给微信发消息,则需要调用WXApi的
sendReq函数(例如:微信分享好友、朋友圈等时)
- (BOOL)sendReq:(BaseReq *)req
3.生成订单
用户选择商品后,在这里向后台服务器发送下单请求,服务器将生成订单信息等微信所下发的预支付id、签名等信息。然后发起支付调用surePay方法
4.完成支付请求
后台生成prepayid、签名sign后调用微信SDK发起支付
//需要创建这个支付对象 PayReq *req = [[PayReq alloc] init]; //应用id req.openID = kWXAPP_ID; // 商家商户号 req.partnerId = kWX_PARTNERID; // 预支付订单这个是后台跟微信服务器交互后,微信服务器传给你们服务器的,你们服务器再传给你 req.prepayId = @"";//self.orderWithWX.prepayid; // 根据财付通文档填写的数据和签名 //这个比较特殊,是固定的,只能是即req.package = Sign=WXPay req.package = @"Sign=WXPay"; // 随机编码,为了防止重复的,在后台生成 req.nonceStr = @"";//self.orderWithWX.noncestr; // 这个是时间戳,也是在后台生成的,为了验证支付的 NSString * stamp = @"";//self.orderWithWX.timestamp; req.timeStamp = stamp.intValue; // 这个签名也是后台做的 req.sign = @"";//self.orderWithWX.sign; //发送请求到微信,等待微信返回onResp [WXApi sendReq:req];
5.支付结果回调
还记得在AppDelegate中配置的回调方法麽
- (void)onResp:(BaseResp*)resp;
如下图:
回调结果处理
有关demo下载,根据本文_作者demo 和
iOS微信官方demo
相关文章推荐
- iOS开发---集成ShareSDK实现第三方登录、分享、关注等功能。
- iOS开发之第三方支付微信支付教程,史上最新最全第三方微信支付方式实现、微信集成教程,微信实现流程
- React Native 集成分享第三方登录功能分享第三方登录模块开发(iOS)
- iOS 开发 APP集成微信分享功能遇到的问题-2016-10月
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- 解决iOS app集成分享到QQ空间,微信好友,朋友圈等功能,苹果审核无法通过的问题
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- IOS开发笔记之一——导入第三方库文件引起的ARC报错问题
- iOS 社会化分享 第三方开发包ShareSDK使用
- iOS开发:集成微信支付和微信授权登陆
- ios开发sdk集成.a静态库duplicate问题解决
- iOS- 三步快速集成社交化分享工具ShareSDK + iOS- 无处不在,详解iOS集成第三方登录(SSO授权登录<无需密码>)
- iOS开发引入第三方类库的问题
- iOS开发引入第三方类库的问题
- iOS开发经验分享:UITableViewCell复用问题
- iOS平台软件开发工具(一)-新建的工程使用CocoaPods工具集成第三方框架
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- iOS开发之使用CocoaPods更新第三方出现“target overrides the `CLANG_CXX_LANGUAGE_STANDARD`……”问题解决方案