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

Кнопка "Отмена" при оплате ApplePay показывает окошки оплаты снова #21

Closed aminbenarieb closed 6 years ago

aminbenarieb commented 6 years ago

Проблема: при отмени оплаты ApplePay, это окошко покывается заново и так снова и снова.

Посмотрел код, который доступен, при нажатии на кнопку отмены дергается делегат PKPaymentAuthorizationViewControllerDelegate, точнее его метод paymentAuthorizationViewControllerDidFinish. Посмотрел, что происходит: 1.

func paymentAuthorizationViewControllerDidFinish(_ controller: PKPaymentAuthorizationViewController) {
        if case .failed = paymentResult {
            output?.presentPaymentMethodsModule()
        }
    }

2.

func presentPaymentMethodsModule() {
        let paymentMethodsInputData
            = PaymentMethodsModuleInputData(clientApplicationKey: inputData.clientApplicationKey,
                                            gatewayId: inputData.gatewayId,
                                            amount: inputData.amount,
                                            tokenizationSettings: inputData.tokenizationSettings,
                                            testModeSettings: inputData.testModeSettings)

        DispatchQueue.main.async { [weak self] in
            guard let strongSelf = self else { return }
            strongSelf.router.presentPaymentMethods(inputData: paymentMethodsInputData,
                                                    moduleOutput: strongSelf)
        }
    }
  1. func presentPaymentMethods(inputData: PaymentMethodsModuleInputData,
                               moduleOutput: PaymentMethodsModuleOutput) {
        if let module = transitionHandler?.modules.last as? PaymentMethodsViewController {
            let paymentMethodsModule = PaymentMethodsAssembly.makeModule(inputData: inputData,
                                                                         moduleOutput: moduleOutput,
                                                                         view: module)
            paymentMethodsModule.output.setupView()
        } else {
            let paymentMethodsModule = PaymentMethodsAssembly.makeModule(inputData: inputData,
                                                                         moduleOutput: moduleOutput)
            transitionHandler?.show(paymentMethodsModule, sender: self)
        }
    }

Если я ничего не упустил, тут просто показывается снова окошко оплаты? И как тогда отменить ApplePay?

oltv00 commented 6 years ago

@aminbenarieb Спасибо за репорт. Проблема известная. В ближайшем релизе выпустим фикс. Релиз планируем выпустить сегодня.

oltv00 commented 6 years ago

@aminbenarieb https://github.com/yandex-money/yandex-checkout-payments-swift/releases Выпустили версию 1.3.4 с фиксом.

aminbenarieb commented 6 years ago

Пофиксилось, спасибо 🙂👍.