<!--
{
  "availability" : [
    "iOS: -",
    "iPadOS: -",
    "macCatalyst: -",
    "macOS: -",
    "visionOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "PassKit",
  "identifier" : "/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "PassKit (Apple Pay and Wallet)"
    ],
    "preciseIdentifier" : "c:objc(pl)PKPaymentAuthorizationViewControllerDelegate"
  },
  "title" : "PKPaymentAuthorizationViewControllerDelegate"
}
-->

# PKPaymentAuthorizationViewControllerDelegate

Methods that let you respond to user interactions with your payment authorization view controller.

```
protocol PKPaymentAuthorizationViewControllerDelegate : NSObjectProtocol
```

## Overview

The [`PKPaymentAuthorizationViewControllerDelegate`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate) protocol is implemented by the payment authorization view controller’s delegate. You implement this protocol to respond to user interaction with that view controller.

The payment authorization view controller automatically waits for its delegate to finish responding to one method before it calls other delegate methods. You indicate that the delegate is finished with the current method by calling that method’s completion block. This action tells the pay authorization view controller to proceed with the next step in the authorization process.

There is one exception to this step-by-step procedure: The pay authorization view controller calls the [`paymentAuthorizationViewControllerDidFinish(_:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewControllerDidFinish(_:)) method as soon as the user cancels a payment without authorizing a payment request, or when a payment is canceled after timing out. The controller can call this method at any time.

## Topics

### Handling user’s payment authorization

[`paymentAuthorizationViewController(_:didRequestMerchantSessionUpdate:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewController(_:didRequestMerchantSessionUpdate:))

Requests an object that validates the identity of a merchant for a payment request.

[`paymentAuthorizationViewControllerWillAuthorizePayment(_:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewControllerWillAuthorizePayment(_:))

Tells the delegate that the user is authorizing the payment request.

[`paymentAuthorizationViewController(_:didAuthorizePayment:handler:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewController(_:didAuthorizePayment:handler:))

Tells the delegate that the user authorized the payment request, and asks for a result.

[`paymentAuthorizationViewController(_:didAuthorizePayment:completion:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewController(_:didAuthorizePayment:completion:))

Tells the delegate that the user authorized the payment request, and asks for a result.

[`paymentAuthorizationViewControllerDidFinish(_:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewControllerDidFinish(_:))

Tells the delegate that payment authorization finished.

[`paymentAuthorizationViewController(_:didSelect:handler:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewController(_:didSelect:handler:)-3bex6)

Tells the delegate that the user changed the payment method, and asks for an updated payment request.

[`paymentAuthorizationViewController(_:didSelect:completion:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewController(_:didSelect:completion:)-30s85)

Tells the delegate that the user changed the payment method, and asks for an updated payment request.

### Handling coupons

[`paymentAuthorizationViewController(_:didChangeCouponCode:handler:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewController(_:didChangeCouponCode:handler:))

Tells the delegate that the user entered or updated a coupon code.

### Handling shipping information

[`paymentAuthorizationViewController(_:didSelectShippingContact:handler:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewController(_:didSelectShippingContact:handler:))

Tells the delegate that the user selected a shipping address, and asks for an updated payment request.

[`paymentAuthorizationViewController(_:didSelectShippingContact:completion:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewController(_:didSelectShippingContact:completion:))

Tells the delegate that the user selected a shipping address, and asks for an updated payment request.

[`paymentAuthorizationViewController(_:didSelect:handler:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewController(_:didSelect:handler:)-5r0i7)

Tells the delegate that the user selected a shipping method, and asks for an updated payment request.

[`paymentAuthorizationViewController(_:didSelect:completion:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewController(_:didSelect:completion:)-9otrj)

Tells the delegate that the user selected a shipping method, and asks for an updated payment request.

### Deprecated

[`paymentAuthorizationViewController(_:didSelectShippingAddress:completion:)`](/documentation/PassKit/PKPaymentAuthorizationViewControllerDelegate/paymentAuthorizationViewController(_:didSelectShippingAddress:completion:))

Tells the delegate that the user selected a shipping address.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)