Apple Pay Integration
unknown
swift
3 years ago
3.1 kB
9
Indexable
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)
}
Editor is loading...