Так что в основном у меня такая же настройка, как в примере с документами Braintree, но я пишу в div вручную, потому что я использую angular материал для реальной формы.
Вот HTML code:
<form action="/" id="braintree-workaround-input" method="post">
<label for="cc-input">Card Number</label>
<div id="cc-input"></div>
<label for="cvv-input">CVV</label>
<div id="cvv-input"></div>
<label for="exp-input">Expiration Date</label>
<div id="exp-input"></div>
<input type="submit" value="Pay" />
</form>
Вот код для записи данных в div:
document.getElementById('cc-input').innerText = this.ccInput;
document.getElementById('exp-input').innerText = this.expDateInput;
document.getElementById('cvv-input').innerText = this.cvvInput;
Вот код для настройки размещенных полей (который работает):
console.log('Token', token);
const client = await braintree.client.create({
authorization: token
});
console.log('Client', client);
try {
this.hostedFieldsInstance = await braintree.hostedFields.create({
client,
fields: {
number: { selector: '#cc-input' },
expirationDate: { selector: '#exp-input' },
cvv: { selector: '#cvv-input' },
/*postalCode: { selector: '#post-input' }*/
}
});
console.log('SUCC')
} catch (e) {
console.log('NO SUCC')
console.error(e)
}
А вот код, который должен произойти при отправке данных:
console.log('RUNNING TOKENIZE')
try {
const nonce = await this.hostedFieldsInstance.tokenize();
console.log('NONCE', nonce);
console.log('SUCC')
} catch (e) {
console.log('NO SUCC')
console.error(e)
}
Но когда я пытаюсь сделать это со следующими данными:
cc: "4111 1111 1111 1111"
exp: "05/21"
cvv: "123"
Ничего не получается поставить после "RUNNING TOKENIZE"
.
Пример данных находится внутри div, когда я использую dev-tools для проверки, так что это не проблема.
Кто-нибудь здесь имеет какое-либо представление, почему ? Был бы очень признателен.