即使设备支持苹果支付,苹果支付按钮也不会显示

apple pay button won't show even though device supports apple pay

所以我的目标是让 apple pay 按钮显示在支持 apple pay 的设备上,并隐藏在不支持它的设备上。

目前我有一个带有两个按钮的 vc,一个是 Apple Pay 按钮,一个是转到正常结帐的按钮。我使用逻辑来确定要显示的正确按钮,如果设备支持 Apple Pay,它会显示两者,如果不支持,它会显示正常的结帐按钮。

这里是模拟器的例子,支持Apple Pay的设备:

这是支持 Apple Pay 的设备的外观。这是我用来确定要显示哪些按钮的逻辑:

func checkIfApplePaySupported() {
    if StripeAPI.deviceSupportsApplePay() == false {
        applePayButton.isHidden = true
    } else {
        applePayButton.isHidden = false
        applePayButton.addTarget(self, action: #selector(applePayTapped), for: .touchUpInside)
    }
}

非常简单,在模拟器上工作得很好。我最初在故事板中隐藏了 Apple Pay 按钮,因此在加载视图时它不会有任何不稳定的 UI 移动。我在 vc 的 viewDidLoad() 中调用该方法。

现在的问题是,当我使用那个确切的逻辑将构建上传到 TestFlight 时,在我的 iPhone 上进行测试时,Apple Pay 按钮没有显示在 vc 中。我有 Apple Pay 设置,我的钱包里有一张卡,事实上,我昨天用 Apple Pay 支付了我的杂货,所以毫无疑问该设备支持 Apple Pay。

这是我每次到达那里时得到的结果 vc :

尽管我的设备全心全意地支持 Apple Pay,但 Apple Pay 按钮从未出现,这就像是最奇怪的错误,我无法弄清楚我在我的生活中做错了什么。这也发生在我的朋友身上,他们的设备支持 Apple Pay,但他们也看不到 Apple Pay 按钮并无法使用它进行支付。关于如何修复此错误的任何建议?

您正在通过 Stripe 使用 Apple Pay。 StripeAPI.deviceSupportsApplePay() 函数不仅仅检查“设备是否支持 Apple Pay?”。它还会检查用户是否至少拥有一张受 Stripe 或其他要求支持的已保存信用卡。在 deviceSupportsApplePay() 的描述中清楚地描述了这一点。

Whether or not this can make Apple Pay payments via a card network supported by Stripe. The Stripe supported Apple Pay card networks are: American Express, Visa, Mastercard, Discover, Maestro. Japanese users can enable JCB by setting JCBPaymentNetworkSupported to YES, after they have been approved by JCB. - Returns: YES if the device is currently able to make Apple Pay payments via one of the supported networks. NO if the user does not have a saved card of a supported type, or other restrictions prevent payment (such as parental controls).

用于检查您是否可以 运行 在模拟器上使用您的应用。 StripeAPI.deviceSupportsApplePay() returns 在模拟器中为真。