# 将 Apple Pay 接入 Messages 购买流程

确定在 Messages 对话中完成 Apple Pay 购买所需的商户、支付处理商和订单集成。

## 前提条件

你需要商户的 Apple Pay 配置、受支持的支付处理集成、订单系统以及已授权的测试环境。请使用测试支付工具进行评估。

## 1. 接入商户配置

准备商户身份、证书、受支持的网络、支付能力以及集成所需的端点。将密钥保存在常规凭证机制中，仅配置受支持的回调。Apple 的 [Apple Pay 集成说明](https://register.apple.com/resources/messages/msp-api-tutorial/applepay)定义了商户会话和支付流程。使用[提供商设置说明](/explained/apple-messages/what-does-apple-pay-in-messages-need-from-a-provider)检查证书、会话和网关的职责。

## 2. 准备客户订单

从商务系统中获取实际商品、数量、税费、运费和应付金额。使用已发布的货币和金额。在打开支付交互之前，向客户说明其购买的内容。

## 3. 处理客户授权

使用受支持的 Apple Pay 体验，并通过商户网关处理返回的支付信息。客户授权和成功处理是两个不同的阶段。

## 4. 确认实际结果

读取支付和订单结果。发送一条确认消息，反映已记录的交易、订单参考号和下一步操作。如果支付失败或状态不确定，向客户说明如何继续。

## 5. 测试恢复和替代方案

测试拒绝、取消、设备不支持和支付处理商响应丢失等情况。重试前先核对原始支付。必要时使用受支持的其他结账方式。

## 验证订单和支付

使用支付处理商批准的测试环境和已授权的 Apple Messages 测试体验。使用商务系统中的金额和币种准备订单，完成原生核对步骤并检查处理商返回的结果。确认已记录的订单与发给客户的回复指向同一笔购买。

| 测试用例                             | 操作                                                 | 预期结果                                         |
| ------------------------------------ | ---------------------------------------------------- | ------------------------------------------------ |
| 客户取消支付授权                     | 将订单保持在相应的未支付状态，并提供继续操作的选项。 | 不发送购买确认。                                 |
| 支付处理商的结果仍待确认，或响应丢失 | 使用支付处理商支持的恢复流程查找现有支付尝试。       | 应用在考虑再次扣款前，先查明原始支付尝试的结果。 |
| 已支付的订单需要退款                 | 使用支付系统的退款操作，并将结果记录到订单中。       | 服务回复说明已记录的退款状态。                   |

## 故障排查

如果支付面板加载失败，检查商户配置和可选的回调设置。如果客户已授权但未确认订单，在再次扣款之前检查网关和订单记录。消息渠道不负责结算交易。

## 后续步骤

- [了解相关的 Apple Messages 功能](/products/apple-messages/payments)。
- [查找 Apple Messages 指南和解答](/products/apple-messages/resources)。
- [准备你的第一个完整对话](/products/apple-messages/getting-started)。

## Related resources

- [What is Apple Messages for Business?](/explained/apple-messages/what-is-apple-messages-for-business) (answer)
- [Apple Messages for Business](/products/apple-messages) (product)
- [Integrate an Apple Messages customer journey](/docs/guides/apple-messages/api) (docs)

[Get an implementation brief](/learn/workspace?topic=apple-messages)
