iOS 2017新版支付宝集成详解和坑

1,282 阅读3分钟
原文链接: blog.csdn.net

1.iOS 集成流程

说实话,新版的官方指南,比老板的好多了,老板的集成总是遇到很多坑,新版的集成比较顺利, 这里就不在一一介绍集成过程了,

关于openssl/asn.h file not found的问题

这里写图片描述

这里写图片描述

iOS集成流程,官方指南

2.在开发者账号的真正公司项目中如何使用支付宝支付功能

有两种路径做处理

1.客户端最快,最方便的处理方式,就是按照官方的说明,所有信息都在服务端处理

后台需要处理的事宜:

  1. 设置商品信息
  2. 将商品信息按要求拼接成字符串
  3. 用私钥将商品信息签名 .
  4. 将加签成功后的字符串格式化成订单字符串,返回给客户端orderStr

这里写图片描述

signedString签名字符串base64编码和UrlEncode处理(官方demo),这种方式,不要忘记了让后对对signedString进行这两步处理

这里写图片描述

这里写图片描述

这里写图片描述

客户端需要处理的事宜:

  1. 获取后台返回的订单字符串,调用支付宝支付接口发起支付请求
  2. 处理支付宝返回的支付结果

// 完成支付宝支付需要的四个文件

这里写图片描述

// 支付的类中导入头文件
#import <AlipaySDK/AlipaySDK.h>
#import "Order.h"
// 支付点击事件
- (void)payBtnClick { "下面的代码" }

// 向后台发起网络请求获取signedString,进一步处理
这里写图片描述

就能调用成功了

2.商品信息拼接在客户端处理,加签过程在后台处理

// 支付点击事件
- (void)payBtnClick { "下面的代码" }

1.拼接商品信息转给后台

这里写图片描述

2.将商品信息传递给后天,让后台加签,返回加签字符串,自己做处理后发送请求

这里写图片描述

3.上图中红框的问题,就是本次实际开发中遇到的坑 AL140247报错

后台加签时,多signedStrign只进行了base64编码,没有进行UrlEncode处理,总是报错

AL140247这个错误

这里写图片描述

然后百度

这里写图片描述

这里写图片描述

进行下面处理后就没有问题了

这里写图片描述

其他问题:难点就是商品订单的组装拼接,传入后台用私钥加签,对加签的字符串base64和UrlEncode处理,然后就是讲商品信息也进行UrlEncode,最后就是拿到处理后的商品信息和加签串按格式拼接,向支付宝发起请求

调用支付宝支付,支付宝闪退

// 参数一定要正确

这里写图片描述

这里写图片描述

这里写图片描述

关于支付结果的回调提示用户支付结果的问题

  1. 用户手机上安装了支付宝APP的情况–AppDelegate.m中,支付结果的回调会走这里的方法,支付成功的时候发通知,方便界面收到支付成功的界面候进行跳转

这里写图片描述

这里写图片描述

这里写图片描述

收到通知后处理相应逻辑

这里写图片描述

2.如果用户没有安装支付宝app,就会调起网页的支付宝界面支付,网页支付成功的回调走的不是appdelegate的方法,而是点击支付按钮支付时写的方法

这里写图片描述

这里写图片描述

这里写图片描述

网页支付成功的回调走的不是appdelegate的方法,而是支付时写的方法

这里写图片描述

重复支付,很少遇到这种情况:AL138869

这种情况是,此种订单用户已经完成了操作

这里写图片描述