大多数浏览器和
Developer App 均支持流媒体播放。
-
实现 Apple Pay 和订单管理
Apple Pay 为人们在 iOS、iPadOS 和 watchOS App 以及网页上进行支付提供了一种轻松、安全的方式。我们将带您了解整个 Apple Pay 的实现流程,包括如何表明支持 Apple Pay、请求付款和处理更新,以及在付款流程结束时添加订单详情,从而帮助人们跟踪他们的购买项目。
资源
- Apple Pay
- Apple Pay JS
- Apple Pay on the Web
- Apple Pay on the Web Interactive Demo
- ApplePayPaymentRequest
- Example Order Packages
- Human Interface Guidelines: Apple Pay
- Wallet Orders
相关视频
WWDC23
-
下载
大家好我叫 Katie 欢迎参加本次 有关实现 Apple Pay 和订单跟踪的讲座 我们来看看 今天的内容安排 首先 我会带你了解一下 使用 Apple Pay 所需要的基础知识 然后 我将介绍 如何创建付款请求 以及如何对付款单中的更改 做出响应 你也可以在支付流程的末尾 添加订单详情 这样用户就可以 跟踪自己的订单 利用订单详情 “钱包”将能够 检索订单数据包 我后面会介绍 如何进行构建 最后 我将介绍 如何更新订单 我们开始吧 Apple Pay 是一种简单 安全且私密的支付方式 如果你是一名 网站或 App 的开发者 你可以使用 Apple Pay 来提高自己的转化率 并改善用户体验 开始时需要 创建两个必要的项目 第一个是标识符 用于唯一标识你 作为可以接受付款的商家的身份 要创建标识符 应前往 Apple Developer 门户网站的标识符部分 常规格式为 反向 DNS 以“merchant”一词开头 使用你美观时尚的 新商家标识符 创建付款处理证书 简而言之 Apple Pay 借助所注册的商家标识符 和公共证书 对每个有效负载 进行加密 这一有效负载随后 可以在你这一端 进行解密和处理 然后 可以返回 付款究竟是成功还是失败 有关处理付款的 具体细节 请咨询你的 支付服务商 针对 App 和网站 设置 Apple Pay 的步骤有所不同 要针对在 App 上使用的情况 设置 Apple Pay 只需在 Xcode 中前往“Signing & Capabilities”标签页 并在 Apple Pay 功能下 添加你的商家标识符 如果是构建网站并希望 在上面设置 Apple Pay 还需要一些额外步骤 你必须注册 用于处理 Apple Pay 交易的域 这一步可以在 Apple Developer 门户网站的标识符部分完成 在那里 你可以创建 一个 Apple Pay 商家 身份证书 它关联你之前创建的商家标识符 该证书用于 向 Apple Pay 服务器 验证你的会话 不管你是进行 App 还是网页集成 如果针对的是 电子商务平台 或支付服务商 请查看他们的 具体说明 因为他们可能会 简化其中的一些步骤 现在 我们来看看 实际中如何实现 Apple Pay 在显示与 Apple Pay 相关的内容之前 应先检查一下 用户在当前配置下 能否进行支付 “Capabilities”指示了 付款单当前可以接受的 付款类型 例如 3D Secure 信用卡或借记卡 稍后在配置付款请求时 你要指定所能接受的功能 你可以检查 用户已有的网络 请记住 如果当前没有可用的卡 用户可以添加其他卡 在了解到用户可以进行支付后 现在来显示 Apple Pay 按钮 务必根据用户需要采取的操作 选择最合适的号召性用语 和按钮类型 在醒目显眼处显示 Apple Pay 按钮 并且作为第一个付款选项 Apple Pay 按钮 要完全本地化 并且还可以针对用户的设置 进行相应调整 要想通过 UIKit 在 App 中 显示 Apple Pay 按钮 首先应创建 PKPaymentButton 以指定按钮的类型和样式 类型描述了付款的种类 例如 “Donate with Apple Pay” 或“Continue with Apple Pay” 样式控制着按钮的外观 例如是浅色还是深色 为按钮选择自动样式 可根据用户的设置 进行动态调整 在网页上 请使用 JavaScript Apple Pay 按钮 要添加该按钮 首先请将按钮脚本 载入内容交付网络上的网页中 通过 JavaScript Apple Pay 按钮 你还可以指定类型、 样式和本地化设置 你还可以使用 CSS 进一步自定 按钮的尺寸 我们需要创建一个付款请求 这样付款单就能知道 后面会发生什么 在 App 中 这一点可通过创建 PKPaymentRequest 的方式来实现 根据你的需求 可以在付款请求上设置 多个栏位 但基本栏位一般包括 你先前创建的商家标识符 可以接受的付款类型 以及付款的国家或地区 和货币代码 请指定你接受的支付网络 应按照优先顺序指定 这样 Apple Pay 就可以从一系列卡中 选取首选的支付网络 最后 作为本交易的一部分 将会提供摘要项目 我们来仔细看看 摘要项目 为此 不妨设想 你在运营一家宠物用品在线商店 你希望顾客能够 通过 Apple Pay 结账 在这些摘要项目中 包含了顾客已选项目的总费用 但要减去所有折扣 它们应该有助于 向顾客细化费用 最后一项摘要项目 始终是总计 而它对应的标签必须是 收取款项的公司 在这里的阵列中 至少应设置 一个项目 现在 我们准备显示付款单 首先 我们创建 PKPayment AuthorizationViewController 放在刚刚设置的请求中进行发送 你要负责显示 返回给你的 viewController 现在 我们来看看 要设置的委托 PKPaymentAuthorization ViewControllerDelegate 涉及付款单如何向你 传达变更信息 例如在用户 选择新电子邮件地址 或授权进行交易时 你应该对适用的变更 做出响应 但是 针对关闭付款单的情况 必须由你来负责 为此 应实现 paymentAuthorizationViewControll erDidFinish 你始终应尽早向用户返回错误 并附上有用的描述 以帮助他们解决问题 举例来说 如果用户的 新送货地址有问题 你应该在 PKPaymentRequest ShippingContactUpdate 的一部分中返回错误 当用户对详细信息感到满意 并使用面容 ID 触控 ID 或密码 继续交易时 系统将调用 didAuthorizePayment 你需要自行处理 发送给你的 PKPayment 或者将它传送给 付款处理机构 此时 必须调用 包含正确结果的处理程序 iOS 16 支持 在 SwiftUI 中 轻松创建 Apple Pay 按钮 在创建 “Pay with Apple Pay”按钮时 你需要做的只是 传入付款请求 而当用户与该按钮交互时 会自动显示付款单 按钮的类型和按钮的样式 也是可以设置的 后者是选择性的 付款授权的变更 有点类似于 我们在上一张幻灯片中 看到的委托 我们来看看如何 响应用户更新 用户刚刚 授权了一笔付款 而付款授权 阶段变更 将这个信息通知给了你的 App 你的 App 随即向你的服务器 发送付款信息 并让服务器处理这笔付款 请检查服务器结果 是否指示成功 并处理服务器返回的 任何错误 从而确保仍然能调用 包含相应错误的 结果处理程序 如果服务器结果 指示成功 则以相应的授权结果 完成付款 返回的结果中 必须说明 在尝试处理付款时 发生了什么 比如邮寄地址无效 在大多数情况下 付款要么成功 要么失败 如果付款失败 你也可以返回 一个或多个错误 按重要性排序 这会显示给用户 以便他们可以尝试 重新交易 该授权结果中 有时可能包含 订单详情 这一点我们会稍后介绍 现在 我们来看看 如何在网页上完成这项工作 W3C Payment Request API 是一种开放标准 可供你用来处理 网页上的付款 你可以创建 PaymentRequest 对象 并为它填充方法 在这里你可以指定 Apple Pay 可用 也可以填充详情 其中包含有关交易的信息 例如总计和货运方式 还可以填充相关选项 以明确你希望用户提供的信息 你必须在自己的服务器上 完成商家验证 因此 请创建一个新的商家会话 并将它传给 complete 函数 就像原生的那样 你可以响应 用户在付款单中 所进行的互动 同时 你还需要处理 用户认证时的 付款响应 在与 Apple Pay 完全集成之后 现在我们可以开始 实际构建订单 在 iOS 16 中 我们推出了订单跟踪功能 顾客现在可以 查看订单详情 和跟踪信息 这一切都可以在“钱包”App 中完成 他们能够即时了解 什么时候可以取货 订单是否已配送 是否有任何问题 或者会收到通知 因此 在成功地 将宠物店业务 与 Apple Pay 进行集成之后 你可能还希望 添加订单跟踪功能 我们来看看具体操作 你会注意到订单的起步 与设置 Apple Pay 较为相似 我们回到 Developer 门户网站的 标识符部分 并创建一个订购类型标识符 它将你的组织 标识为提供订单信息的实体 与商家标识符一样 我们建议采用类似的 反向 DNS 式命名方案 这次以“order”一词开头 接下来 在 Developer 门户网站的证书部分 创建订购类型 ID 证书 你将使用证书 来构建订单数据包 更新订单 以及发送通知 完成设置后 我们可以在 Apple Pay 购买流程内 将订单添加到钱包中 为此 我们回过来看一下 我们简单的付款处理流程 之前我们对此有过介绍 我们已经知道 付款信息会发送到服务器 进行处理 如果成功处理了付款 服务器就应该会创建订单 要想在返回结果中 支持订单跟踪 还应该包含 一些有关所创建的订单 的详细信息 这些订单详情 使得设备能够 从服务器中 异步请求订单 服务器随后 将订单数据包转给设备 并随即显示在钱包中 现在 我们来仔细看看 需要在 PKPayment 授权结果的一部分中 返回的订单详情 订单详情 由四个栏位组成 订购类型标识符 就是你之前创建的 那个标识符 你应该创建一种 订单标识方式 但它在订购类型 标识符的范围内 必须具有唯一性 请提供你网页服务的 URL 最后 服务器需要生成 一个安全认证令牌 这是用户设备 与你服务器之间 的共享密钥 在请求订单数据包时 设备将使用这个令牌 来验证自己的身份 本示例的 初始部分看上去与 我们之前看到的 常规付款验证流程 非常类似 我们在上面添加一下订单详情 首先从 serverResult 中进行抓取 然后 创建 PKPaymentOrderDetails 对象 从而设置订购类型 ID 订单 ID、网页服务 URL 及认证令牌 将它分配给 PKPayment 授权结果 在网页上 使用 W3C Payment Request API 来添加订单详情 也比较简单 与之前相似 从服务器结果中 提取订单详情 返回这些订单详情 以及用来完成付款 的相关数据 在订单详情 返回到设备后 这些信息将在 用户的每台设备之间 进行同步 每台设备都会从服务器中 请求订单数据包 上面会提供订单详情 认证令牌的确认方式是 将验证令牌 与随订单详情一起发送的令牌 进行匹配 如果认证令牌匹配 则将订单数据包返回给设备 现在 订单已就绪 随时可以在该设备的 钱包中显示 如果发现问题 应尽快对订单进行修复 以便在设备发出请求时 随时可提供订单 如果服务器未 返回订单 设备将尝试 以指数退避的方式 进行多次重试 我们看到 该订单数据包 已经被多次提到了 但它究竟是由什么构成的呢 订单是以订单数据包的 形式进行分发的 订单数据包中包含了 所需的所有信息 用于向用户显示订单 并证明该订单来自你 它的里面有 一个 JSON 词典 用于描述你的订单 诸如标志等图像 以及订单中 每一个项目的内嵌图像 有关创建图像的指南 请参考 《Human Interface Guidelines》 以及各种推荐来源 请同时提供本地化的资源 比如字符串文件 要注意总订单大小 并且只提供相关内容 所有这些内容都将 用另一个 JSON 词典来描述 称为“清单” 你可以将它想象成 类似目录一样的东西 它里面包含有 对订单数据包中所有文件的引用 条目的关键 是相对文件路径 值则是文件的 SHA256 校验和 该校验和与解析中 使用的校验和有所不同 现在 我们要做的是 签署数据包 以证明它的真实性 签名会验证订单数据包 来自可靠来源 也就是你 这是清单的一种 分离式加密信息签名 与解析相同 签署清单时使用的私钥 应与订购类型 ID 证书 以及与 Apple Worldwide Developer Relations 媒介证书相关联 从而确保使用的是 证书的续订版本 要完成订单的构建 只需压缩数据包 并将文件扩展名 更改为 order 现在到更新订单的时候了 订单信息经常会随时间发生更改 例如 顾客早先下达的 宠物食品订单 现在正在路上 由于支持自动更新 你可以快速 安全地将这次更新 提供给顾客 现在 顾客的钱包中 有了他们的宠物用品订单 该订单指示它支持更新 因此 设备会在 你的网页服务上进行注册 稍后 顾客的订单开始配送 因此 服务器会利用注册信息 通知所有已注册的设备 当顾客的设备上 收到推送通知时 它会向你的服务器 请求订单 服务器随即 将更新后的订单数据包 返回给设备 在了解了基本订单流程 的运作方式之后 现在我们来分解一下 为支持订单更新 而需要采取的确切步骤 首先 指明你支持订单更新 要告诉钱包 你的订单支持更新 方法其实非常简单 只需在订单数据包 包含两条信息 在 order.json 中 添加所需的 webServiceURL 你在订单详情中 提供的也是这个 同时 添加一个 authenticationToken 栏位 在请求订单更新时 钱包会使用该栏位 来证明它的真实性 当设备请求进行注册 或移除注册时 必须加以妥善管理 你的服务器必须 能够处理 添加或移除 注册信息的情况 它必须能够找到 要更新订单的已注册设备 这样在你更新订单时 服务器才能通知这些设备 你的服务器还必须 能够找到设备上 所注册的订单 以便让服务器知道 哪些更新的订单与 该设备有关 构造该信息 有几种不同的方法 方法之一是使用 有两个实体的 关系数据库 一个实体对应设备 一个实体对应订单 并且在注册时 采用多对多关系 当订单更新时 服务器需要通知 已注册的设备 因此 服务器需要 根据所储存的注册信息 来抓取相关设备 然后使用自己的 推送令牌向每台设备 发送推送通知 订购类型 ID 还可用作推送主题 而有效负载应为空 你可以使用 订购类型 ID 证书 与 APN 通信 关于通知 还要注意的一点是 可在订单数据包上设置 changeNotifications 枚举属性以自定 如何提供订单通知 默认情况下 可用的选项 都处于启用状态 此时将始终发送 订单更新通知 如果你不希望钱包 重复你的通知 请设置 disableIfAppInstalled 这样 如果用户安装了 App 则不会发送订单数据包中 列出的通知 每个已注册设备 都会请求服务器提供 新的订单数据包 当设备收到推送通知时 它并不知道 哪些订单已更改 因为推送通知是空的 结合服务器 设备可以明确知道 自上次请求以来 哪些订单已更改 请使用服务器 所存储的注册信息 查找相关订单 然后返回它们的 ID 跟踪更新时间 并在响应中 包含修改标签 以限制未来请求 所返回的订单 ID 数量 举例来说 你可以使用时间戳 值对于设备而言 是不透明的 当下一次请求更改时 设备会提供修改标签 最后 对于服务器指示 已更新的每个订单 设备会请求最新的数据包 今天我们介绍了很多内容 请遵循这些做法 以打造出色的顾客体验 在实现 Apple Pay 时 可以在产品或购物车页面上 显示 Apple Pay 按钮 从而打造快速结账体验 用户可以直接在付款单中 选择送货选项和地址 并且无需任何输入即可结账 在实现订单跟踪时 请使用有关客户 偏好设置的既有知识 仅提供相关的 本地化信息 此外 还要关注 所包含的素材资源数量 以便让订单软件包 保持较小的规模 在更新订单时 要将有关的更新 及时通知已注册设备 钱包中的订单应与 订单的实际状态保持一致 此外 有关订单跟踪 和显示 Apple Pay 按钮 请务必查看 《Human Interface Guidelines》 今天 我讲解了 通过构建和更新订单 开始实现 Apple Pay 本讲座的目的是 向你介绍 如何实现 Apple Pay 和订单跟踪 不过 你一定要 查看一下讲座备注中 链接的文档 以深入了解更多信息 此外 你还可以查看 我们最新的 WWDC 视频 非常感谢大家的观看 祝你愉快
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。