IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Добавить ответ в эту темуОткрыть тему
АТОЛ 60ф - работа с пинпадом из Android Studio
Геннадий Тимофее...
сообщение 2.11.2018, 8:39
Сообщение #1


Прохожий


Группа: Новички
Сообщений: 2
Регистрация: 12.1.2017
Пользователь №: 131 454



Здравствуйте!
Имеются АТОЛ60ф без ФН в режиме ПД. Прошивка под ВТБ, ПО NewWay 4.0.2/588.
Пытаюсь через самописное приложение под андроид обеспечить прием платежей картами (функции собственно печати работают).
Не могу добиться взаимности от пинпада.Помогите, пожалуйста, разобраться, в чем состоит моя ошибка в нижеприведенном коде:
CODE

String settings = getPaycardSettings(); //считываются настройки, видимо их надо менять, но как именно?
long ptr=fptr.get_PinPadDevice();
if (paycard.put_PinPadDevice(ptr) < 0) {vLog("Не удалось обратиться к пинпаду");}
long md = fptr.get_ModemDevice();
if (paycard.put_ModemDevice(md) < 0) {vLog("Не удалось обратиться к модему");} //ДО ЭТОГО МЕСТА ОТРАБАТЫВАЕТ БЕЗ ОШИБОК
if (paycard.put_DeviceEnabled(true)<0) { vLog("Не удалось включить пинпад");} //Здесь получаю -23.

На put_DeviceEnabled получаю результат -23 (Ошибка инициализации). Ту же самую ошибку получаю, если пытаюсь сначала задать параметры платежа (сумму, тип авторизации и проч., всё это удается задать успешно) и запустить метод PrepareAuthorization().
Подозреваю, что необходимо задать какие-то параметры в настройках. В частности, кажутся подозрительными на экстремум поля KeyLoadPwd, SerialKeyNumber, TerminalID, URL , но понять, что именно надо в них внести (возможно какую-то информацию у банка запросить), пока не могу.
Буду очень благодарен за любую информацию по этим параметрам или вообще о работе с пинпадом в такой конфигурации.
В приложенном файле - настройки, полученные по getPaycardSettings(), вряд ли в них что-то интересное, но на всякий случай.

Прикрепленные файлы
Прикрепленный файл  atol60_settings.txt ( 1.85 килобайт ) Кол-во скачиваний: 2
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Геннадий Тимофее...
сообщение 22.11.2018, 14:14
Сообщение #2


Прохожий


Группа: Новички
Сообщений: 2
Регистрация: 12.1.2017
Пользователь №: 131 454



Большое спасибо техподдержке Атола за внимание и множество полезных советов в этой теме, а также в переписке через дупло (зачеркнуто) дилера.
Авторам руководств по драйверу платежных систем и по интеграции 60Ф отдельное спасибо за полноту и внятность созданных ими документов.
Для тех, кто вдруг застрянет в аналогичной ситуации, сообщаю результаты.
Самое главное -до замены драйверов 9.12 на 9.10 у меня ничего не получалось, уж не знаю, почему, может быть иначе надо импортировать библиотеки в проект, может еще что-то, но искать от добра добра не стал, 9.10 устраивает.
На всякий случай, вдруг кому пригодится, фрагменты работы с пинпадом (в принципе практически повторяют PaycardExampleActivity.java из папки samples в драйверах). Работа с настройками:
CODE

Intent pintent= new Intent(this, com.atol.drivers.paycard.settings.SettingsActivity.class);
pintent.putExtra(com.atol.drivers.paycard.settings.SettingsActivity.DEVICE_SETTINGS, paycard.get_DeviceSettings());
startActivityForResult(pintent, pinpadRC);
return true;
//(в форме настроек собственно в приложении выбираю arcus2).
//Потом в обработчике результатов
if (requestCode == pinpadRC) {
nastrpinpada= data.getExtras().getString(com.atol.drivers.paycard.settings.SettingsActivity.DEVICE_SETTINGS);
//сохранение в настройках приложения пропустил за банальностью, чтение потом этих настроек при запуске приложения - тоже}

Код собственно приема платежа (в первом сообщении он был в сильно сокращенном виде) без печати чека ККМ:
CODE
public void priemplatkart(float summa) {
if (fptr.put_DeviceEnabled(true) < 0) {Oshibka("Не удалось включить принтер документов (ККМ)");return;}
if (paycard.put_DeviceSettings(nastrpinpada) < 0) {Oshibka("Не удалось установить настройки пинпада! Задайте их через меню!");return;}
if (paycard.put_PinPadDevice(fptr.get_PinPadDevice()) < 0) {Oshibka("Не удалось обратиться к пинпаду");return;}
if (paycard.put_ModemDevice(fptr.get_ModemDevice()) < 0) {Oshibka("Не удалось обратиться к модему ККМ или подключить его к пинпаду");return;}
if (fptr.GetStatus() < 0) {Oshibka("Не удалось получить состояние принтера документов (ККМ)");return;}
if (paycard.put_DeviceEnabled(true)<0) {Oshibka("Не удалось включить пинпад");return;}

// Выполнение авторизации: 2 – ввод карты ридером магнитных карт, идентификация клиента по ПИН;
if (paycard.put_AuthorizationType(IPaycard.AUTHORIZATION_READER_PIN) < 0) {Oshibka("Не удалось установить режим авторизации");return;}
if (paycard.put_OperationType(IPaycard.OPERATION_SUB) < 0) {Oshibka("Не удалось начать операцию");return;
}
//указываем сумму платежа
if (paycard.put_Sum(summa) < 0) {Oshibka("Не удалось установить сумму "+summa);return;}
if (paycard.put_CharLineLength(fptr.get_CharLineLength()) < 0) {Oshibka("put_CharLineLength"); return; }
while (paycard.PrepareAuthorization() != 0) {
int result = paycard.get_ResultCode();
if (result < -11900 && result > -12000) {
//запись в драйвер ПС дополнительных параметров (прим. - так и не понял, каких, но и без них вроде нормально smile.gif
} else {
Oshibka("Не удалось подготовить авторизацию на пинпаде");
return;
};
};
paycard.Authorization();
int authResult = paycard.get_ResultCode();
if (authResult == 0 || authResult < -12000) { pe4atSlipaPlatKart(); // Распечатать слип
return; } else Oshibka("Платеж не прошел!");
};


Платеж принимает, слип печатается.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Добавить ответ в эту темуОткрыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 5.4.2020, 12:07
 Яндекс цитирования  Rambler's Top100