Closed mstroshin closed 4 years ago
@mstroshin
Привет.
Метод func didSuccessfullyPassedCardSec(on module:)
отрабатывает?
@oltv00 Нет. Ни при отклонении оплаты (что норм, судя по названию метода), ни при успешной оплате (деньги сняли) метод не дергается. А крутилка крутится.
Другие методы TokenizationModuleOutput отрабатывают.
При инициализации SDK передайте туда параметр isLoggingEnabled: true
и посмотрите на какой URL происходит редирект.
Если вы вызываете 3DS используя метод func start3dsProcess(requestUrl:)
и в модель TokenizationModuleInputData
не передаете returnUrl
, редирект должен быть на URL: https://custom.redirect.url/
В классе CardSecInteractor
в методе shouldProcessRequest
проверется есть ли нужный нам редирект.
Результат availableRedirects.isEmpty == false
должен вернуться true
чтобы 3DS закрылся.
Метод func start3dsProcess(requestUrl:)
не вызываем и returnUrl
не передаем. func shouldProcessRequest(_ request: URLRequest) -> Bool
не вызывается вообще.
2019-04-15 14:49:17 +0000: {
request: {
url: "https://payment.yandex.net/frontend-api/v3/tokens",
method: "POST",
headers: {
Authorization: "**************************************************************************",
Content-Type: "application/json"
},
body: {
{"amount":{"value":"3","currency":"RUB"},"payment_method_data":{"type":"bank_card","card":{"csc":"123","number":"123","expiry_year":"2020","expiry_month":"12"}},"tmx_session_id":"123","confirmation":{"type":"redirect","return_url":"https:\/\/custom.redirect.url\/"}}: ""
}
},
response: {
status: "200 (no error)",
headers: {
Date: "Mon, 15 Apr 2019 14:49:17 GMT",
Transfer-Encoding: "Identity",
Keep-Alive: "timeout=10000, max=100",
Content-Type: "application/json;charset=UTF-8",
Connection: "close"
},
body: "{
"payment_token" : "pt-123"
}"
}
}
Из лога понятно, что redirect_url = https://custom.redirect.url/
После того как передал confirmationUrl
в func start3dsProcess(requestUrl:)
, shouldProcessRequest
стал отрабатывать и возвращает true. Далее вызывается func didSuccessfullyPassedCardSec(on module:)
. Стало вроде все ок. Но есть вопрос: didSuccessfullyPassedCardSec
вызывается, если я отменю в 3ds транзакцию (например, в тинькофф внизу страницы есть кнопка отменить). Как определить успешную или отмененную транзакцию?
К слову, при вводе неправильных реквизитов (cvc кода) тоже вызывается didSuccessfullyPassedCardSec
@oltv00 подскажи, пожалуйста, в версии sdk 1.3.6 открывается redirectUrl, указанный нашим бэкендом. В мобильном клиенте никакого redirectUrl мы не передаем и 3ds открываем не через start3dsProcess(requestUrl:)
.
Теперь такой способ не поддерживается? (на версии 2.0.3)
@mstroshin
В версиях >2.0.0 появился параметр returnUrl
в структуре TokenizationModuleInputData
.
Если вы реализуете 3ds на своей стороне, необходимо передать в returnUrl
соответствующее значение.
Звучит как будто при использовании SDK новой версии returnUrl, передаваемый бэкендом при запросе оплаты, игнорируется. Вместо него теперь требуется передать returnUrl при получении платежного токена мобильным приложением (так написано в документации). Если клиент использует SDK 1.3.6, то returnUrl, формируемый бэкендом, используется. Это верное наблюдение? Не является ли это регрессией?
@mstroshin Привет! Актуальна ли еще проблема?
День добрый. После обновления YandexCheckoutPayments с версии 1.3.6 до 2.0.4 столкнулись с бесконечным loader'ом после того, как отменяем/подтверждаем покупку на экране ввода смс кода. https://dsh.re/e6bbb1 Ожидаем получать как раньше (1.3.6) ошибку или успех.