(iOS、Apple Pay)显示多个摘要项目导致错误

问题描述 投票:0回答:1

我显示包含多个

PKPaymentSummaryItem
项目的 Apple Pay 对话框:

    let paymentRequest = PKPaymentRequest()
    paymentRequest.paymentSummaryItems = [
        PKPaymentSummaryItem(label: "item 1", amount: NSDecimalNumber(decimal: 10)),
        PKPaymentSummaryItem(label: "item 2", amount: NSDecimalNumber(decimal: 20)),
        PKPaymentSummaryItem(label: "item 3", amount: NSDecimalNumber(decimal: 30))
    ]
    paymentRequest.merchantIdentifier = merchantIdentifier
    paymentRequest.merchantCapabilities = .capability3DS
    paymentRequest.currencyCode = self.currencyCode
    paymentRequest.countryCode = self.countryCode
    paymentRequest.supportedNetworks = supportedNetworks
    paymentRequest.shippingType = .servicePickup
    applePayController = PKPaymentAuthorizationController(paymentRequest: paymentRequest)

结果我看到了一张奇怪的图片: 在底部工作表对话框中仅存在

item 3
如果我导航到项目详细信息,所有三个项目的顺序都很奇怪 我在官方文档中没有找到对此问题的任何解释,如果有人在实践中处理过这个问题,以及如何以最佳方式解决它,那么很有趣

ios swift applepay
1个回答
0
投票

paymentSummaryItems
不用于保存“订单中的项目”。它是付款摘要,其中项目通常是“货物”、“税”、“运费”等。

您添加到付款请求中的最后一项必须是接收付款以及待付款总额的公司/组织的名称。

Apple Pay 使用 paymentSummaryItems 数组中的最后一项作为购买的总计。 ...

PKPaymentAuthorizationViewController
类以不同于其他摘要项目的方式显示此项目。因此,对其含量和标签都有额外的要求。

  • 将总金额设置为数组中所有其他项目的总和。该金额必须大于或等于零。
  • 将总计标签设置为您公司的名称。该标签代表接收付款的个人或公司。

即,您应该在付款请求中添加另一个项目,即“Acme corp”或提供商品/服务的公司名称以及总额:

paymentRequest.paymentSummaryItems = [
        PKPaymentSummaryItem(label: "Goods", amount: NSDecimalNumber(decimal: 20)),
        PKPaymentSummaryItem(label: "Tax", amount: NSDecimalNumber(decimal: 2)),
        PKPaymentSummaryItem(label: "Shiping", amount: NSDecimalNumber(decimal: 10)),
        PKPaymentSummaryItem(label: "Acme Corp", amount: NSDecimalNumber(decimal: 32))
    ]

这将导致付款单显示“向 Acme Corp 支付 32 美元”

© www.soinside.com 2019 - 2024. All rights reserved.