Apple Pay
允许客户在他们的 iPhone、iPad 或 Apple Watch 上用 Apple Pay 安全地付款。
Apple Pay 兼容大部分 Stripe 产品和功能。Stripe 用户可在 iOS 9 及以上版本 iOS 的应用内接受 Apple Pay,如果是 Safari 网页,则必须是 iOS 10 以上版本或 macOS Sierra。处理 Apple Pay 付款时没有额外费用,而且定价与其他银行卡交易一样。
Apple Pay 可由在受支持国家的参与银行那里开户的持卡人使用。有关更多信息,请参考 Apple 的参与银行文档。
付款流程
以下是您的结账页面的 Apple Pay 付款流程演示:
使用 Stripe 和 Apple Pay 与应用内购买
对于实物商品、服务和某些其他东西的销售,您的应用程序可以接受 Apple Pay 或其他任何 Stripe 支持的支付方式。这些付款是通过 Stripe 处理的,只需支付 Stripe 的手续费。但是,数字产品、内容和某些其他东西的销售必须使用 Apple 的应用内购买。这些付款由 Apple 公司处理,会收取交易费。
有关哪些类型的销售必须使用应用内购买的更多信息,请参见 Apple App Store 审查指南。
接受 Apple Pay
Stripe 提供了多种添加 Apple Pay 的方法。有关集成的详细信息,请选择您最喜欢的方法:
通过 Stripe iOS SDK,您可以接受 Apple Pay 及传统的信用卡支付方式。开始之前,您需要注册 Apple Developer Program。接下来,执行这些步骤:
设置 Stripe服务器端客户端
首先,您需要有 Stripe 账户。立即注册。
服务器端
该集成应用要求您的服务器上的端点与 Stripe API 通讯。请用官方库从您的服务器访问 Stripe API:
客户端
Stripe iOS SDK 是开源的,有完整的文档,并且与支持 iOS 13 或更高版本操作系统的应用程序兼容。
备注
For details on the latest SDK release and past versions, see the Releases page on GitHub. To receive notifications when a new release is published, watch releases for the repository.
在应用程序启动时使用您的 Stripe 公钥 配置 SDK。这样可使您的应用程序向 Stripe API 发出请求。
注册 Apple Merchant ID
可通过在 Apple 开发人员网站注册新的标识符来获取 Apple 商家 ID。
在表单中填写描述和标识符。描述内容仅供您自己记录之用,之后可随时更改。Stripe 建议用您的应用的名称作为标识符(例如,merchant.
)。
集成 Xcode
将 Apple Pay 功能添加到您的应用程序。在 Xcode 中,打开您的项目设置,点击签名和功能选项卡,然后添加 Apple Pay 功能。此时,系统可能会提示您登入您的开发人员账户。选择您之前创建的商家 ID,您的应用程序就可以接受 Apple Pay 了。
在 Xcode 中启用 Apple Pay 功能
检查是否支持 Apple Pay
备注
如果您使用着 PaymentSheet,则那个类别会为您处理剩下的。
在您的应用程序中显示 Apple Pay 此支付选项之前,请确定用户的设备支持 Apple Pay,并且他们的钱包中添加了银行卡:
创建付款请求
当用户点击 Apple Pay 按钮时,调用 StripeAPI paymentRequestWithMerchantIdentifier:country:currency:,创建一个 PKPaymentRequest。
然后,配置 PKPaymentRequest
以显示贵商家的名称和总金额。您还可以收集账单详情或配送信息等信息。
关于如何自定义付款请求的完整指南,请参见 Apple 文档。
出示支付表单
用 PKPaymentRequest
创建一个 STPApplePayContext 实例,并使用它来呈现 Apple Pay 表单。
向 Stripe 提交付款
服务器端
生成一个端点,创建一个具有 amount 和 currency 的 PaymentIntent。始终在服务器端决定扣款金额,这是一个可信的环境,客户端不行。这样可防止客户自己选择价格。
客户端
故障排除
如果您在尝试创建令牌时看到 Stripe API 出现错误,则很可能是您的 Apple Pay Certificate 有问题。如本页所述,您需要生成一个新证书并上传到 Stripe。请确保您使用的是从您的管理平台获得的 CSR,而不是您自己生成的那个。Xcode 经常错误地缓存旧的证书,所以除了生成新证书外,Stripe 建议创建一个新的 Apple Merchant ID。
如果您收到错误:
您尚未将您的 Apple 商家账户添加到 Stripe
您的应用程序好像正在发送用以前的(非 Stripe) CSR/Certificate 加密的数据。务必撤销您的 Apple Merchant ID 下任何不是由 Stripe 生成的证书。如果这样不能解决问题,请删除您的 Apple 账户中的商家 ID,然后重新创建它。然后,根据之前使用的相同(Stripe 提供的) CSR 创建一个新证书。您不需要将此新的证书上传到 Stripe。完成后,在您的应用程序中打开并关闭 Apple Pay Credentials,以确保正确刷新。
App Clips
StripeApplePay
模态是一个简版 Stripe SDK,为在 App Clip 中使用进行了优化。按照以上步骤将 StripeApplePay
模态添加到您的 App Clip 的目标中。
备注
仅 Swift 中支持 StripeApplePay
模态。Objective-C 用户必须从 Stripe
模态导入 STPApplePayContext
。
从 STPApplePayContext 迁移
如果您当前使用的是 STPApplePayContext
并且想切换到简版 Apple Pay SDK,则按照这些步骤进行:
- 在您的 App Clip 目标的依赖中,将
Stripe
模态替换为StripeApplePay
模态。 - 在您的代码中,将
import Stripe
替换为import StripeApplePay
。 - 将您使用的
STPApplePayContextDelegate
替换为新的ApplePayContextDelegate
协议。 - 更改您的
applePayContext(_
执行程序,以接受:didCreatePaymentMethod:completion:) StripeAPI.
。PaymentMethod - 更改您的
applePayContext(_
部署,以接受:didCompleteWith:error:) STPApplePayContext.
。PaymentStatus
import Stripe class CheckoutViewController: UIViewController, STPApplePayContextDelegate { func applePayContext(_ context: STPApplePayContext, didCreatePaymentMethod paymentMethod: STPPaymentMethod, paymentInformation: PKPayment, completion: @escaping STPIntentClientSecretCompletionBlock) { // ... } func applePayContext(_ context: STPApplePayContext, didCompleteWith status: STPPaymentStatus, error: Error?) { // ... } }
import StripeApplePay class CheckoutViewController: UIViewController, ApplePayContextDelegate { func applePayContext(_ context: STPApplePayContext, didCreatePaymentMethod paymentMethod: StripeAPI.PaymentMethod, paymentInformation: PKPayment, completion: @escaping STPIntentClientSecretCompletionBlock) { // ... } func applePayContext(_ context: STPApplePayContext, didCompleteWith status: STPApplePayContext.PaymentStatus, error: Error?) { // ... } }
经常性付款
在 iOS 16 或更高版本中,可通过在 PKPaymentRequest
上设置 recurringPaymentRequest
或 automaticReloadPaymentRequest
属性来采用商家令牌。
要了解有关如何通过 Apple Pay 使用经常性付款的更多信息,请参阅 Apple 的 PassKit 文档。
订单跟踪
要在 iOS 16 或以上版本中采用订单跟踪,在您的 ApplePayContextDelegate
中部署 applePayContext(context:willCompleteWithResult:handler:) 函数。Stripe 在支付完成后调用您的部署环境,但是在 iOS 关闭 Apple Pay 表单之前。
在您的部署环境中:
- 从您的服务器获取已完成订单的详情。
- 将这些详情添加到提供的 PKPaymentAuthorizationResult。
- 调用主队列上提供的完成处理程序。
要了解有关订单跟踪的更多信息,请参阅 Apple 钱包订单文档。
测试 Apple Pay
不能将 Stripe 的测试卡信息保存到 iOS 内的钱包。而是,在您使用测试 API 密钥时 Stripe 会识别出,并返回一个成功的测试卡令牌供您使用。这样您即可用真实卡进行测试付款,不会被扣款。