开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
文档中心
网页&移动应用 
支付产品
当面付
app支付
接入指南
基础功能
扩展功能
集成工具
api 列表
相关资料
手机网站支付
电脑网站支付
刷脸付
预授权支付
商家扣款
订单码支付
私域产品
公域产品
营销产品
资金产品
会员产品
信用产品
安全产品
广告产品
其他通用产品
开发 > 服务端 > 支付产品 > app支付 > 接入指南 > 基础功能 > ios 集成流程
已更新
文档更新记录 >
收藏
订阅更新
我的文档
设置
接入检测
即可查看检测结果)
若有未通过的接入检测项,接口将无法调通
1 导入代码
1.1 通过 cocoapods 导入
c
复制代码
pod 'alipaysdk-ios'
1.2 手动导入
启动 ide(如 xcode),把 ios 包 中的压缩文件中以下文件拷贝到项目文件夹下,并导入到项目工程中。
c
复制代码
alipaysdk.bundle
alipaysdk.framework
在 build phases 选项卡的 link binary with libraries 中,增加以下依赖:

其中,需要注意的是:
如果是 xcode 7.0之后的版本,需要添加 libc .tbd、libz.tbd。
如果是 xcode 7.0之前的版本,需要添加 libc .dylib、libz.dylib(如下图所示)。

2 增加头文件引用
在需要调用 alipaysdk 的文件中,增加头文件引用。
3 组装请求信息
注意:这一步应在 商家服务端 完成,商家服务端直接将组装和签名后的请求串 orderstring 传给客户端,客户端直接传给 sdk 发起请求。文档和 demo 是为了示例效果在客户端实现。
详细可查看 demo 中示例文件:
alisdkdemo\apviewcontroller.h
alisdkdemo\apviewcontroller.m
alisdkdemo\order.h
alisdkdemo\order.m
4 配置返回 url 处理方法
本步骤指引开发者配置支付宝客户端返回 url 处理方法(外部存在支付宝客户端,支付宝客户端将处理结果通过 url 返回)。
如示例 alisdkdemo\apappdelegate.m 文件中,增加引用代码:
@implementation appdelegate 中以下代码中的 nslog 改为实际业务处理代码:
5 针对demo的运行注意
1以下文件供示例签名所在客户端本地使用。实际场景下请商家把私钥保存在服务端,在服务端进行支付请求参数签名。
alisdkdemo\util 及下面所有文件
alisdkdemo\openssl 及下面所有文件
libcrypto.a
libssl.a
2如果遇到运行后报错,类似于以下提示信息:
那么需要打开报错了的文件,增加头文件。
3如果商家要在某个文件中使用支付宝的开发包类库,需增加引用头文件。
4点击项目名称,点击 build settings 选项卡,在搜索框中,以关键字 search 搜索,对 header search paths 增加头文件路径:$(srcroot)/项目名称。如果头文件信息已增加,可不必再增加。

5点击项目名称,点击 build phases 选项卡,在 link binary with librarles 选项中,新增 alipaysdk.framework 和 systemconfiguration.framework 两个系统库文件。如果商家项目中已有这两个库文件,可不必再增加。

6点击项目名称,点击 info 选项卡,在 url types 选项中,点击 ,在 url schemes 中输入 alisdkdemo。alisdkdemo 来自于文件 apviewcontroller.m 的 nsstring *appscheme = @"alisdkdemo";注意:这里的 url schemes 中输入的 alisdkdemo,为测试 demo,实际商家的 app 中要填写独立的 scheme,建议跟商家的 app 有一定的标示度,要做到和其它的商家 app 不重复,否则可能会导致支付宝返回的结果无法正确跳回商家 app。

6 配置基本信息
打开 apviewcontroller.m 文件,对以下 2 个参数进行编辑。
ios 基本信息配置表:
参数
含义
appid
应用的 appid,调用 api 时用来识别开发者。可查看 创建应用并获取appid

private_key
应用私钥,pkcs8 格式。可查看 配置应用

注意:这些参数配置仅作为客户端示例使用。商家实际支付过程中参数需要放置在服务端,且整个签名过程必须在服务端进行。
7 示例代码运行逻辑
1调用 order.m 里的函数 description 将商品信息拼接成字符串作为待签名字符串,如:
2使用类 creatersadatasigner,调用 signstring 签名函数做签名,如:
3把签名结果赋值给参数 sign,并把 sign 加入之前的待签名数组中,此时得到的便是要请求给支付宝的全部数据。
4调用 (alipaysdk *)defaultservice 类的支付接口函数,唤起支付宝支付页面。
appscheme 为 app 在 info.plist 注册的 scheme。
5当这笔交易被买家支付成功后支付宝收银台上显示该笔交易成功,并提示用户“返回”。此时在 apappdelegate.m 的 - (bool)application:(uiapplication )application openurl:(nsurl )url sourceapplication:(nsstring )sourceapplication annotation:(id)annotation 中调用获取返回数据的代码(ios 9.0 及以上需要在  - (bool)application:(uiapplication )app openurl:(nsurl )url options:(nsdictionary *)options 中执行):
注意:
同步返回数据校验逻辑可查看 同步通知说明
sdk 付款存在以下两种模式,商家测试人员需要关注这两类场景完成测试。
若用户已安装支付宝客户端,则直接跳转到支付宝客户端进行付款。
若用户未安装支付宝客户端,则在本 sdk 内部进行 h5 支付。
8 针对 swift 接入 alipaysdk 的问题
如果项目使用 swift 为开发语言,需要添加桥接文件,例如 bridging-header.h。

同时,在项目 build settings 中设置桥接文件的位置(如下图所示)。

添加成功后,在桥接文件中写入 #import 。如此,在需要调用 alipaysdk 的地方,即可直接使用,具体调用方式参照 oc。
注意:运行时如果发生以下报错,则在桥接文件中,写入#import

9 ios 调用说明
接口名称:alipaysdk
接口描述:提供支付功能。
alipay 接口主要为商户提供订单支付功能。接口所提供的方法,如下表所示:
方法名称
方法描述
(alipay *)defaultservice;
获取服务实例。
-(void)payorder:(nsstring *)orderstr fromscheme:(nsstring *)schemestr callback:(completionblock)completionblock;
支付并通过回调返回结果。
-(void)processorderwithpaymentresult:(nsurl*)resulturl standbycallback:(completionblock)completionblock;
处理支付宝客户端返回的 url(在 app 被强行停止运行时,通过这个方法获取支付结果)。
9.1 快捷订单支付 ios
方法名称:pay 方法
方法原型:(void)payorder:(nsstring )orderstr fromscheme:(nsstring )schemestr callback:(completionblock)completionblock;
方法功能:提供给商户快捷订单支付功能。
参数名称
参数描述
nsstring* scheme
商家程序注册的 url protocol,供支付完成后回调商家程序使用。
(completionblock)completionblock
快捷支付开发包回调函数,返回免登、支付结果。本地未安装支付宝客户端,或未成功调用支付宝客户端进行支付的情况下(走 h5 收银台),会通过该 completionblock 返回支付结果。相应的结果可查看 同步通知说明
nsstring* orderstring
app 支付请求参数字符串,主要包含商户的订单信息,key=value 形式,以&连接。
orderstr 示例如下,参数说明可查看 alipay.trade.app.pay(app支付接口2.0接口) 请求参数说明。
9.2 处理客户端返回 url
方法名称:处理客户端方法
方法原型:-(void)processorderwithpaymentresult:(nsurl*)resulturl standbycallback:(completionblock)completionblock;
方法功能:设备已安装支付宝客户端情况下,处理支付宝客户端返回的 url。
注意:该方法必须实现,否则将会导致在安装手机支付宝的情况下,支付结果无法正常同步返回。
参数名称
参数描述
nsurl *resulturl
支付宝客户端回传的 url。
completionblock completionblock
本地安装了支付宝客户端,且成功调用支付宝客户端进行支付的情况下,会通过该 completionblock 返回支付结果。
注意:请在 appdelegate 的 - (bool)application:(uiapplication *)application openurl:(nsurl *)url sourceapplication:(nsstring *)sourceapplication annotation:(id)annotation 中调用该方法,ios9.0 及以上请在 - (bool)application:(uiapplication *)app openurl:(nsurl *)url options:(nsdictionary *)options 中调用该方法,具体可查看 sdk & demo 获取
9.3 回调接口
在支付过程结束后,会通过 callbackblock 同步返回支付结果(callbackblock 是调用支付同步的回调)。支付结果中参数的提取,必须通过 completionblock 获取,禁止开发者私自解析支付结果返回的 url,客户端返回回调信息可查看 同步通知说明
10 universal links 配置
app token 校验功能在 ios 系统下依赖 universal link 的引入,详情可查看 universal links 配置
11 联调问题排查
联调过程中的问题可查看 常见问题
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图