iOS开发集成第三方微信支付和分享问题
前言
直入主题
有关微信支付问题
在这里就不再介绍有关微信支付申请的流程了,小白可以参看微信开放平台和微信服务号也可申请微信支付接口。这里是微信官方给的微信支付接入指南(然而并没有太大用处)
1. APP支付
1.业务流程:(这个很重要)
这个图需要看懂:为了各种原因,下单、请求支付、结果回调等一般安排公司后台完成
大致流程如下:
- 【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中配置一下
LSApplicationQueriesSchemes
iOS9之后才会需要,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
;
附: 需要给微信发消息,则需要调用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开发集成第三方微信支付和分享问题相关推荐
- iOS开发技术之微信支付
一.微信支付简易流程: 用户 ->微信客户端 ->商户APP ->商户后台应用 ->微信支付系统 二.微信支付顺序流程: 1.用户使用APP客户端,选择商品下单. 2.商户客户 ...
- 关于集成第三方微信支付,支付宝,高德地图等排坑
高德地图定位: 大家仔细检查key 千万不要搞错了 @OnPermissionDenied(Manifest.permission.ACCESS_FINE_LOCATION) void showDen ...
- iOS开发-集成一网通支付
这两天一直在搞招行的一网通支付,网上的相关资料少之又少.其官方文档也让人只想呵呵.其支付流程: 1)向后台服务器请求支付URL(这里后台返回的是一个表单,通过loadHTMLString方法加载). ...
- SpringBoot 集成第三方聚合支付 微信、支付宝
SpringBoot 集成第三方聚合支付 1. 创建Spring Boot项目 2. 添加依赖 3. 配置支付宝.微信 4. 实现支付接口 5. 实现支付服务 6. 实现支付回调接口 7. 测试支付 ...
- 2018年最全iOS开发之第三方库
最全iOS开发之第三方库 最新增加 EAIntroView 一个灵活的介绍界面,可以用作引导页 UI 下拉刷新 EGOTableViewPullRefresh– 最早的下拉刷新控件. SVPullTo ...
- iOS开发 常用第三方开源框架
iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 2015-04-05 15:25 2482人阅读 评论(1) 收藏 举报 开源框架 图像: 1.图片浏览控件MWPhotoBrowse ...
- iOS开发常用第三方开源框架
iOS开发-常用第三方开源框架倾情整理!简书:https://www.jianshu.com/p/29cb22b13d79 iOS第三方库大全:https://blog.csdn.net/kanggu ...
- Android和IOS 调用 支付宝和微信 支付方法
Android和IOS 调用 支付宝和微信 支付方法 转载于:https://www.cnblogs.com/huangzineng/p/7235705.html
- iOS 不错的第三方开源库归类分享
<iOS 不错的第三方开源库归类分享> ---- 前言 Github可说是全球最大的IT"交友约会"网站,各种各样牛逼的open source code,star!st ...
最新文章
- golang struct 动态创建
- 链式链表的C风格实现
- mysql性能结构优化原理_MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化...
- 怎样提高WebService性能大数据量网络传输处理(转)
- HP ProLiant 服务器 - 基础知识
- linux基础:7、基础命令介绍(2)
- web前端基础(12js基础介绍)
- hql连接查询及外置命名查询
- canvas图形绘制
- python全栈开发-Day11 迭代器、生成器、面向过程编程
- linux 环境变量和shell变量
- 风变科技公司的python小课_风变编程Python小课最近很火,大家学完感受如何?
- 虚拟现实中用到的五种定位追踪技术
- 流程即代码:云研发、低代码 IDE —— Uncode
- QOS端口限速EMAIL流量限速
- php 身份证格式校验,年龄计算
- uwp之图片旋转动画实现
- 爱因斯坦是人类历史上最伟大的科学家吗?
- opengl 着色器
- npm安装vue,在vue/dist目录下没有产生vue.js文件
热门文章
- 毕业设计 单片机智能避障扫地机器人 -物联网 嵌入式
- 新斗罗大陆手游服务端,自动搭建脚本,有手就可以,
- 力士乐压力补偿器ZDC25P-2X/M
- 工作票应一式两份 用计算机,工作票应使用统一的票面格式,釆用()、()或()填写,至少一式两份。...
- 写给数据科学家:GitHub实践指南教程;交互式图像标注工具(像素级);Kindle高亮笔记的导出工具;人脸分析库;前沿论文 | ShowMeAI资讯日报
- 完整的C语言开发过程
- opencv python考勤_Python+Opencv+Tkinter指纹识别与人脸识别的门禁兼考勤(二)
- 智能排版助手 Gidot Typesetter 3.0.7 !
- 涉密计算机及网络保密管理制度,威海市国家保密局 保密制度 计算机及网络保密管理制度...
- 没有美术基础如何学?月薪过万建模大佬的八字真言