产品中接入了微博/微信的第三方登录分享功能、微信和支付宝的第三方支付功能,之前在开发过程中涉及到这些部分,于是抽空将接入过程梳理了一遍。

1.微博、微信、支付宝SDK相关接入设置

(1)微博SDK

SDK下载

设置URL Scheme,用于从第三方应用或浏览器中启动app

将SDK添加到工程中(支持CocoaPods),app启动时(didFinishLaunchingWithOptions)注册appkey

重写AppDelegate 的handleOpenURL和openURL方法,其它引用类库等开发环境设置具体参考SDK中提供的《微博iOS平台SDK 档》即可。后续即可针对登录分享场景调用SDK

(2)微信SDK

下载地址

开放平台SDK相关说明

配置相关与微博SDK基本一致,设置URL Scheme、添加相关类库、启动时注册appKey及重写handleOpenURL和openURL方法。

需要注意的是如果没有安装微信客户端,是无法像微博或支付宝那样调起网页进行操作的,所以需要使用SDK提供的方法“[WXApi isWXAppInstalled]”检测微信是否安装,若没有安装,则微信相关的操作无法进行,微信登录或分享的标识需要隐藏。

(3)支付宝SDK

移动支付DEMO及SDK

集成流程文档

设置URL Scheme、添加相关类库,设置开发环境,详细参考DEMO及集成流程文档。

需要特别注意的点:

①Header Search Paths的设置

②白名单设置

③私钥生成

RSA私钥及公钥生成 支付宝集成获取私钥与公钥

在支付宝支付sdk demo里提供了相关工具

2.微博登录

(1)发起微博授权请求,切换到微博

(2)授权操作后返回客户端进行相关处理

在weibo sdk的协议方法“- (void)didReceiveWeiboResponse:(WBBaseResponse *)response”中判断操作行为及状态,通过认证申请后即可去请求获取用户信息,获得用户信息后再进行登录相关处理即可

3.微博分享

微博分享其实就是发微博操作,对应的是一个接口,不像微信分享那样会跳转过去,在微信里确认输入信息后分享,所以在应用里需要构建一个页面,将分享到微博的信息先展示预览出来,供用户修改文字等等,点击确定再执行分享操作。根据分享对象构造相关参数调用接口即可

这里需要注意三点:

①微博字数限制为140字,超过无法分享。

②分享操作前需要更新access_token,防止过期导致无法进行相关操作

响应方法didReceiveWeiboResponse中拿到申请认证返回结果,刷新存储access_token等值即可

③分享时图片参数可以是一个url或者WBImageObject,二选一即可,如果二者都有值,则url被忽略。

4.微信登录

(1)请求授权临时票据code参数

code在获取access_token后失效

(2)通过code获取acces_token

(3)根据上一步获得的access_token及openId请求获取用户信息,实现相关业务逻辑

5.微信分享

微信分享有分享到朋友圈(WXSceneTimeline)、分享到对话(WXSceneSession)两种,最常见的也就是图文类型的网页。

点击分享的网页,调起客户端则在微信的协议方法“onReq”里进行处理,根据相应规则逻辑在应用内跳转页面等等。

6.微信支付

微信支付开发文档

参考微信支付提供的demo进行接入,设计的是客户端与后台交互,由后台来调用微信支付接口,主要流程如下:

(1)提交订单数据

选择商品并填写相关信息后提交订单,后台返回订单数据(后台调用微信的统一下单api),后续支付时需要用到。

(2)调起微信准备支付

根据之前拿到的订单数据(订包括单id),向后台发起微信支付的请求,拿到请求结果后调起微信客户端准备支付

(3)支付完成返回客户端进行相关处理

在“-(void) onResp:(BaseResp*)resp”方法判断支付操作状态,进行相应处理,例如支付成功后跳转到订单详情页给用户展示订单及支付信息等等。

7.支付宝支付

同样,参考支付宝支付demo进行接入,客户端与后台交互,由后台来调用支付宝支付的接口,主要步骤如下:

(1)提交订单数据

选择商品并填写相关信息后提交订单,后台返回订单数据。

(2)调起支付宝客户端或网页准备支付

根据之前拿到的订单数据(订包括单id),向后台发起支付宝支付的请求,拿到请求结果后调起支付宝客户端准备支付,若没有安装支付宝,则调用支付宝网页进行支付。

(3)支付完成返回客户端进行相关处理

在支付结果回调block中根据支付操作状态进行相关业务逻辑处理

在AppDelagate的“openURL”及“handleOpenURL”中判断支付宝支付操作,切回应用时在回调block中做相关业务逻辑处理

iOS开发笔记14:微博/微信登录与分享、微信/支付宝支付的更多相关文章

  1. iOS开发---集成ShareSDK实现第三方登录、分享、关注等功能。

    (1)官方下载ShareSDK IOS 2.9.6,地址:http://sharesdk.mob.com/Download (2)根据实际情况,引入相关的库,参考官方文档. (3)在项目的AppDel ...

  2. iOS开发笔记7:Text、UI交互细节、两个动画效果等

    Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...

  3. IOS开发笔记 IOS如何访问通讯录

    IOS开发笔记  IOS如何访问通讯录 其实我是反对这类的需求,你说你读我的隐私,我肯定不愿意的. 幸好ios6.0 以后给了个权限控制.当打开app的时候你可以选择拒绝. 实现方法: [plain] ...

  4. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法   单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h" ...

  5. iOS开发笔记--什么时候调用layoutSubviews

    iOS开发笔记--什么时候调用layoutSubviews 分类: iOS2014-04-22 16:15 610人阅读 评论(0) 收藏 举报 今天在写程序时候遇见layoutSubviews触发时 ...

  6. IOS开发笔记(4)数据离线缓存与读取

    IOS开发笔记(4)数据离线缓存与读取 分类: IOS学习2012-12-06 16:30 7082人阅读 评论(0) 收藏 举报 iosiOSIOS 方法一:一般将服务器第一次返回的数据保存在沙盒里 ...

  7. 【Swift】iOS开发笔记(二)

    前言 这个系列主要是一些开发中遇到的坑记录分享,有助于初学者跨过这些坑,攒够 7 条发一篇. 声明  欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯 ...

  8. 菜鸟手下的iOS开发笔记(swift)

    在阳春4月的一天晨会上,有一个老板和蔼的对他的一个菜鸟手下说:“你既然会Android,那你能不能开发iOS?” 不是说好的要外包的吗?内心跌宕,但是表面淡定的菜鸟手下弱弱的回道:“可以试试”. 第二 ...

  9. 使用ShareSDK完成第三方(QQ、微信、微博)登录和分享

    这几天遇到一个需求:做第三方登录和分享.遇到了一些坑,把整个过程整理记录下来,方便他人,同时也捋一下思路. 当时考虑过把每个平台的SDK下载下来,一个一个弄,一番取舍后决定还是用ShareSDK.这里 ...

随机推荐

  1. HtmlAgilityPack搭配 ScrapySharp或HtmlAgilityPack.CssSelectors

    Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂的类库,但它的功能确不弱,为解析DOM已经提供了足够强大的功能支持,可以跟jQuery操作DOM媲 美:)Html A ...

  2. nested exception is org.hibernate.QueryException: could not resolve property

    SSH框架出现了下面的错误: nested exception is org.hibernate.QueryException: could not resolve property 检查了hbm.x ...

  3. Android录音应用

    首先是xml布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xm ...

  4. [教学] Firemonkey 之 StringGrid Header 自订显示

    StringGrid Header 高度设定方法: uses FMX.Header; procedure TForm1.StringGrid1ApplyStyleLookup(Sender: TObj ...

  5. Win7 电脑设置临时网络,无法加入网络;internet禁止网络共享

    1.电脑的本地连接中的共享,被管理员禁用.网上试了一些方法,都不可行.最后想到修改注册表.我找到了注册表中的shared选项.将0修改为1.则实现了本地连接的共享. 2.但是即便如此,由本地连接分享出 ...

  6. [moka同学笔记]Yii2.0循环查询并对结果累加求和

    在控制器中查询好数据  $model 在视图中输入 <?php foreach($model as $key=>$r):?> <tr class="text-cent ...

  7. php学习5-时间和日期

    如果时间时区不对,使用时间是要先设定时区,使用date_default_timezone_set() 设置新时区 date_default_timezone_set('Asia/Shanghai'); ...

  8. 《高可用MySQL》1 – Windows环境下压缩版MySQL安装

    近日在读O’REILIY系列的<高可用MySQL>, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容.Master-Slave这东西吧,在许多公司都是标配,开发中基本天 ...

  9. Lucene.net站内搜索—6、站内搜索第二版

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  10. java内存模型-锁

    锁的释放-获取建立的 happens before 关系 锁是 java 并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息.下面是锁释放-获取的示 ...