Протокол работы с платежными системами

Рейтинг: 0Ответов: 1Опубликовано: 20.11.2014

Добрый день.

Вопрос таков: на джава скрипте был реализован платеж под мобильные устройства, но теперь поменялся протокол у компании, с которой заключен договор.

Как изменить протокол, но при этом сохранить интерфейс? Столкнулся с небольшой проблемой для профи. Если кто сможет помочь, расскажу более детально, спасибо.

Обновление

Задается все как раз в функции парсинга:

function parse_answer(data){

try {window.notebook.hideProgress();}
catch(e) {}
if (data.indexOf('ERROR:') == 0) {
    document.getElementById("btn_next").disabled = false;
    try {window.notebook.alert(data.replace("ERROR:",""));}
    catch(e) {alert(data.replace("ERROR:",""));}
} else {
    var ans=parse_str(data);
    var counter_code=eval(ans['counter_code']);

И еще много параметров.

Обновление

Хорошо, смотрите, я прошел дбагером, вижу ошибку:

Uncaught TypeError: Cannot read property 'length' of undefined

Как ее устранить, покаместь не пойму. Она возникает при вызове переменной counter_code, которая ранее объявлена, но значения не присваивалось ей. Как решить проблему, может, сейчас понятней будет?

Обновление

Ответ от сервера ajaxTimeout:

function ajaxTimeout(){
    arguments: null
    caller: null
    length: 0
    name: "ajaxTimeout"
    prototype: ajaxTimeout
    __proto__: function Empty() {}
    <function scope>
    i: 6
    key: "language"
    parameterString: "?plugin=givc&type=verify&account=1234&jek=132&period=201205&language=%3Cbr%20/%3E%0A%3Cfont%20size%3D
    parameters: Object
    account: "1234"
    jek: "132"
    language: "<br />↵<font size='1'><table class='xdebug-error xe-notice' dir='ltr' border='1' cellspacing='0' cellpadding='1'>↵<tr><th align='left' bgcolor='#f57900' colspan="
    period: "201205"
    plugin: "givc"
    type: "verify"

Функция обработки:

function parse_str(str, array){
    var glue1 = '=';
    var glue2 = '&';
    var array2 = str.split(glue2);
    var array3 = [];
    for(var x=0; x<array2.length; x++){
        var tmp = array2[x].split(glue1);
        array3[unescape(tmp[0])] = unescape(tmp[1]).replace(/[+]/g, ' ');
    }
    if(array){
        array = array3;
    } else{
        return array3;
    }
}
if ('undefined' == typeof String.prototype.crop) {
  String.prototype.crop = function() {
    return this.replace(/^\s+/, '').replace(/\s+$/, '');
  }
}

Ответы

▲ 1

Да, потрудитесь рассказать более подробно. Потому что сейчас ответ - тупо заменить протокол, не меняя интерфейса...

Обновление

то есть анс это всего лишь парсер;

Неа)

var ans=parse_str(data);

В ans кладется РЕЗУЛЬТАТ выполнения функции.
Хорошо. Тогда пришлите data.
Возникло подозрение, что вы строку пытаетесь мучать как полноценый объект.

Если как json строка, я написал выше. Если другой формат - написать свой парсер, который преобразует строку в массив (см так же: .split(), .join()).