Alipay, China's leading third-party online payment solutionAlipay, China's leading third-party online payment solution

iOS

此章节为您提供银行 SDK 的集成指南,帮助您在买家进行支付时快速开始手机 App 内的支付相关页面渲染。最优体验与跳端体验集成流程一致。

集成准备

在您开始集成前,确保已完成以下环境准备工作:

  • 已安装 Xcode 12 或更高版本。
  • 确保 iOS 系统为 iOS 11 及以上版本。
集成步骤

请根据以下步骤完成集成:

1

集成 SDK 资源包

商户客户端

请查阅 集成 SDK 资源包 文档。

 

2

展示支付方式

商户客户端

在您通过联系支付宝技术支持团队获取到可用支付方式后,您可以按照以下维度呈现支付方式:

  • 单一银行展示:将支付方式逐个平铺展示。
  • 银行类型展示:根据银行类型聚合的维度分类展示支付方式,例如,银行 App、在线网银、银行转账。
  • 银行国家展示:根据国家聚合的维度分类展示支付方式,例如,泰国银行、印尼银行。

三种维度的用户体验图请参考 User experience

【注意】在银行类型展示模式下,Web 端不支持展示银行 App 类别的支付方式,仅 WAP 和 App 端支持展示。

3

通过 AMSCashierPayment构造函数创建 SDK 实例:

商户客户端
  • 初始化收银台实例,包含以下参数:
    • configuration:必传,AMSCashierPaymentConfiguration 类型的一个对象,包含所有配置参数。
  • 创建 AMSCashierPaymentConfiguration 类,包含以下参数:
    • ​​locale: 选传,NSString 类型。商户客户端识别用户浏览器使用的语言种类,并传入浏览器语言信息,SDK 根据此信息提供对应语言的页面。目前 SDK 支持以下 3 种多语言,如果传入的值不是以下 3 种,将提供英语页面:
      • en_US:英语
      • in_ID:印尼语
      • th_TH:泰语
    • options: 选传,NSDictionary 类型,用于设置是否采用默认loading样式以及是否使用沙箱环境,支持的值包括:
      • "sandbox", "true":沙箱环境
      • "sandbox", "false":生产环境
      • "showLoading", "true":使用默认 loading 样式
      • "showLoading", "false":不使用默认 loading 样式
  • 实现 AMSPaymentProtocol 的协议,用于后续流程中对应事件发生时的处理,包含以下方法:
    • onEventCallback:收银台支付事件回调函数,返回事件码(eventCode)和事件具体信息(eventResult)。
  • 实现 AMSLoggerProtocol 的协议,用于管理日志输出,包含以下方法:
    • logWithName:默认输出日志的回调函数。
创建收银台实例的配置项示例:
Objective-C
Editor
4

发起支付会话创建请求

商户服务端

商户客户端自行监听支付按钮的点击事件。当买家选择支付方式并点击支付按钮后,商户服务端向 Alipay 服务器发起 支付会话创建 请求。一旦接收到 支付会话创建 请求的响应,将响应中的 paymentSessionData 值用于步骤五。您需要在请求中传入以下参数:

  • paymentRequestId:商户侧支付宝的交易号。

  • productCode:产品码,传入固定值  CASHIER_PAYMENT

  • paymentNotifyUrl:支付结果通知地址。

  • paymentRedirectUrl:支付完成后回跳的商家结果页地址
  • paymentAmount:需要向买家收取的支付金额
  • order.orderAmount: 商家侧的订单金额。若出现促销打折,orderAmount金额可能不等于 paymentAmount。
  • order.orderDescription: 订单描述
  • order.referenceOrderId: 商户侧自己的订单号。若商家侧一笔订单存在多次请求支付宝支付的情况下,referenceOrderId和paymentRequestId建议是一对多的关系。
  • paymentMethod.paymentMethodType:指定为 BANK
  • paymentMethod.paymentMethodMetaData:
    • 若集成单一银行模式,则指定 bankName 为银行名称。
    • 若集成银行类型聚合模式,则指定 paymentMethodCaregory 为支付方式类型。有效值为  BANK_TRANSFERMOBILE_BANKING_APPONLINE_BANKING
    • 若集成国家聚合模式,则指定 paymentMethodRegion 为国家。有效值为 TH 和 ID
单一银行模式
JSON
Editor
银行类型聚合模式
JSON
Editor
国家聚合模式
JSON
Editor
5

渲染支付页面

商户客户端

使用实例对象中的 createComponent:

  • 使用 sessionData 参数创建配置对象: 将步骤 4 获取的  paymentSessionData 字段的完整数据传入 createComponent 的 sessionData 参数。
  • 调用 createComponent() 函数初始化 SDK。

 

调用实例对象中的 onDestroy() 函数进行 SDK 组件的资源回收,请在以下两种场景中调用:

  • 用户退出支付页面时,需要回收 支付会话创建 中的组件资源。
  • 用户发起多笔支付时,需要回收上一次 支付会话创建 中的组件资源。
调用 createComponent()
Objective-C
Editor
6

获取支付结果

商户服务端

当交易到达终态后,支付宝会通过 支付结果通知 发送到您在支付会话请求里通过 paymentNotifyUrl 传入的支付结果通知地址。若您收到支付宝的异步通知,需要您在返回中按照 示例代码 格式返回响应。同时,建议您在后端通过 查询支付结果 接口主动查询交易状态。

事件码

SDK 提供的状态码如下:

  • SDK_START_OF_LOADING:创建组件时,loading 动画开始显示。

  • SDK_END_OF_LOADING:创建组件时,loading 动画结束显示。

 

SDK 提供的错误码如下: 

  • SDK_INTERNAL_ERROR:SDK 内部错误,请联系技术支持。

  • SDK_CREATEPAYMENT_PARAMETER_ERRORAMSCashierPayment函数传入参数异常,请检查参数是否正确传递并重试请求。

  • SDK_CALL_URL_ERROR:唤起支付方式客户端异常,请联系技术支持。

  • SDK_INTEGRATION_ERROR:相关依赖包缺失,请检查依赖代码是否正确添加并重试。