stpaddcardviewcontroller func handleAddPaymentOptionButtonTapped() { // Setup add card view controller let paymentConfiguration = STPPaymentConfiguration() paymentConfiguration.requiredBillingAddressFields = .full paymentConfiguration.publishableKey = "redacted" let theme = STPTheme() let addCardViewController = STPAddCardViewController(configuration: paymentConfiguration, theme: theme) addCardViewController.delegate = self // Present add card view controller stpaddcardviewcontroller How to use it? stpaddcardviewcontroller let navigationController = UINavigationController(rootViewController: addCardViewController) present(navigationController, animated: true) } var cardParams = STPPaymentMethodCardParams() let billingDetails = STPPaymentMethodBillingDetails() func addCardViewController(_ addCardViewController: STPAddCardViewController, didCreateToken token: STPToken, completion: @escaping STPErrorBlock) { cardParams.token = token.tokenId stpaddcardviewcontroller How to dowload it? stpaddcardviewcontroller dismiss(animated: true) } var clientSecret: String? func createPaymentIntent() { let paymentAmount = 1000 let paymentMethodTypes = ["card"] MyAPIClient.sharedClient.createPaymentIntent(amount: paymentAmount) { (clientSecret) in self.clientSecret = clientSecret } stpaddcardviewcontroller How to dowload it? stpaddcardviewcontroller } func confirmPaymentIntent() { if let clientSecret = clientSecret { let paymentMethodParams = STPPaymentMethodParams(card: cardParams, billingDetails: nil, metadata: nil) let paymentIntentParams = STPPaymentIntentParams(clientSecret: clientSecret) paymentIntentParams.paymentMethodParams = paymentMethodParams let amount = 1000 MyAPIClient.sharedClient.createAndConfirmPaymentIntent(paymentIntentParams, paymentMethodParams: paymentMethodParams, amount: amount) { (paymentIntent, err) in stpaddcardviewcontroller PasteShr stpaddcardviewcontroller print(err) } } } ///////////////// MyApiClient func createPaymentIntent(amount: Int, completion: @escaping (_ clientSecret: String) -> ()) { stpaddcardviewcontroller How to use it? stpaddcardviewcontroller let url = "https://us-central1-foodfactory-813ab.cloudfunctions.net/createStripePaymentIntent" let params: [String: Any] = [ "amount": amount, "currency": "USD", "payment_method_types": ["card"] ] Alamofire.request(url, method: .post, parameters: params) .validate(statusCode: 200..<300) .responseJSON { responseJSON in stpaddcardviewcontroller PasteShr stpaddcardviewcontroller if let json = responseJSON.result.value as? [String: Any] { if let clientSecret = json["client_secret"] as? String { completion(clientSecret) } } } } func createAndConfirmPaymentIntent(_ paymentIntentParams: STPPaymentIntentParams, stpaddcardviewcontroller How to get it? stpaddcardviewcontroller paymentMethodParams: STPPaymentMethodParams, amount: Int, completion: @escaping STPPaymentIntentCompletionBlock) { let url = "https://us-central1-foodfactory-813ab.cloudfunctions.net/confirm_payment" guard let piCheck: String = paymentIntentParams.stripeId else {return} var params: [String: Any] = [ "payment_intent_id": paymentIntentParams, stpaddcardviewcontroller How to get it for free? stpaddcardviewcontroller "amount": amount, "currency": "gbp", "confirm": true, ] // params["shipping"] = STPAddress.shippingInfoForCharge(with: shippingAddress, shippingMethod: shippingMethod) Alamofire.request(url, method: .post, parameters: params) .validate(statusCode: 200..<300) .responseJSON(completionHandler: { (response) in switch response.result { case .success(let json): stpaddcardviewcontroller How to use it? stpaddcardviewcontroller completion(STPPaymentIntent.decodedObject(fromAPIResponse: json as? [AnyHashable: Any]), nil) case .failure(let error): completion(nil, error) } }) } stpaddcardviewcontroller