Подскажите с примером на PHP

Mini web-сервер для печати чеков на фискальных регистраторах из мобильных приложений через HTTP запрос JSON.
Ответить
festoshar
Сообщения: 23
Зарегистрирован: 28 дек 2017, 03:27

Подскажите с примером на PHP

Сообщение festoshar » 10 янв 2018, 21:33

Не могу разобраться с чего начать. Имеется самописная система на PHP, сервер стоит локальный. Данные чеков хранятся в БД MySQL. Ваша тестовая страница, запущенная на нашем сервере работает - печатает чеки. Товар вручную вбитый в скрипт выводится на чек. Как нам соединить php с вашим сервером.
Запрос на php к нашей БД такой:

$str = mysql_query(SELECT * FROM kassa WHERE num_zak=123);
while($tabl = mysql_fetch_array($str)) {
//Вывод проданных товаров в заказе
}

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: Подскажите с примером на PHP

Сообщение Audim » 11 янв 2018, 03:43

Как я понял команду на регистрацию чека хотите отправить из PHP (а не со страницы в браузере через JS) ?

Тогда надо спрашивать PHP-шников - как сделать HTTP POST запрос....
Я сам не знаю PHP.

festoshar
Сообщения: 23
Зарегистрирован: 28 дек 2017, 03:27

Re: Подскажите с примером на PHP

Сообщение festoshar » 11 янв 2018, 12:20

Да правильно поняли, но в принципе можно и через JS. Но я так понимаю, что средствами JS не возможно прямое обращение к БД.

festoshar
Сообщения: 23
Зарегистрирован: 28 дек 2017, 03:27

Re: Подскажите с примером на PHP

Сообщение festoshar » 12 янв 2018, 18:19

Сам разобрался, как передать массив товаров из php в JS.

var mastov = <?php echo json_encode($mas_tov); ?>;

festoshar
Сообщения: 23
Зарегистрирован: 28 дек 2017, 03:27

Re: Подскажите с примером на PHP

Сообщение festoshar » 12 янв 2018, 21:38

Ребята подскажите где ошибка, написал следующий код на JS, но ККТ молчит, чек не выдает.

// Печать чеков
function RegisterCheck(NumDevice, TypeCheck, IsBarCode) {

var StrReg = new Object();
var CheckStrings = [];

StrReg =
{ Register:
{
Name: "товар",
Quantity: 1,
Price: 0,01,
Amount: 0,01,
Department: 0,
Tax: -1,
EAN13: "9254789547853",
SignMethodCalculation: 4,
SignCalculationObject: 1,
},
};



CheckStrings.push(StrReg);

// Подготовка данных команды
var Data = {

Command: "RegisterCheck",
NumDevice: NumDevice,
InnKkm: "",
KktNumber: "00106702321083",
Timeout: 30,
IdCommand: guid(),
IsFiscalCheck: true,
TypeCheck: TypeCheck,
NotPrint: false,
NumberCopies: 0,
CashierName: "Федоров А.С.",
CashierVATIN: "950602110121",
ClientAddress: "client@server.ru",
SenderEmail: "mail@magazin.ru",
TaxVariant: "2",
AdditionalProps: [
{ Print: true, PrintInHeader: false, NameProp: "Дата транзакции", Prop: "10.11.2016 10:30" },
],



CheckStrings: CheckStrings,

Cash: 1,
ElectronicPayment: 0.00,
AdvancePayment: 0,
Credit: 0,
CashProvision: 0,

};

ExecuteCommand(Data);

}

Audim
Администратор
Сообщения: 2395
Зарегистрирован: 17 мар 2015, 18:36

Re: Подскажите с примером на PHP

Сообщение Audim » 12 янв 2018, 23:48

На страничке настроек сервера зайдите в меню "Логи команд", найдите там строку с ошибкой по этому чеку, и все со странички лога пришлите сюда текстом...

festoshar
Сообщения: 23
Зарегистрирован: 28 дек 2017, 03:27

Re: Подскажите с примером на PHP

Сообщение festoshar » 15 янв 2018, 15:39

На код выше , который я написал, нет логов. Если делать на базе вашего примера и задавать явно CheckStrings, то логи нормальные.

festoshar
Сообщения: 23
Зарегистрирован: 28 дек 2017, 03:27

Re: Подскажите с примером на PHP

Сообщение festoshar » 15 янв 2018, 21:31

Сам полностью разобрался. Вот пример кода запроса из php на ККМ сервер:

<?php
$n=0;
// Какой нибудь цикл
$pos=0;
$mas_tov [$n][$pos] = $name; $pos++;
$mas_tov [$n][$pos] = 10; $pos++;
$mas_tov [$n][$pos] = 2; $pos++;
$mas_tov [$n][$pos] =2670009694050;
$n++;
?>

JS
// Переводим через JSON массив данных
var mastov = <?php echo json_encode($mas_tov); ?>;

var StrReg=new Object();
var CheckStrings = [];

var i = 0;
for (i=0;i<mastov.length;i++) {

StrReg =
{ Register:
{
Name: mastov[0],
Quantity: mastov[2],
Price: mastov[1],
Amount: mastov[1]*mastov[2],
Department: 0,
Tax: -1,
EAN13: mastov[3],
SignMethodCalculation: 4,
SignCalculationObject: 1,
},
};

CheckStrings.push(StrReg);
}
.....
////////////////////////////////////////////////
Далее присваиваем значение
var Data = {
.....
CheckStrings: CheckStrings,
.....

Ответить