@@ -97,33 +97,111 @@ class PaymentNetworkHelper {
9797 paymentNetwork. compactMap ( { decodePaymentNetwork ( $0) } )
9898 }
9999
100- static func getMerchantCapabilities( _ merchantCapabilities: MerchantCapabilities ) -> PKMerchantCapability {
100+ static func getMerchantCapabilities( _ merchantCapabilities: Apple_MerchantCapabilities ) -> PKMerchantCapability {
101101 switch ( merchantCapabilities) {
102- case MerchantCapabilities . threeds:
102+ case Apple_MerchantCapabilities . threeds:
103103 return PKMerchantCapability . capability3DS
104- case MerchantCapabilities . credit:
104+ case Apple_MerchantCapabilities . credit:
105105 return PKMerchantCapability . capabilityCredit
106- case MerchantCapabilities . debit:
106+ case Apple_MerchantCapabilities . debit:
107107 return PKMerchantCapability . capabilityDebit
108- case MerchantCapabilities . emv:
108+ case Apple_MerchantCapabilities . emv:
109109 return PKMerchantCapability . capabilityEMV
110110 default :
111111 return PKMerchantCapability . capability3DS
112112 }
113113 }
114114
115- static func getShippingType( _ shippingType: ShippingType ) -> PKShippingType {
115+ static func getShippingType( _ shippingType: Apple_ShippingType ) -> PKShippingType {
116116 switch ( shippingType) {
117- case ShippingType . shipping:
117+ case Apple_ShippingType . shipping:
118118 return PKShippingType . shipping
119- case ShippingType . delivery:
119+ case Apple_ShippingType . delivery:
120120 return PKShippingType . delivery
121- case ShippingType . servicePickup:
121+ case Apple_ShippingType . servicePickup:
122122 return PKShippingType . servicePickup
123- case ShippingType . storePickup:
123+ case Apple_ShippingType . storePickup:
124124 return PKShippingType . storePickup
125125 default :
126126 return PKShippingType . shipping
127127 }
128128 }
129+
130+ static func getPaymentSummaryItem( _ paymentItems: Array < PaymentItem > ) -> Array < PKPaymentSummaryItem > {
131+ var paymentSummaryItem = [ PKPaymentSummaryItem] ( )
132+ paymentItems. forEach { item in
133+ let itemTitle = item. name
134+ let itemPrice = item. price
135+ let payment = PKPaymentSummaryItem ( label: itemTitle, amount: NSDecimalNumber ( floatLiteral: itemPrice) )
136+ paymentSummaryItem. append ( payment)
137+ }
138+ return paymentSummaryItem
139+ }
140+
141+ static func getShippingMethods( _ methods: Array < Apple_ShippingMethod > ) -> Array < PKShippingMethod > ? {
142+ var shippingMethods = [ PKShippingMethod] ( )
143+ methods. forEach { item in
144+ let itemTitle = item. name
145+ let itemPrice = item. price
146+ let shippingMethod = PKShippingMethod ( label: itemTitle, amount: NSDecimalNumber ( floatLiteral: itemPrice) )
147+ shippingMethod. identifier = item. identifier
148+ shippingMethod. detail = item. detail
149+ shippingMethods. append ( shippingMethod)
150+ }
151+ return shippingMethods
152+ }
153+
154+ static func getContactFields( _ contacts: Array < String > ) -> Set < PKContactField > {
155+ var items = Set < PKContactField > ( )
156+ contacts. forEach { item in
157+ items. insert ( PKContactField ( rawValue: item) )
158+ }
159+ return items
160+ }
161+
162+ static func getContact( _ appleContact: Apple_Contact ) -> PKContact ? {
163+ let contact = PKContact ( )
164+
165+ contact. emailAddress = appleContact. emailAddres
166+ if appleContact. hasName {
167+ contact. name = getPersonNameComponents ( appleContact. name)
168+ }
169+ if appleContact. hasPostalAddress {
170+ contact. postalAddress = getPostalAddress ( appleContact. postalAddress)
171+ }
172+ if !appleContact. phoneNumber. isEmpty {
173+ contact. phoneNumber = CNPhoneNumber ( stringValue: appleContact. phoneNumber)
174+ }
175+ return contact
176+ }
177+
178+ private static func getPersonNameComponents( _ personName: Apple_PersonNameComponents ) -> PersonNameComponents {
179+ var name = PersonNameComponents ( )
180+ name. namePrefix = personName. namePrefix
181+ name. familyName = personName. familyName
182+ name. givenName = personName. givenName
183+ name. middleName = personName. middleName
184+ name. nameSuffix = personName. nameSuffix
185+ name. nickname = personName. nickname
186+ if personName. hasPhoneticRepresentation {
187+ name. phoneticRepresentation = getPersonNameComponents ( personName. phoneticRepresentation)
188+ }
189+ return name
190+ }
191+
192+ private static func getPostalAddress( _ postalAddress: Apple_PostalAddress ) -> CNPostalAddress {
193+ let address = CNMutablePostalAddress ( )
194+ address. city = postalAddress. city
195+ address. country = postalAddress. country
196+ address. isoCountryCode = postalAddress. isoCountryCode
197+ address. postalCode = postalAddress. postalCode
198+ address. state = postalAddress. state
199+ address. street = postalAddress. street
200+ if #available( iOS 10 . 3 , * ) {
201+ address. subAdministrativeArea = postalAddress. subAdministrativeArea
202+ address. subLocality = postalAddress. subLocality
203+ }
204+
205+ return address
206+ }
129207}
0 commit comments