Braintree DropIn + Apple Pay, не отображается элемент Apple Pay

Я успешно вызываю DropIn представление из Braintree SDK. В настройках BTDropInRequest должны отображаться три элемента:

  1. PayPal
  2. Кредитные карты
  3. Apple Pay

Но почему-то в DropIn view отображаются только два элемента вместо трех:

  1. PayPal
  2. Кредитные карты

Что я сделал не так?

Подготовка:

  • Все сертификаты созданы и загружены
  • Apple Pay включен в возможностях проекта
  • Идентификатор продавца добавлен
  • Устройство, на котором я тестирую, поддерживает Apple Pay.

Вот код метода, который запрашивает:

func showDropIn(clientTokenOrTokenizationKey: String) {

        BTUIKAppearance.darkTheme()
        let request = BTDropInRequest()    
        let canMakePayments = PKPaymentAuthorizationViewController.canMakePayments() && PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: [.amex, .visa, .masterCard])
        request.applePayDisabled = !canMakePayments
        request.cardDisabled = false

        let dropIn = BTDropInController.init(authorization: clientTokenOrTokenizationKey, request: request) { (controller, result, error) in

            if (error != nil) {
                print("ERROR")
            } else if (result?.isCancelled == true) {
                print("CANCELLED")

            } else if let result = result{

                switch result.paymentOptionType {
                case .applePay ,.payPal,.masterCard,.discover,.visa:

                    if let paymentMethod = result.paymentMethod {

                        controller.dismiss(animated: true, completion: nil)
                    } else {

                        controller.dismiss(animated: true, completion: {

                            self.braintreeClient = BTAPIClient(authorization: clientTokenOrTokenizationKey)

                            let paymentRequest = self.paymentRequest()

                            if let vc = PKPaymentAuthorizationViewController(paymentRequest: paymentRequest)
                                as PKPaymentAuthorizationViewController?
                            {
                                vc.delegate = self
                                self.present(vc, animated: true, completion: nil)
                            } else {
                                print("Error: Payment request is invalid.")
                            }

                        })
                    }

                default:
                    print("error")
                    controller.dismiss(animated: true, completion: nil)
                }
            }
        }

        self.present(dropIn!, animated: true, completion: nil)
    }

person Roman Romanenko    schedule 10.10.2018    source источник
comment
Я столкнулся с той же проблемой. Оказалось, что Apple Pay не поддерживался в моей стране, хотя он поддерживался на устройстве, которое я использовал. Попробуйте запустить то же самое в симуляторе. Решил мою проблему.   -  person bhakti123    schedule 10.10.2018
comment
@ bhakti123, несколько часов назад получил ответ от поддержки Braintree. Apple Pay может поддерживать их развертывание в моей Украине, но Braintree пока этого не делает. Еще попробовал запустить приложение на симуляторе - результат тот же, кнопки Apple Pay нет. Вы готовились перед обедом на симуляторе?   -  person Roman Romanenko    schedule 10.10.2018
comment
@RomanRomanenko ты найдешь решение?   -  person balkaran singh    schedule 29.07.2019
comment
@balkaran singh, все, что я сделал, я сделал правильно. Кнопка не появлялась на моем локальном тестовом сервере. Тестировал в Украине, заказчики были в США. Когда серверная сторона завершила всю подготовку (они зарегистрировали учетную запись Braintree в качестве продавца в США), и я получил ключи с сервера, наконец, появилась кнопка Apple Pay!   -  person Roman Romanenko    schedule 30.07.2019


Ответы (1)


На основе документа от Braintree вы должны выполнить интеграцию Apple Pay, при этом будут поддерживаться устройство клиента и тип карты.

https://developers.braintreepayments.com/guides/drop-in/setup-and-integration/ios/v4#apple-pay

Также обратите внимание на этот момент

При использовании токена клиента с идентификатором клиента карта Apple Pay не будет автоматически сохранена в хранилище. Вы можете использовать одноразовый номер метода оплаты, чтобы создать метод оплаты на своем сервере.

person Chuong Tran    schedule 10.10.2018