Я пытался использовать поля, размещенные в Braintree, с Polymer, но это не сработало (по-видимому, braintree пока не говорит о поддержке), поэтому я решил встроить iframe в полимер, который будет указывать на серверную часть сервера nodejs, которая будет обрабатывать платежи.страница, однако, когда я посещаю этот URL напрямую, я получаю: err = null
Но когда я встраиваю страницу в полимер, я получаю: {name: "BraintreeError", код: "HOSTED_FIELDS_TIMEOUT", сообщение: "Hosted Fieldsистекло время ожидания при попытке установить. ", введите:" UNKNOWN ", подробности: undefined}.
Пытался заставить его работать в полимере, используя https://codepen.io/braintree/pen/NbqPVO, но, похоже, он не работает сПолимер 3. // установка shadow dom var btfields = document.querySelector ('# braintree-fields') var shadow = btfields.createShadowRoot () var template = document.querySelector ('# braintree-fields-template')
shadow.appendChild(template.content)
template.remove()
// setup bt
braintree.client.create({
authorization: 'sandbox_g42y39zw_348pk9cgf3bgyw2b'
}, function (clientErr, clientInstance) {
if (clientErr) {
// Handle error in client creation
return;
}
var options = {
client: clientInstance,
styles: {
'input': {
'font-size': '14px'
},
'input.invalid': {
'color': 'red'
},
'input.valid': {
'color': 'green'
}
},
fields: {
number: {
selector: '#card-number',
placeholder: '4111 1111 1111 1111'
},
cvv: {
selector: '#cvv',
placeholder: '123'
},
expirationDate: {
selector: '#expiration-date',
placeholder: '10/2019'
}
}
};
braintree.hostedFields.create(options, function (hostedFieldsErr, hostedFieldsInstance) {
if (hostedFieldsErr) {
// Handle error in Hosted Fields creation
return;
}
var btn = shadow.querySelector('#submit')
btn.addEventListener('click', function (event) {
event.preventDefault()
hostedFieldsInstance.tokenize(function (tokenizeError, payload) {
if (tokenizeError) {
console.error(tokenizeError)
} else {
alert('Send payload.nonce to server: ' + payload.nonce)
}
})
})
});
});
Сбой метода braintree.hostedFields.create