javascript - img - title html css
Creando token de banda usando elementos separados (2)
En lugar de usar el tipo de elemento ''tarjeta'', necesitaba separar los elementos. En el ejemplo de la documentación, solo usan ''tarjeta'', por lo que cuando crean un token, simplemente pasan el objeto de la tarjeta al parámetro crear token.
stripe.createToken(card).then(function(result) {
});
¿Cómo puedo pasar estos múltiples objetos para crear un token?
var cardNumber = elements.create(''cardNumber'');
cardNumber.mount(''#card-number'');
var cardExpiry = elements.create(''cardExpiry'');
cardExpiry.mount(''#card-expiry'');
var cardCvc = elements.create(''cardCvc'');
cardCvc.mount(''#card-cvc'');
var cardPostalCode = elements.create(''postalCode'');
cardPostalCode.mount(''#card-postal-code'');
Aquí hay un jsfiddle del equipo de Stripe que toma un enfoque diferente:
var stripe = Stripe(''XYZ'');
var elements = stripe.elements();
var style = {
base: {
iconColor: ''#666EE8'',
color: ''#31325F'',
lineHeight: ''40px'',
fontWeight: 300,
fontFamily: ''Helvetica Neue'',
fontSize: ''15px'',
''::placeholder'': {
color: ''#CFD7E0'',
},
},
};
var cardNumberElement = elements.create(''cardNumber'', {
style: style
});
cardNumberElement.mount(''#card-number-element'');
var cardExpiryElement = elements.create(''cardExpiry'', {
style: style
});
cardExpiryElement.mount(''#card-expiry-element'');
var cardCvcElement = elements.create(''cardCvc'', {
style: style
});
cardCvcElement.mount(''#card-cvc-element'');
var postalCodeElement = elements.create(''postalCode'', {
style: style
});
postalCodeElement.mount(''#postal-code-element'');
function setOutcome(result) {
var successElement = document.querySelector(''.success'');
var errorElement = document.querySelector(''.error'');
successElement.classList.remove(''visible'');
errorElement.classList.remove(''visible'');
if (result.token) {
// In this example, we''re simply displaying the token
successElement.querySelector(''.token'').textContent = result.token.id;
successElement.classList.add(''visible'');
// In a real integration, you''d submit the form with the token to your backend server
//var form = document.querySelector(''form'');
//form.querySelector(''input[name="token"]'').setAttribute(''value'', result.token.id);
//form.submit();
} else if (result.error) {
errorElement.textContent = result.error.message;
errorElement.classList.add(''visible'');
}
}
cardNumberElement.on(''change'', function(event) {
setOutcome(event);
});
document.querySelector(''form'').addEventListener(''submit'', function(e) {
e.preventDefault();
stripe.createToken(cardNumberElement).then(setOutcome);
});
De la referencia de los Elements
.
elemento: el Elemento desde el que desea tokenizar datos. El elemento extraerá datos de otros elementos que haya creado en la misma instancia de elementos para tokenizar.
stripe.com/docs/elements/reference#stripe-create-token
Para que puedas inicializar elementos.
var elements = stripe.elements();
Y luego define / monta tus campos
var cardNumber = elements.create(''cardNumber'');
cardNumber.mount(''#card-number'');
var cardExpiry = elements.create(''cardExpiry'');
cardExpiry.mount(''#card-expiry'');
var cardCvc = elements.create(''cardCvc'');
cardCvc.mount(''#card-cvc'');
// creating a postal code element is deprecated
// var cardPostalCode = elements.create(''postalCode'');
// cardPostalCode.mount(''#card-postal-code'');
Entonces esto debería atraerlos a todos ya que son parte de los elements
stripe.createToken(cardNumber).then(doSomething);
Edición: el elemento del código postal ha quedado en desuso, así que lo eliminé de mi ejemplo. Si está utilizando campos separados y desea recopilar el código postal (u otros datos de dirección), debe hacerlo a través de un <input>
y luego pasarlo al objeto cardData
opcional cuando llame a stripe.createToken
https://stripe.com/docs/stripe-js/reference#elements-create
// <input id="postal-code" name="postal_code" class="field" placeholder="90210" />
var cardData = {
address_zip: document.getElementById(''postal-code'').value
}
stripe.createToken(cardNumber,cardData).then(doSomething);