yoomoney / yookassa-payments-swift

This library allows implementing payment acceptance into mobile apps on iOS and works as an extension to the YooMoney API
https://yookassa.ru/developers
MIT License
41 stars 41 forks source link

В iOS 13 падает TrustDefender #40

Closed yargeel closed 4 years ago

yargeel commented 4 years ago

Добрый день! В iOS 13 падает модуль TrustDefender, в 12 и более ранних все ок. Скрин: https://prnt.sc/pkbtyl Секция podfile: pod 'FunctionalSwift' pod 'CardIO', :git => 'https://github.com/card-io/card.io-iOS-SDK.git', :tag => '5.4.1'
pod 'SwiftLint' pod 'YandexCheckoutPayments', :git => 'https://github.com/yandex-money/yandex-checkout-payments-swift.git', :tag => '2.2.2' pod 'YandexMobileMetricaPush/Dynamic', '0.8.0' pod 'YandexMobileMetrica/Dynamic', '~> 3.7.0'

oltv00 commented 4 years ago

@yargeel Добрый день. Запросите у вашего менеджера по подключению Яндекс Кассы новую версию ThreatMetrix iOS SDK 5.4-84, и попробуйте с ней.

Еще можно посмотреть issues/39 и обновленную инструкцию по TrustDefender

yargeel commented 4 years ago

Добрый день! TrustDefender обновлен, проделал все манипуляции по вашей ссылке, почистил кеши и derived data - все равно падает на том же экране (загрузка платежного виджета банка), в коде - уже в другом месте.

Скрин: https://prnt.sc/pkhw4r Лог: https://justpaste.it/7gx2g

oltv00 commented 4 years ago

@yargeel А можете показать реализацию методов ?

  func tokenizationModule(_ module: TokenizationModuleInput,
                          didTokenize token: Tokens,
                          paymentMethodType: PaymentMethodType)

и

  func didFinish(on module: TokenizationModuleInput,
                 with error: YandexCheckoutPaymentsError?)
yargeel commented 4 years ago

Добрый вечер

func tokenizationModule(_ module: TokenizationModuleInput, didTokenize token: Tokens, paymentMethodType: PaymentMethodType) { DispatchQueue.main.async { [weak self] in guard let strongSelf = self else { return } strongSelf.token = token strongSelf.paymentMethodType = paymentMethodType

        APESuperHUD.show(style: .loadingIndicator(type: .standard), title: nil, message: "Отправляем...")

        let jsonRequest = ...

        Alamofire.request("\(App.BASEURL)/linkcard", method: .post, parameters: [:], encoding: jsonRequest, headers: hdrs())
            .responseJSON {
                response in

                APESuperHUD.dismissAll(animated: true)
                App.this.paymentToken = strongSelf.token?.paymentToken ?? ""

                if let data = response.result.value {
                    reportEvent("Карта привязана", [:])

                    let jsonResponse = JSON(data)
                    strongSelf.url3ds = jsonResponse["url"].stringValue
                    module.start3dsProcess(requestUrl: strongSelf.url3ds)
                }
        }
    }
}

func didFinish(on module: TokenizationModuleInput) {
    DispatchQueue.main.async { [weak self] in
        guard let strongSelf = self else { return }
        strongSelf.dismiss(animated: true)
    }
}
oltv00 commented 4 years ago

@yargeel А можете отследить из какого кода он попадает в поток где падает. По логу кажется что проблема где то в APESuperHUD.show(style...

yargeel commented 4 years ago

Да, проверили и поправили, спасибо. Новая проблема :( точнее, проблемы: 1) AppStore Connect Operation Error: Error ITMS-90087: "Unsupported Architectures. The executable for hoba.app/Frameworks/TrustDefender.framework contains unsupported architectures [x86_64, is86] 2) Error ITMS-90209: Invalid segment alignment. The app binary at hoba.app/Frameworks/TrustDefender.framework/TrustDefender does not have proper segment alignment. Try rebuilding the app with the latest Xcode version. 3) Error ITMS-90125: The binary is invalid. The encryption info in the LC_ENCRYPTION_INFO load command is either missing or invalid. ... 4) Warning ITMS-90080: The executable Payload/hoba.app/Frameworks/TrustDefender.framework is not a position independent executable. ...

Подскажите, пожалуйста, что с этим делать?

oltv00 commented 4 years ago

@yargeel Кажется что нужно выполнить пункт 3 из README.md

Добавьте в Build Phases -> New Run Script Phase, и добавьте скрипт из файла strip_framework.sh

yargeel commented 4 years ago

Сработало, спасибо!