【问题标题】:For ApplePay paymentAuthorizationViewController delegate creates nil PKSummaryItem对于 ApplePay paymentAuthorizationViewController 委托创建 nil PKSummaryItem
【发布时间】:2015-06-07 09:38:58
【问题描述】:

参考此question,感谢您缩小范围。但遗憾的是我必须配置这个委托

- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
               didSelectShippingMethod:(PKShippingMethod *)shippingMethod                   
completion:(void (^)(PKPaymentAuthorizationStatus, NSArray *summaryItems))completion
{
    completion(PKPaymentAuthorizationStatusSuccess, [self summaryItemsForShippingMethod:shippingMethod]);
}

- (NSArray *)summaryItemsForShippingMethod:(PKShippingMethod *)shippingMethod
{
    totalPrice = 5;
    NSString *prices = [NSString stringWithFormat:@"%d",totalPrice];
    NSDecimalNumber *num = [[NSDecimalNumber alloc] initWithString:prices];
    PKPaymentSummaryItem *foodItem = [PKPaymentSummaryItem summaryItemWithLabel:@"Total Products Cost" amount:num];
    NSDecimalNumber *total = [foodItem.amount decimalNumberByAdding:shippingMethod.amount];
    PKPaymentSummaryItem *totalItem = [PKPaymentSummaryItem summaryItemWithLabel:@"Video Mantis Productions, INC." amount:total];
    return @[foodItem, shippingMethod, totalItem];
}

为了向用户展示真正的产品摘要。可悲的是,我将 PKPaymentSummaryItem *foodItem 设为 nil,因此处理过程永远不会得到修复。请帮忙!提前谢谢你。

【问题讨论】:

    标签: ios objective-c stripe-payments applepay passkit


    【解决方案1】:

    所以答案,嗯?我使用 Stripe 作为与 ApplePay 交易的中间媒介,因此使用他们的 SDK 和教程来设置 ApplePay也是。总之,Passkit 的 PKPaymentAuthorizationViewController 使用两个可以配置的独立协议,以帮助简化实施。我都在使用,即;

    - (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
                       didSelectShippingMethod:(PKShippingMethod *)shippingMethod
                                    completion:(void (^)(PKPaymentAuthorizationStatus status, NSArray *summaryItems))completion;
    

    还有……

    - (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
                      didSelectShippingAddress:(ABRecordRef)address
                                    completion:(void (^)(PKPaymentAuthorizationStatus status, NSArray *shippingMethods, NSArray *summaryItems))completion;
    

    但是,我注意到的是,当调用后一个时,即 didSelectShippingAddressPasskit 类型的卡顿了,所以我将其删除并只使用了第一个一个是 didSelectShippingMethod 来帮助实现整个事情,并且永远不会再发生无限处理!希望它也适合你(:

    【讨论】:

      【解决方案2】:

      PKPaymentSummaryItem 在 iOS 8 中可用,因此如果您尝试在较新的 iOS 版本中使用它,您将得到 nil 而不是预期值。

      我也遇到了这个问题

      【讨论】:

      • 呐!使用iOS8的人!顺便说一句,我发现它会保持不变。但是 Apple Pay 上的“处理”会消失吗?
      • 你可以尝试用这个创建你的 PKPAymentSummaryItem 吗? NSDecimal decimalAmount = [@(totalPrice) decimalValue]; NSDecimalNumber *amount = [NSDecimalNumber decimalNumberWithDecimal:decimalAmount]; PKPaymentSummaryItem *summaryItem = [PKPaymentSummaryItem summaryItemWithLabel:@"Total Products Cost" amount:amount];
      猜你喜欢
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多