$(window).bind("load", function() { Iugu.setAccountID(IUGU_ACCOUNT_ID); Iugu.setTestMode(true); Iugu.setup(); $('#catarse-iugu-loader').addClass('hidden'); $('#catarse_iugu_form').removeClass('hidden'); }); jQuery(function($) { $('#catarse_iugu_form').submit(function submitIuguForm(evt) { var form = $(this); Iugu.createPaymentToken(this, tokenResponseHandler); return false; function tokenResponseHandler(data) { if (data.errors) { showErrors(data.errors); } else { $("#token").val( data.id ); form.get(0).submit(); } } function showErrors(errors) { if (errors.number) { $('[data-iugu=number]').addClass('error'); } if (errors.verification_value) { $('[data-iugu=verification_value]').addClass('error'); } if (errors.expiration) { $('[data-iugu=expiration]').addClass('error'); } if (errors.first_name || errors.last_name) { $('[data-iugu=full_name]').addClass('error'); } $('#iugu-error-messages').html( Object.keys(errors) .map(function toPair(key) { if (!Array.isArray(errors[key])) { return { key: key, errors: [errors[key]] }; } return { key: key, errors: errors[key] }; }) .map(errorMessageFor) .map(toListItem) ); } function errorMessageFor(error) { var requiredErrors = { first_name: 'Você deve preencher seu primeiro nome', last_name: 'Você deve preencher seu último nome', expiration: 'Você deve preencher a data de expiração do cartão com uma data futura', verification_value: 'Você deve preencher o código de validação do cartão', number: 'Você deve preencher o número do cartão' }; if (error.errors[0] === 'is_invalid') { return requiredErrors[error.key]; } switch (error.key) { case 'number': if (error.errors.filter(isEqual("is not a valid credit card number")).length) { return 'O número do cartão não é válido'; } break; default: throw new Error('Unrecognized error: ', JSON.stringify(error)); } } function toListItem(content) { return '<li>' + content + '</li>'; } function isEqual(target) { return function delayedIsEqual(element) { return element == target; } } }); });