Apple Pay Integration
unknown
swift
2 years ago
3.1 kB
2
Indexable
Never
import PassKit class ApplePayManager: NSObject { // Crie um PKPaymentRequest que inclui os itens da compra e o valor total. func createPaymentRequest() -> PKPaymentRequest { let request = PKPaymentRequest() // Define o nome do seu serviço ou produto. request.merchantIdentifier = "merchant.com.yourcompany.yourapp" // Define as moedas suportadas pelo seu serviço. request.currencyCode = "USD" request.countryCode = "US" // Define os tipos de pagamento suportados pelo seu serviço. request.supportedNetworks = [.amex, .masterCard, .visa] // Define o tipo de processamento de pagamento para o seu serviço. request.merchantCapabilities = .capability3DS // Define o tipo de itens de compra que o cliente pode adquirir. let item = PKPaymentSummaryItem(label: "Assinatura Mensal", amount: NSDecimalNumber(string: "9.99")) let total = PKPaymentSummaryItem(label: "Total", amount: item.amount) request.paymentSummaryItems = [item, total] // Define as informações de envio e faturamento do cliente. request.requiredShippingContactFields = [.emailAddress, .name, .postalAddress] request.requiredBillingContactFields = [.emailAddress, .name, .postalAddress] // Retorna o pedido de pagamento. return request } // Inicia o processo de pagamento. func startPayment() { let paymentRequest = createPaymentRequest() let paymentController = PKPaymentAuthorizationController(paymentRequest: paymentRequest) paymentController.delegate = self paymentController.present(completion: nil) } } extension ApplePayManager: PKPaymentAuthorizationControllerDelegate { // Verifica se o pagamento foi autorizado e captura as informações do pagamento. func paymentAuthorizationController(_ controller: PKPaymentAuthorizationController, didAuthorizePayment payment: PKPayment, handler completion: @escaping (PKPaymentAuthorizationResult) -> Void) { // Realiza a validação do pagamento e captura as informações do pagamento. let paymentToken = payment.token let paymentData = paymentToken.paymentData let paymentMethod = paymentToken.paymentMethod let billingAddress = payment.billingContact?.postalAddress let shippingAddress = payment.shippingContact?.postalAddress // Adicione aqui a lógica de validação do pagamento e conclusão da assinatura. // ... // Retorna o resultado do pagamento autorizado. let paymentAuthorizationResult = PKPaymentAuthorizationResult(status: .success, errors: nil) completion(paymentAuthorizationResult) } // Notifica o controle de pagamento que o processo de pagamento foi concluído. func paymentAuthorizationControllerDidFinish(_ controller: PKPaymentAuthorizationController) { controller.dismiss(completion: nil) }