更新时间:2024-10-17 11:15:45文档更新记录 >配置项检测工具收藏订阅更新我的文档设置接入检测(即可查看检测结果)若有未通过的接入检测项,接口将无法调通去登录返回文档1 导入代码1.1 通过 cocoapods 导入c 复制代码91pod 'alipaysdk-ios'1.2 手动导入启动 ide(如 xcode),把 ios 包 中的压缩文件中以下文件拷贝到项目文件夹下,并导入到项目工程中。c 复制代码912alipaysdk.bundlealipaysdk.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.m4 配置返回 url 处理方法本步骤指引开发者配置支付宝客户端返回 url 处理方法(外部存在支付宝客户端,支付宝客户端将处理结果通过 url 返回)。如示例 alisdkdemo\apappdelegate.m 文件中,增加引用代码:将 @implementation appdelegate 中以下代码中的 nslog 改为实际业务处理代码:5 针对demo的运行注意1以下文件供示例签名所在客户端本地使用。实际场景下请商家把私钥保存在服务端,在服务端进行支付请求参数签名。○alisdkdemo\util 及下面所有文件○alisdkdemo\openssl 及下面所有文件○libcrypto.a○libssl.a2如果遇到运行后报错,类似于以下提示信息:那么需要打开报错了的文件,增加头文件。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* orderstringapp 支付请求参数字符串,主要包含商户的订单信息,key=value 形式,以&连接。orderstr 示例如下,参数说明可查看 请求参数说明: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 中调用该方法,具体可查看 demo。9.3 回调接口在支付过程结束后,会通过 callbackblock 同步返回支付结果(callbackblock 是调用支付同步的回调)。支付结果中参数的提取,必须通过 completionblock 获取,禁止开发者私自解析支付结果返回的 url,客户端返回回调信息可查看 同步通知说明。10 universal links 配置app token 校验功能在 ios 系统下依赖 universal link 的引入,详情可查看 universal links 配置。11 联调问题排查联调过程中的问题可查看 常见联调问题。