PKPaymentAuthorizationViewControllerDelegate
繼承自NSObject
,@import PassKit
。
PKPaymentAuthorizationViewControllerDelegate
協議被支付授權視圖控制器的代理實施。實現該協議響應用戶和視圖控制器之間的交互。
在它回調其他的代理方法之前,支付授權視圖控制器自動等待它的代理完成響應一個方法。指定代理回調方法中的完成Block
用來完成當前的方法。該操作告訴支付授權視圖控制器繼續授權進程的下一步。
這種步進式過程(一步一步地進行)有一個例外:一旦用戶取消沒有授權的支付,支付授權視圖控制器調用paymentAuthorizationViewControllerDidFinish
方法。該控制器在任何時候調用該方法。
Working with Authorization 處理授權
-paymentAuthorizationViewControllerWillAuthorizePayment:
告訴代理用戶正在授權該支付請求。
參數:controller
支付授權視圖控制器
支付請求被授權之前但在用戶使用密碼或者Touch ID支付之后調用該方法。
-paymentAuthorizationViewController:didAuthorizatePayment:completion:
告訴代理用戶已經授權該支付請求。
參數:
controller
支付授權視圖控制器
payment
授權的支付。該對象不僅包含需要提交給支付處理器的支付密鑰,還包含支付請求需要的賬單和運送信息。
completion
當app授權支付之后回調完成的Block
。該Block
取下面的參數:status
支付的授權狀態。對于它的值,查看PKPaymentAuthorizationStatus
。
當授權支付請求之后調用該方法,提交支付信息給支付進程授權該交易,并回調完成的Block
。
-paymentAuthorizationViewController:didSelectPaymentMethod:completion:
告訴代理支付方式已經改變并請求更新的概要項列表。
參數:
controleller
支付授權視圖控制器
paymentMethod
新的支付方式
completion
當app更新概要項之后回調完成的Block
。該Block
包含下面參數:summaryItem
包含任何由支付方式引起的費用或者信用卡附加費帶來的改變而更新后的概要項數組。
當用戶選擇一個新的支付卡時調用該方法。使用該代理回調更新概要項用以響應卡片方式的改變(例如:信用卡附加費),調用更新概要項的回調。
注意:該代理不再接受回調,除非paymentAuthorizationViewControllerDidFinish:
直到它引起完成的Block
。
-paymentAuthorizationViewControllerDidFinish:
告訴代理支付授權已經完成。
參數:controller
支付授權視圖控制器。
使用該方法dismiss
支付授權視圖控制器,更新其他的app狀態。
當用戶授權一個支付請求時,當paymentAuthorizationViewController:didAuthorizePayment:completion:
方法的完成Block
已經展示給用戶,該方法被調用。當用戶沒有授權支付請求引起取消操作時,僅僅paymentAuthorizationViewControllerDidFinish:
被調用。
Working with Shipping Information 處理運送信息
-paymentAuthorizationViewController:didSelectShippingMethod:completion:
告訴代理用戶選擇一個運送方式。
參數:
controller
支付授權視圖控制器
shippingMethod
選擇的運送方式。該參數包含支付方式的一種,包含在支付請求中。
completion
更新運送方式信息時該完成Block被調用。該Block包含下面的參數:status
支付的授權狀態。所有可能值,可查看PKPaymentAuthorizationStatus
。SummaryItems
PKPaymentSummaryItems
對象的數組,用以替換當前支付請求的概要項。
使用該方法更新基于用戶選擇的運送地址產生的運送費用,該運送地址為先前在paymentAuthorizationViewController:didSelectShippingAddress:completion:
方法中傳送給代理的。如果沒有選擇地址,使用在支付請求中預填充的地址。
當該方法被調用時,創建一個新的PKPaymentSummaryItem
對象的數組,展示包括運費的更新后的費用。更多關于創建概要項的信息,可查看PKPaymentRequest
類中的paymentSummaryItems
屬性。
-paymentAuthorizationViewController:didSelectShippingContact:completion:
告訴代理用于選擇一個運送地址。
參數:
controller
支付授權視圖控制器
contact
展示新的運送地址的聯系對象。為了維護隱私,運送信息是匿名的。例如:在美國僅僅包含城市、州、郵政編碼。這提供足夠的信息用來計算運費,不顯示敏感信息除非用戶實際上批準該次購買。
completion
更新運送信息時完成Block
被調用。該Block
包含下面的參數:staus
支付的授權狀態。所有可能值,可查看PKPaymentAuthorizationStatus
。shippingMethods
一個 PKShippingMethod
對象的數組,用以替代當前支付請求的運送方式。summaryItems
PKPaymentSummaryItems
對象的數組,用以替換當前支付請求的概要項。
使用該方法更新適用的運送方式和如果選中一種運送方式相應的當前的運費。
當該方法被調用時,創建一個指定地址適用的PKShippingMethod
對象的新數組。也可以創建一個顯示更新后的費用的PKPaymentSummaryItem
對象的數組。概要項應該包含選中的適用的運送方式的運費。更多關于更新這些數據的信息,可查看PKPaymentRequest
類的shippingMethods
和paymentSummaryItems
屬性。
Constants 常量
PKPaymentAuthorizationStatus
一般是成功和失敗的狀態,也有由于特殊錯誤生成的代碼。
PaymentAuthorizationStatus | Description |
---|---|
PKPaymentAuthorizationStatusSuccess | 支付授權成功或者交易被期望是成功的 |
PKPaymentAuthorizationStatusFailure | 支付授權失敗(無效的地址或聯系方式) |
PKPaymentAuthorizationStatusInvalidBillingPostalAddress | 無效或不可用的賬單地址 |
PKPaymentAuthorizationStatusInvalidShippingPostalAddress | 無效或者不可用的運送地址 |
PKPaymentAuthorizationStatusInvalidShippingContact | 無效或不完整的運送聯系方式 |