Open onmyway133 opened 2 years ago
Use PKPaymentRequest and PKPaymentAuthorizationViewController
PKPaymentRequest
PKPaymentAuthorizationViewController
@MainActor final class WalletViewModel: NSObject, ObservableObject { var canMakePayments: Bool { PKPaymentAuthorizationViewController.canMakePayments() } func showApplePay(amount: Amount, from window: UIWindow) { let request = PKPaymentRequest() request.supportedNetworks = [PKPaymentNetwork.amex, .discover, .masterCard, .visa] request.countryCode = "US" request.currencyCode = "USD" request.merchantIdentifier = "merchant.\(Bundle.main.bundleIdentifier!)" request.merchantCapabilities = .capability3DS let item = PKPaymentSummaryItem(label: "Add Cash", amount: amount.toNsDecimal) request.paymentSummaryItems = [item] guard let vc = PKPaymentAuthorizationViewController(paymentRequest: request) else { return } vc.delegate = self window.rootViewController?.present(vc, animated: true, completion: nil) } } extension WalletViewModel: PKPaymentAuthorizationViewControllerDelegate { func paymentAuthorizationViewControllerDidFinish( _ controller: PKPaymentAuthorizationViewController ) { controller.dismiss(animated: true, completion: nil) } func paymentAuthorizationViewController( _ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment ) async -> PKPaymentAuthorizationResult { PKPaymentAuthorizationResult(status: .success, errors: nil) } }
Use
PKPaymentRequest
andPKPaymentAuthorizationViewController