ios - Apple Pay 应用内配置的设备选择

标签 ios swift applepay

我在一家金融科技公司工作,该公司在我们的卡中提供对 Apple Pay 的支持,即我们的用户可以选择使用我们的应用程序(应用程序内配置)将他们的卡添加到 Apple Pay。我们公司已经从 Apple 获得了适当的应用内配置权利,并且整个应用内配置过程正在按预期进行。

当用户在我们的应用程序中点击“添加到 Apple 钱包”按钮以配置他的卡时,我们将在下面调用以下代码:

let config = PKAddPaymentPassRequestConfiguration()
config.cardholderName = "\(firstName) \(lastName)"
config.localizedDescription = "MyApp Card"
config.primaryAccountSuffix = String(cardSuffix)
config.paymentNetwork = .visa

// Present the Apple Pay ViewController
let controller = PKAddPaymentPassViewController(requestConfiguration: config, delegate: self)
UIApplication.shared.delegate?.window??.rootViewController?.present(controller!, animated: true)

如果用户配对了 Apple Watch,他会看到一个屏幕,要求他选择要在哪个设备上添加卡:在他的 iPhone 上还是在 Apple Watch 上(请参阅附件中的 screenshot)。用户选择设备后,配置过程将按预期成功继续。

但是,如果用户点击“添加到 Apple 钱包”按钮并且他已经将卡添加到其中一个设备(例如 Apple Watch),那么上面的代码将再次调用,但他是再次出现相同的屏幕,要求他选择要在哪些设备上添加卡,在他的 iPhone 上还是在他的 Apple Watch 上,即使该卡已经添加到 Apple Watch 上。

据我了解,由于该卡已添加到 Apple Watch 上,因此只有 iPhone 应显示为添加卡的有效选项。

在上面的代码中我还需要做些什么来确保在设备选择中只列出可用的设备(我的意思是,只有那些还没有在 Apple Pay 上添加卡的设备)?

最佳答案

我找到了这个问题的答案,所以我正在回答我自己的问题:

创建 PKAddPaymentPassRequestConfiguration 对象后,您需要使用客户银行帐户的唯一标识符设置字段 primaryAccountIdentifier(您可能会从银行获得此信息) .

如果您查看我在问题中发布的代码,您会注意到我在 PKAddPaymentPassRequestConfiguration 对象中设置了许多字段,但没有在 primaryAccountIdentifier 中设置。这就是它对我不起作用的原因。

这是正确的代码,在末尾添加了 primaryAccountIdentifier:

let config = PKAddPaymentPassRequestConfiguration()
config.cardholderName = "\(firstName) \(lastName)"
config.localizedDescription = "MyApp Card"
config.primaryAccountSuffix = String(cardSuffix)
config.paymentNetwork = .visa
config.primaryAccountIdentifier = "some unique identifier"

通过此更新,在您将设备添加到 Apple Pay 后,当您想使用同一帐户添加第二台设备时,它将不再显示为配置选项。

关于ios - Apple Pay 应用内配置的设备选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67071520/

相关文章:

ios - 在 iOS 中创建选项卡按钮

ios - 以编程方式设置包括安全区域的背景图像 (Swift)

swift - 选项默认为零吗?

swift - Swift 中函数类型作为参数类型的优点?

swift - RxSwift - 链接 Observables 和 Singles

javascript - 可以在没有第三方服务的情况下使用Apple Pay吗?

ios - 将 eBay timeLeft 转换为 Swift 3.0 TimeInterval

php - Apple Pay - 仅当沙盒运行时,authorize.net 返回错误 153

android - 使用 Android 7.0 或更高版本从 iPhone Suica App 读取 NFC 数据时出现问题

iphone - 如何将功能或设计委托(delegate)给其他 UIViewController