检查卡是不是已添加到 PassKit 库
Posted
技术标签:
【中文标题】检查卡是不是已添加到 PassKit 库【英文标题】:Check if card already added to PassKit library检查卡是否已添加到 PassKit 库 【发布时间】:2018-12-21 12:05:14 【问题描述】:我正在尝试使用 PKAddPaymentPassRequest 将银行卡(“支付通行证”)添加到 Wallet。
所以问题是,我如何查询通行证库以检查我的卡(或任何其他卡)是否已经在库中? 例如,在我的应用中的卡片 UI 上显示“Apple Pay 已启用”复选标记。
【问题讨论】:
请参阅此主题以获得我给出的类似答案:***.com/questions/51060832/… @ScottCondron 谢谢,但您的回答只是显示 PaymentKit 控制器,同时我很高兴知道如何询问 PaymentKit(或任何其他适当的框架)我的卡是否已添加到库中。 您可以使用let library = PKPassLibrary()
let passes = library.passes(of: .payment)
不过您需要获得授权才能查看这些通行证。
你在这里找到任何解决方案了吗,@AndreySolovyov?我也有同样的问题。同时PKPassLibrary().passes()
和PKPassLibrary().remotePaymentPasses()
返回一个空数组。我通过电子钱包应用手动添加了我的卡。
【参考方案1】:
您可以创建一个 PKPassLibrary 并获取类型为“支付卡”的通行证的 PKPass 数组。 然后循环遍历 PKPass 数组,通过其主帐户标识符或卡后缀检查卡是否已添加,然后相应地更改您的 UI。
在斯威夫特中:
let passLibrary = PKPassLibrary.init()
let paymentPasses = passLibrary.passes(of: .payment) // get PKPass array of payment card
for pass in paymentPasses
guard let paymentPass = pass.paymentPass else return
// or check by suffix paymentPass.primaryAccountNumberSuffix
if paymentPass.primaryAccountIdentifier == "yourCardAccountIdentifier"
// do something
在 Objective-C 中:
PKPassLibrary *passLibrary = [[PKPassLibrary alloc] init];
NSArray<PKPass *> *paymentPasses = [passLibrary passesOfType:PKPassTypePayment];
for (PKPass *pass in paymentPasses)
PKPaymentPass * paymentPass = [pass paymentPass];
if([paymentPass primaryAccountIdentifier] == @"yourCardAccountIdentifier")
// do something
不要忘记在您的项目中包含 com.apple.developer.payment-pass-provisioning 权利。希望这对你有帮助;)
【讨论】:
我有一个问题,passLibrary.passes
返回一个空数组,还有passLibrary.remotePaymentPasses()
。你能帮我解决这个问题吗?我通过电子钱包应用手动添加了我的卡。
passLibrary.passes 只会退回您(发卡机构)添加的凭证,出于安全原因,不会退回钱包中的所有凭证。简单地通过钱包手动添加卡片将无法扫描钱包中的所有卡片。如果您是发卡机构,请确保您的 PNO 或服务提供商已添加相应的密钥。
@paky 您从哪里获得“yourCardAccountIdentifier”值?
@Varrry 它等于您信用卡的 PAN(主帐号),简而言之,就是您塑料信用卡上的 14 - 16 位数字。但在我的大多数用例中,检查后缀就足够了。
感谢@paky。奇怪的是,我在实际通行证中看到的 primaryAccountIdentifiers 看起来不像 PAN,它们包含以“V-”为前缀的数字【参考方案2】:
根据文档,PKPassLibrary 有一个名为 containsPass() 的方法
检查这里: https://developer.apple.com/documentation/passkit/pkpasslibrary/1617110-containspass
【讨论】:
以上是关于检查卡是不是已添加到 PassKit 库的主要内容,如果未能解决你的问题,请参考以下文章
Javascript 检查类名是不是已添加到 DIV 并执行任务
在 django python 中添加新卡之前,我如何检查 Stripe 客户是不是已经拥有特定卡