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

时间:2021-05-06 15:53:38

标签: swift stripe-payments testflight applepay passkit

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

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

以下是模拟器的示例,支持 Apple Pay 的设备:

enter image description here

这就是支持 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 时得到的结果:

no apple pay button

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

1 个答案:

答案 0 :(得分:0)

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

<块引用>

这是否可以通过支持的卡网络进行Apple Pay支付 通过条纹。 Stripe 支持的 Apple Pay 卡网络有: 美国运通、Visa、万事达卡、Discover、Maestro。 日本用户可以通过将 JCBPaymentNetworkSupported 设置为 YES 来启用 JCB, 在获得 JCB 批准后。 - 返回:如果设备当前能够通过一个 Apple Pay 付款,则为 YES 支持的网络。 NO 如果用户没有保存的卡 受支持的类型或其他阻止付款的限制(例如家长控制)。

用于检查您是否可以在模拟器上运行您的应用。 StripeAPI.deviceSupportsApplePay() 在模拟器中返回 true。