Stripe - ошибка при установке confirmSetupIntent


#1

Добрый день!
Пытаюсь разобраться с подключением stripe (не через PaymentContext и базовые UI) необходимо с использованием 3D Secure 2 auth
Документация не богатая или это я мало что понимаю


при нажатии на копку я реализовал следующее:

let MyAPIClientRequest = IntentRequest()

MyAPIClientRequest.createSetupIntent { [weak self] result in
                    guard result.responseMessage == nil else { return }
                    guard let secretKey = result.responseObject else { return }
                    
                    print("secretKey = \(secretKey.client_secret!)")
                    
                    STPPaymentConfiguration.shared().publishableKey = "pk_test_EP2c8iEr8B2AQANHAhY0rQwL005VKHgH5I"
                    
                    let cardParams = STPPaymentMethodCardParams()
                    cardParams.number = "4000000000003220"
                    cardParams.expMonth = 11
                    cardParams.expYear = 20
                    cardParams.cvc = "123"
                    
                    let paymentMethodParams = STPPaymentMethodParams(
                        card: cardParams,
                        billingDetails: nil,
                        metadata: nil
                    )
                    
                    let setupIntentParams = STPSetupIntentConfirmParams(clientSecret: secretKey.client_secret!)
                    
                    setupIntentParams.paymentMethodParams = paymentMethodParams
                    
                    let paymentManager = STPPaymentHandler.shared()
                    
                    paymentManager.confirmSetupIntent(withParams: setupIntentParams, authenticationContext: self!, completion: { (status, setupIntent, error) in
                        switch (status) {
                        case .succeeded:
                            print("succeeded")
                        // Setup succeeded
                        case .canceled:
                            // Handle cancel
                            print("cancel")
                        case .failed:
                            // Handle error
                            print("ERROR = \(String(describing: error))")
                        @unknown default:
                            print("")
                        }
                    })
                }

класс IntentRequest - запрос на получения client_secret

class IntentRequest: ServerRequest<Intent>  {
    
    func createSetupIntent(_ closure: @escaping (ServerRequest<Intent>) -> Void) {
        let token = PaymantFlow.secretKey
        let payment_method = "pm_card_visa"
        
        let parameters = [
            "payment_method": payment_method
        ]
        
        Alamofire.request(baseUrlIntentString, method: .post, parameters: parameters, headers: headersWithStripeToken(token)).responseJSON { (response) in
            switch response.result {
            case .success(let responseObject):
                print("responseObject = \(responseObject)")
                if let responseArray = responseObject as? [String : AnyObject] {
                    self.responseObject = self.parseResponse(responseArray)
                }
                else {
                    if let responseDictionary = responseObject as? [String : AnyObject] {
                        self.responseMessage = self.parseError(responseDictionary) ?? NSLocalizedString("Some error occured.", comment: "")
                    } else {
                        self.responseMessage = NSLocalizedString("Some error occured.", comment: "")
                    }
                }
                
            case .failure(let error):
                self.error = error as NSError?
            }
            closure(self)
        }
    }
    
    //MARK: - Private -
    
    func parseResponse(_ response: [String : AnyObject]) -> Intent? {
        return Intent(withDictionary: response)
    }
}

Класс Intent - для получения client_secret, чтобы передать его классу STPSetupIntentConfirmParams

class Intent: NSObject {
    
    var client_secret: String?
    
    //MARK: Parsing
    
    init(withDictionary dictionary: Dictionary<String, AnyObject>) {
        
        if let client_secret = dictionary["client_secret"] as? String {
            self.client_secret = client_secret
        }
        super.init()
    }
    
    override init() {
        super.init()
    }
}

Ошибка в блоке paymentManager.confirmSetupIntent( case .failed: …)

ERROR = Optional(Error Domain=com.stripe.lib Code=50 "No such setupintent: seti_1FOOCSE1ZKr3K8CHdpgz6gtL" UserInfo={com.stripe.lib:ErrorMessageKey=No such setupintent: seti_1FOOCSE1ZKr3K8CHdpgz6gtL, com.stripe.lib:StripeErrorCodeKey=resource_missing, com.stripe.lib:StripeErrorTypeKey=invalid_request_error, com.stripe.lib:ErrorParameterKey=intent, NSLocalizedDescription=No such setupintent: seti_1FOOCSE1ZKr3K8CHdpgz6gtL})