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

Периодически пропадает Apple pay на экране оплаты, Apple реджектит сборку #105

Closed fedorinovdmitry closed 3 years ago

fedorinovdmitry commented 3 years ago

Версия sdk 5.1.0. Ситуация следующая: Apple реджектит сборку по причине того, что не может найти, где используется Apple pay в нашем приложении. В процессе выяснения обнаружился следующий баг, оказывается на некоторых девайсах (iPhone 7, iPad pro 11 2020) при инициализации оплаты появляется экран выбора способа оплаты без выбора apple pay

Снимок экрана 2021-04-23 в 11 52 07

Но при этом на этой же сборке, на моем iPhone xs max экран выбора способа оплаты выглядит правильно и оплата отрабатывает:

Снимок экрана 2021-04-23 в 11 52 33

код по созданию данного модуля прикладываю: `let amountDecimal = pay_now.asDecimal()

    let clientApplicationKey = sdkSettings.client_token
    var paymentMethodTypes: PaymentMethodTypes = []

    if sdkSettings.payment_method_types.contains(.bank_card) {
        paymentMethodTypes.insert(.bankCard)
    }

    if sdkSettings.payment_method_types.contains(.apple_pay) {
        paymentMethodTypes.insert(.applePay)
    }
    let tokenizationSettings = TokenizationSettings(paymentMethodTypes: paymentMethodTypes)

    let applePayMerchantIdentifier = "наш id"

    let orderNo = String(format: Strings.YandexMoney.Message.orderno, orderNumber)
    let amount = Amount(value: amountDecimal, currency: .rub)
    let tokenizationModuleInputData = TokenizationModuleInputData(clientApplicationKey: clientApplicationKey,
                                                                  shopName: sdkSettings.title,
                                                                  purchaseDescription: orderNo,
                                                                  amount: amount,
                                                                  tokenizationSettings: tokenizationSettings,
                                                                  applePayMerchantIdentifier: applePayMerchantIdentifier,
                                                                  savePaymentMethod: SavePaymentMethod.off)

    let inputData: TokenizationFlow = .tokenization(tokenizationModuleInputData)

    self.tokenizerModule = TokenizationAssembly.makeModule(inputData: inputData,
                                                           moduleOutput: self)

    self.present(self.tokenizerModule!, animated: true, completion: nil)`

Во всех кейса PaymentMethodTypes.applePay добавляется в paymentMethodTypes и уходит в inputData.

Сейчас запросил новые TMXProfiling.xcframework и TMXProfilingConnections.xcframework, буду обновлять до 5.3.0. Но есть подозрения, что это не поможет, поэтому буду благодарен за помощь.

oltv00 commented 3 years ago

@fedorinovdmitry Привет!

ApplePay не может не появляться в списке по двум причинам:

  1. payment_method_type: apple_pay не приходит из API (можно проверить включив логирование, флаг isLoggingEnabled в TokenizationModuleInputData)
  2. На девайсе в Wallet нет токенизированных карт в ApplePay

Судя по кейсу: кажется что на некоторых девайсах нет токенизированных карт в Wallet.

fedorinovdmitry commented 3 years ago

@oltv00 Здравствуйте, действительно, с iPad перепривязка карт к apple pay помогла, думаю проблема скорей всего действительно была в отсутствии токенизированных карт в Wallet, так что большое спасибо и извиняюсь за беспокойство. Странно почему я сам об этом не подумал(( Осталось объяснить это Apple)