ios - Apple Pay检测钱包没有信用卡

标签 ios objective-c applepay

我正在尝试为我的应用实现 Apple Pay。我有 PKPaymentAuthorizationViewController 试图加载 Apple Pay View 。如果我的钱包里没有任何卡片,构造函数将此 View Controller 返回为 Nil。因此,我决定引导用户完成输入卡信息的过程。我能够使用

实现这一点
PKPassLibrary* lib = [[PKPassLibrary alloc] init];
[lib openPaymentSetup];

这是我对 PKPaymentAuthorizationViewController 进行初始化的部分。这会在 Simulator 上返回一个显示 View 的有效对象。但是在没有配置信用卡的真实设备上返回 nil 并遇到运行时异常。这是初始化代码:

if ([PKPaymentAuthorizationViewController canMakePayments]) {
// init arr
[arr addObject:total];
request.paymentSummaryItems = arr;
PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
paymentPane.delegate = self;
[self presentViewController:paymentPane animated:TRUE completion:nil];
}

这里的数组是 PKPaymentSummaryItem 的有效 NSArray,这就是它在模拟器上成功运行的原因。

每次我看到钱包里没有信用卡的用户时,我都需要调用上面的 openPaymentSetup 方法。有没有办法检测到?

我目前正在使用

if ( [PKPassLibrary isPassLibraryAvailable] ) {
    PKPassLibrary* lib = [[PKPassLibrary alloc] init];
    if  ([lib passesOfType:PKPassTypePayment].count == 0 ) {
        [lib openPaymentSetup];
   }
}

但这行不通,因为我正在查看钱包中的通行证计数。这可能类似于航空公司的登机牌,或 eventbrite 通行证等。

看过: PKPaymentAuthorizationViewController present as nil view controller

Apple pay PKPaymentauthorizationViewController always returning nil when loaded with Payment request

https://developer.apple.com/library/ios/documentation/PassKit/Reference/PKPaymentAuthorizationViewController_Ref/

最佳答案

我按照@maddy 的建议做了,它确实有效。不幸的是,苹果关于它的文档非常有限。谢谢麦迪。

这是我的代码

-(BOOL) openAddCardForPaymentUIIfNeeded
{
    if ( [PKPassLibrary isPassLibraryAvailable] )
    {
        if ( ![PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:[NSArray arrayWithObjects: PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa, nil]] )
        {
            UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Add a Credit Card to Wallet" message:@"Would you like to add a credit card to your wallet now?" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
            [alert show];
            return true;

        }
    }
    return false;
}

现在我正在引导用户去钱包应用程序中添加卡片向导。在他/她将卡添加到电子钱包后,有什么办法可以让用户回到应用程序吗?

谢谢!

关于ios - Apple Pay检测钱包没有信用卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33836293/

相关文章:

ios - UINavigationControllerDelegate 方法被调用两次

ios - App购买中的自动续订订阅

ios - 苹果支付 : is there a difference in payment tokens created on the web vs in-app?

ios - 基于窗口的应用程序和基于 View 的应用程序有什么区别?

ios - 快速在自定义容器 View 下添加阴影

java - iPhone (Objective-c) 和 Java 之间的 AES 区别

ios - IOS 应用内购买产品

ios - Apple Pay Stripe 集成 - 它是如何运作的?

ios - 正在加载 Apple Pay 送货地址 No Street

ios - 根据单独的数组对字典数组进行排序?