对于 ApplePay paymentAuthorizationViewController 委托创建 nil PKSummaryItem
For ApplePay paymentAuthorizationViewController delegate creates nil PKSummaryItem
关于此 ,感谢您缩小范围。但遗憾的是我必须配置这个委托
- (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,因此处理过程永远不会得到修复。请帮忙!提前谢谢你。
PKPaymentSummaryItem 可从 iOS 8 获得,因此如果您尝试将其与较新的 iOS 版本一起使用,您将得到 nil 而不是预期值。
我也被这个卡住了
那么答案,嗯?我使用 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;
然而,我注意到的是当调用后一个时,即 didSelectShippingAddress,Passkit 有点停滞,所以我删除了它,只使用了第一个 didSelectShippingMethod 来帮助实现整个事情,无限处理再也没有发生过!希望它也适合你 (:
关于此
- (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,因此处理过程永远不会得到修复。请帮忙!提前谢谢你。
PKPaymentSummaryItem 可从 iOS 8 获得,因此如果您尝试将其与较新的 iOS 版本一起使用,您将得到 nil 而不是预期值。
我也被这个卡住了
那么答案,嗯?我使用 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;
然而,我注意到的是当调用后一个时,即 didSelectShippingAddress,Passkit 有点停滞,所以我删除了它,只使用了第一个 didSelectShippingMethod 来帮助实现整个事情,无限处理再也没有发生过!希望它也适合你 (: