Дополню. В 1С отладчиком пробежался до момента печати (сейчас пробивал возврат прихода по наличке). 1С формируют такую xml на вход драйверу ККТ:
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
<Parameters CashierName="Бородина Елена Валерьевна" CashierINN="232901071742" OperationType="2" TaxationSystem="5" SaleAddress="160022 Вологодская обл. Вологодский р-н. д.Родионцево д. 66" SaleLocation="Основной склад " CustomerEmail="" CustomerPhone="">
<CorrectionData Type="0" Date="2021-03-23T00:00:00" Number="0" Description="Неприменение ККТ"/>
<AgentData/>
<VendorData/>
</Parameters>
<Positions>
<FiscalString Name="" Quantity="1" PriceWithDiscount="100300" AmountWithDiscount="100300" DiscountAmount="0" Department="0" VATRate="none" VATAmount="0" PaymentMethod="4" CalculationSubject="1" MeasurementUnit="" ExciseAmount="0">
<AgentData/>
<VendorData/>
</FiscalString>
</Positions>
<Payments Cash="100300" ElectronicPayment="0" PrePayment="0" PostPayment="0" Barter="0"/>
</CheckPackage>
Тож же возврат прихода, но уже с оплатой по безналу:
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?>
<CheckPackage>
<Parameters CashierName="Бородина Елена Валерьевна" CashierINN="232901071742" OperationType="2" TaxationSystem="5" SaleAddress="160022 Вологодская обл. Вологодский р-н. д.Родионцево д. 66" SaleLocation="Основной склад " CustomerEmail="" CustomerPhone="">
<CorrectionData Type="0" Date="2021-03-23T00:00:00" Number="0" Description="Неприменение ККТ"/>
<AgentData/>
<VendorData/>
</Parameters>
<Positions>
<FiscalString Name="" Quantity="1" PriceWithDiscount="100300" AmountWithDiscount="100300" DiscountAmount="0" Department="0" VATRate="none" VATAmount="0" PaymentMethod="4" CalculationSubject="1" MeasurementUnit="" ExciseAmount="0">
<AgentData/>
<VendorData/>
</FiscalString>
</Positions>
<Payments Cash="0" ElectronicPayment="100300" PrePayment="0" PostPayment="0" Barter="0"/>
</CheckPackage>
Я так понимаю, 1С на вход подаёт верные данные. Но на выходе в ККТ в случае оплаты наличными выходит так:
Код: Выделить всё
[16:59:22.718] Client::on_msg_read() get msg from client str-buffer - {"sessionKey":"165241-3572321540","command":"CloseCheck","payment":{"cash":10030000}}
А если безнал, то так:
Код: Выделить всё
{"sessionKey":"115054-3554214461","command":"CloseCheck","payment":{"cash":0}}
Из описания API, понял, что если оплата "payment" в JSON передана в кол-ве 0, то считается по-умолчанию, что вид оплаты наличными.
Пример из документашки по API:
Код: Выделить всё
{
”sessionKey”: ”CAC1A797-6A48-474A-A08E-72A8CD3AEFE2”,
”command”: ”CloseCheck”,
”sendCheckTo”: ”buyer@somedomen.ru”,
”addInfo”: ”Текст с доп. информацией”,
”payment”: {
”cash”: 5000,
”ecash”: 300,
”prepayment”: 0,
”credit”: 0,
”consideration”: 0
}
}
Выходит у меня при оплате безналом не заполнилось поле "ecash", и касса считает что это оплата наличными.