To respond to the delegate method calls from the payment sheet, you should have a single method that computes the payment summary items based on the shipping information. Here's a possible implementation of such a method:
// client_app/merchantapp/ProductCard.m @property Product* product; @property PKShippingMethod* selected_shipping_method; ... // tally the summary items' cost and the grand total - (NSArray<PKPaymentSummaryItem*>*) computeSummaryItems { NSDecimalNumber* product_price= [NSDecimalNumber decimalNumberWithString:_product.price]; NSDecimalNumber* shipping= _selected_shipping_method? _selected_shipping_method.amount : [NSDecimalNumber zero]; NSDecimalNumber* tax= [product_price decimalNumberByMultiplyingBy: [NSDecimalNumber decimalNumberWithString:@"0.08"]]; NSDecimalNumber* total= decimal_number_sum(@[product_price,...