Как настроить дополнительные данные кредитной карты в BTCard, чтобы сервер Braintree предоставил действительный токен в swift 4? - PullRequest
0 голосов
/ 08 июля 2019

Документация разработчика по состоянию на июль 2019 года для Braintree SDK предлагает стандарт:

let braintreeClient = BTAPIClient(authorization: "<#CLIENT_AUTHORIZATION#>")!
let cardClient = BTCardClient(apiClient: braintreeClient)
let card = BTCard(number: "4111111111111111", expirationMonth: "12", expirationYear: "2018", cvv: nil)
cardClient.tokenizeCard(card) { (tokenizedCard, error) in
    // Communicate the tokenizedCard.nonce to your server, or handle error
}

Но когда при инициализации необходим почтовый индекс, класс принимает NSDictionary параметров.Проблема в том, что ключ не соответствует свойствам Braintree SDK

Я использовал:

let cardParameters: [String: Any] = [number:"4111111111111111",expirationMonth: "12", expirationYear: "2018", cvv: "111", postalCode: "94107"]
let card = BTCard.init(parameters: cardParameters)

The errors say : "Must provide postal code" or "cvv must be provided"

1 Ответ

0 голосов
/ 08 июля 2019

Хитрость заключается в том, чтобы использовать встроенные свойства, инициализирующие объект BTCard, и сопоставлять их, а не использовать NSDictionary. Так что это работает:

let braintreeClient = BTAPIClient(authorization: "<#CLIENT_AUTHORIZATION#>")!
let cardClient = BTCardClient(apiClient: braintreeClient)
let card = BTCard.init()
card.number = "4111111111111111"
card.expirationMonth = "12"
card.expirationYear = "2018"
card.cvv = "111"
card.postalCode = "94107"

cardClient.tokenizeCard(card) { (tokenizedCard, error) in
    // Communicate the tokenizedCard.nonce to your server, or handle error
}

Таким образом, объект BTCard возвращает приемлемые ключи ... это заняло у меня несколько часов, пытаясь найти разные ответы на этот вопрос. Брэйнтри и их доктора не предлагают это в качестве примера, но это был единственный способ, которым он работает для меня.

(Каждый из ваших бэкэндов может проверять эти данные перед отправкой в ​​Braintree, но это поможет при интеграции)

...