igorbunov / checkbox-in-ua-php-sdk Goto Github PK
View Code? Open in Web Editor NEWUkraine checkbox api php sdk
Ukraine checkbox api php sdk
Не правильно повертає тип помилки для "Касир вже працює з даною касою" повертає NoActiveShift, а мало б повернути
AlreadyOpenedShift.
Рішення:
файл: CheckboxJsonApi.php
private function validateResponseStatus($json, int $statusCode): void
{
switch ($statusCode) {
case 400:
if (!empty($json['message']) and $json['message'] == 'Касир вже працює з даною касою') {
throw new AlreadyOpenedShift($json['message']);
}
if (!empty($json['message']) and $json['message'] == 'Зміну не відкрито') {
throw new NoActiveShift($json['message']);
}
version 1.2.10 php: 7.3 x64
Помічено тільки з ціною коли копійки = 20. Наприклад 2230.20 або 45.20 або 1980.20 і так далі.
Суть в тому що значення чомусь змінюється з 4520 на 4519
і при розрахунку карткою видає помилку: Для розрахунку карткою використання решти 0.01 не можливе.
Наприклад конкрений випадок:
echo $FinalPrice = $product['final_price']; // 2230.20
echo $FinalPrice = floatval($product['final_price']); // 2230.2
echo $FinalPrice = $FinalPrice * 100; //223020
після формування чеку результат:
["goods"]=>
object(igorbunov\Checkbox\Models\Receipts\Goods\Goods)#38 (1) {
["results"]=>
array(1) {
[0]=>
object(igorbunov\Checkbox\Models\Receipts\Goods\GoodItemModel)#47 (7) {
["good"]=>
object(igorbunov\Checkbox\Models\Receipts\Goods\GoodModel)#36 (8) {
["code"]=>
string(5) "12998"
["barcode"]=>
string(0) ""
["name"]=>
string(39) "PETLAS IMPERIUM PT515 91V 195/65R15"
["header"]=>
string(0) ""
["footer"]=>
string(0) ""
["uktzed"]=>
string(0) ""
["price"]=>
int(223019)
["taxes"]=>
object(igorbunov\Checkbox\Models\Receipts\Taxes\GoodTaxes)#44 (1) {
["results"]=>
array(1) {
[0]=>
object(igorbunov\Checkbox\Models\Receipts\Taxes\GoodTax)#42 (11) {
["id"]=>
string(36) "358d5577-0b7f-4501-b3f4-ccbe9380c33d"
["code"]=>
string(1) "1"
["label"]=>
string(13) "Без ПДВ"
["symbol"]=>
string(2) "Е"
["rate"]=>
string(1) "0"
["extra_rate"]=>
NULL
["included"]=>
string(1) "1"
["created_at"]=>
string(25) "2022-02-01T00:53:18+00:00"
["updated_at"]=>
string(25) "2022-02-01T00:54:06+00:00"
["value"]=>
int(0)
["extra_value"]=>
string(0) ""
}
}
}
}
["good_id"]=>
string(0) ""
["sum"]=>
int(0)
["quantity"]=>
int(1000)
["is_return"]=>
bool(false)
["taxes"]=>
object(igorbunov\Checkbox\Models\Receipts\Taxes\GoodTaxes)#44 (1) {
["results"]=>
array(1) {
[0]=>
object(igorbunov\Checkbox\Models\Receipts\Taxes\GoodTax)#42 (11) {
["id"]=>
string(36) "358d5577-0b7f-4501-b3f4-ccbe9380c33d"
["code"]=>
string(1) "1"
["label"]=>
string(13) "Без ПДВ"
["symbol"]=>
string(2) "Е"
["rate"]=>
string(1) "0"
["extra_rate"]=>
NULL
["included"]=>
string(1) "1"
["created_at"]=>
string(25) "2022-02-01T00:53:18+00:00"
["updated_at"]=>
string(25) "2022-02-01T00:54:06+00:00"
["value"]=>
int(0)
["extra_value"]=>
string(0) ""
}
}
}
["discounts"]=>
NULL
}
}
}
Как возвращать чеки суть в том что нету поля в которе вписать id чека к которому нужно вернуть все товары.
Вот таких параметров нет
"related_receipt_id": - даний параметр як опція для зв'язку між чеком продажу і повернення. При поверненні можна передати ід чеку продажу.
"previous_receipt_id": - id попереднього чеку, якщо його передати, то виконується перевірка чи є вказаний чек попереднім
"technical_return": - флаг про технічне повернення чеку.
Был как минимум один случай, что после отправки SellReceipt
в ответ вместо Receipt
прилетает null
.
Этот случай залогирован и, так уж случилось, момент отправки того чека есть на видео. Смогу предоставить в личной переписке, если надо.
зараз сервер на тех обслуговуванні і сервер віддає відповідь з кодом 503. на скільки я зрозумів, це досить часта річ по ночам. можливо ще є якісь 500-ки. точно не знаю бо тільки почав з чекбоксом розбиратись. якщо ти встигнеш залогінитись і хочеш закрити зміну, то можуть виникнути помилки. особисто я спочатку перевіряю чи відкрита зміна. якщо немає відкритої зміни, то мені має прийти нулл. але якщо помилка 503, то після обробки validateResponseStatus у мене throw не спрацьовує. воно просто пропускає і йде далі. скоріше за все, if (!empty($json['message'])) видає фолс. тому або переробити другу половину validateResponseStatus, або додати трохи 500-ок у свіч. хоча б, 503, який мені виліз прямо сьогодні. скріни не кидаю, бо в цьому ніякого сенсу. я все описав словами.
/api/v1/cashier/me
{
certificate_end - дата завершення дії ключа,
blocked,
organization:
{
subscription_exp - дата закінчення оплати or null
}
}
Додайте при можливості.....
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.