Оцените код, господа(JavaScript). Интеграция PCI-Wallet

266
28 мая 2017, 21:53

Код интеграции с ресурсом PCI Wallet. Я в JavaScript ориентируюсь очень поверхностно и спустя два дня хватания по верхам JS, получился такой 'код'(по рукам только не бейте), так что суть сего вопроса в слабых местах и потенциальных ошибках при работе данного кода. Уважаемые специалисты по JS, дайте совет, где поставить try-catch и т.д., да и за любую критику буду благодарен!) Заранее спасибо!

var request;
var urlAuthenticate = 'https://easypay.simnang.com/api/authenticate';
var urlAuthorization = 'https://easypay.simnang.com/api/users/obo-token';
var requestTypePost = 'POST';
var pass = 'pass';
var username = 'username';
function processingTokinization() {
    authenticate();
}
//---------easypay lib----------
var easypayCore = function (event) {
    easypay.core.create(e, success, error);
};
//-------authentication----------
function authenticate() {
    request = new XMLHttpRequest();
    request.open(requestTypePost, urlAuthenticate, true);
    request.setRequestHeader('Content-Type', 'application/json');
    request.setRequestHeader('Accept', 'application/json');
    request.onreadystatechange = processRequestChangeAuthenticate;
    var body = {
        'password': pass,
        'username': username
    };
    request.send(JSON.stringify(body));
}
//----------handler response from urlAuthenticate------------
var processRequestChangeAuthenticate = function () {
    if (request.readyState != 4) return;
    if (request.status === 201 || request.status === 200) {
        authorization(JSON.parse(request.responseText))
    } else {
        alert(request.status + ': ' + request.statusText);
    }
};
 //-----------authorization----------------
function authorization(tokenSecret) {
    request = new XMLHttpRequest();
    request.open(requestTypePost, urlAuthorization, true);
    request.setRequestHeader('Content-type', 'application/json');
    request.setRequestHeader('Accept', 'application/json');
    request.setRequestHeader('secret', tokenSecret.secret);
    request.setRequestHeader('authorization', tokenSecret.token);
    request.onreadystatechange = processRequestChangeAuthorization;
    request.send();
}
//-------------handler response from urlAuthorization--------------
var processRequestChangeAuthorization = function () {
    if (request.readyState != 4) return;
    if (request.status === 200 || request.status === 201) {
        easypay.core.set_credentials({'token': 
            JSON.parse(request.responseText).token});
        callEventWithForm();
    } else {
        alert(request.status + ': ' + request.statusText);
    }
};

 //-------------callbacks----------
var success = function (response) {
    console.log('In success');
    console.log(response.token);
    // request = new XMLHttpRequest();
    // request.open(requestTypePost, '/back-office/api/json/client/token', 
           true);
    // request.setRequestHeader('Content-type', 'application/json');
    // request.send(response)
};
var error = function (status, statusText, response) {
    console.log('In error');
    console.log('Status: ' + status);
    console.log('Status Text: ' + statusText);
    console.log(response);
};
//--------fill form-------------
function getForm() {
    var form = document.createElement('form');
    var country = document.createElement('input');
    var cardholderName = document.createElement('input');
    cardholderName.name = 'cardholder_name';
    cardholderName.value = 'ALEX SMITH';
    var expirationDate = document.createElement('input');
    expirationDate.name = 'expiration_date';
    expirationDate.value = '20/2020';
    var cardNumber = document.createElement('input');
    cardNumber.name = 'card_number';
    cardNumber.value = '4040404040404040';
    form.appendChild(cardholderName);
    form.appendChild(expirationDate);
    form.appendChild(cardNumber);
    return form;
}
function callEventWithForm() {
    var form = getForm();
    var event = new CustomEvent('submit', {
        detail: {
             'credit-card-data': form
        }
    });
    form.addEventListener('submit', easypayCore);
    form.dispatchEvent(event);
}
READ ALSO
Для каждого th в tr поменять цвет

Для каждого th в tr поменять цвет

Есть у меня вложенный цикл, а в нем строка:

316
Загрузка в веб-приложение файла из Google Drive

Загрузка в веб-приложение файла из Google Drive

Нужно загрузить в веб-приложение файл из Google Drive для обработки этого файла при помощи функций HTML5, не покидая страницы веб-приложенияНапример,...

252
Как работает караоке плеер по ссылке? [требует правки]

Как работает караоке плеер по ссылке? [требует правки]

Делаю караоке сайт для любителей народных песенПрошу подсказать как создать караоке плеер как на данном сайте

250
Как связать create-react-app с back-end сервером?

Как связать create-react-app с back-end сервером?

Всем привет, часа 3 сижу не могу связать реакт приложение с сервером на node (express) В документации пишут прописать proxy в packagejson

253