前言



直入主题

有关微信支付问题
在这里就不再介绍有关微信支付申请的流程了,小白可以参看微信开放平台和微信服务号也可申请微信支付接口。这里是微信官方给的微信支付接入指南(然而并没有太大用处)


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使用

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;方法中向微信终端注册你的AppID

    注册AppID

  2. 配置AppDelegate中的代码,效果图见后
    (1).导入头文件
    #import "WXApi.h"
    #import "WXApiObject.h"
    (2). 重写AppDelegate中handleOpenURLopenURL方法:(多个应用之间的调用)
    (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开发集成第三方微信支付和分享问题相关推荐

  1. iOS开发技术之微信支付

    一.微信支付简易流程: 用户 ->微信客户端 ->商户APP ->商户后台应用 ->微信支付系统 二.微信支付顺序流程: 1.用户使用APP客户端,选择商品下单. 2.商户客户 ...

  2. 关于集成第三方微信支付,支付宝,高德地图等排坑

    高德地图定位: 大家仔细检查key 千万不要搞错了 @OnPermissionDenied(Manifest.permission.ACCESS_FINE_LOCATION) void showDen ...

  3. iOS开发-集成一网通支付

    这两天一直在搞招行的一网通支付,网上的相关资料少之又少.其官方文档也让人只想呵呵.其支付流程: 1)向后台服务器请求支付URL(这里后台返回的是一个表单,通过loadHTMLString方法加载). ...

  4. SpringBoot 集成第三方聚合支付 微信、支付宝

    SpringBoot 集成第三方聚合支付 1. 创建Spring Boot项目 2. 添加依赖 3. 配置支付宝.微信 4. 实现支付接口 5. 实现支付服务 6. 实现支付回调接口 7. 测试支付 ...

  5. 2018年最全iOS开发之第三方库

    最全iOS开发之第三方库 最新增加 EAIntroView 一个灵活的介绍界面,可以用作引导页 UI 下拉刷新 EGOTableViewPullRefresh– 最早的下拉刷新控件. SVPullTo ...

  6. iOS开发 常用第三方开源框架

    iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 2015-04-05 15:25 2482人阅读 评论(1) 收藏 举报 开源框架 图像: 1.图片浏览控件MWPhotoBrowse ...

  7. iOS开发常用第三方开源框架

    iOS开发-常用第三方开源框架倾情整理!简书:https://www.jianshu.com/p/29cb22b13d79 iOS第三方库大全:https://blog.csdn.net/kanggu ...

  8. Android和IOS 调用 支付宝和微信 支付方法

    Android和IOS 调用 支付宝和微信 支付方法 转载于:https://www.cnblogs.com/huangzineng/p/7235705.html

  9. iOS 不错的第三方开源库归类分享

    <iOS 不错的第三方开源库归类分享> ---- 前言 Github可说是全球最大的IT"交友约会"网站,各种各样牛逼的open source code,star!st ...

最新文章

  1. golang struct 动态创建
  2. 链式链表的C风格实现
  3. mysql性能结构优化原理_MySQL性能管理及架构设计(二):数据库结构优化、高可用架构设计、数据库索引优化...
  4. 怎样提高WebService性能大数据量网络传输处理(转)
  5. HP ProLiant 服务器 - 基础知识
  6. linux基础:7、基础命令介绍(2)
  7. web前端基础(12js基础介绍)
  8. hql连接查询及外置命名查询
  9. canvas图形绘制
  10. python全栈开发-Day11 迭代器、生成器、面向过程编程
  11. linux 环境变量和shell变量
  12. 风变科技公司的python小课_风变编程Python小课最近很火,大家学完感受如何?
  13. 虚拟现实中用到的五种定位追踪技术
  14. 流程即代码:云研发、低代码 IDE —— Uncode
  15. QOS端口限速EMAIL流量限速
  16. php 身份证格式校验,年龄计算
  17. uwp之图片旋转动画实现
  18. 爱因斯坦是人类历史上最伟大的科学家吗?
  19. opengl 着色器
  20. npm安装vue,在vue/dist目录下没有产生vue.js文件

热门文章

  1. 毕业设计 单片机智能避障扫地机器人 -物联网 嵌入式
  2. 新斗罗大陆手游服务端,自动搭建脚本,有手就可以,
  3. 力士乐压力补偿器ZDC25P-2X/M
  4. 工作票应一式两份 用计算机,工作票应使用统一的票面格式,釆用()、()或()填写,至少一式两份。...
  5. 写给数据科学家:GitHub实践指南教程;交互式图像标注工具(像素级);Kindle高亮笔记的导出工具;人脸分析库;前沿论文 | ShowMeAI资讯日报
  6. 完整的C语言开发过程
  7. opencv python考勤_Python+Opencv+Tkinter指纹识别与人脸识别的门禁兼考勤(二)
  8. 智能排版助手 Gidot Typesetter 3.0.7 !
  9. 涉密计算机及网络保密管理制度,威海市国家保密局 保密制度 计算机及网络保密管理制度...
  10. 没有美术基础如何学?月薪过万建模大佬的八字真言