2017 © Pedro Peláez
 

library modulpos-php-api-client

PHP client for modulpos API Fiscal Service

image

bigperson/modulpos-php-api-client

PHP client for modulpos API Fiscal Service

  • Saturday, December 16, 2017
  • by bigperson
  • Repository
  • 1 Watchers
  • 6 Stars
  • 73 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 4 Versions
  • 33 % Grown

The README.md

PHP клиент для API автоматической фискализации чеков интернет-магазинов Модуль.Кассы

StyleCI, (*1)

Пакет предоставляет удобный интерфейс для общения с API Модуль.Кассы для отправки данных чеков в сервис фискализации. Пакет упрощает разработку модулей интеграции интернет-магазина с севисом фискализации Модуль.Кассы., (*2)

Часть описания дублирует оригинал документации по API Модуль.Кассы, (*3)

Требования

  • php ^7.1
  • guzzlehttp/guzzle (или любой клиент следующий интерфейсу \GuzzleHttp\ClientInterface)
  • ext-json
  • curl

Установка

Вы можете установить данный пакет с помощью сomposer:, (*4)

composer require bigperson/modulpos-php-api-client

Для PHP 5.4-7.0 можеете использовать предыдущую версию, (*5)

composer require bigperson/modulpos-php-api-client 1.0

Использование

Схема процесса фискализации подробна описана в документации к API. В кратце необходимо связать точку продаж с интернет магазином, настроить отправку данных чеков и проверить статус отправленного чека., (*6)

Создания связки аккаунта и розничной точки

Для начала необходимо в личном кабинете Модуль.Кассы создать розничную точку продаж, активировать у неё функцию Использовать для печати документов интернет-магазина и получить идентификатор uuid. Далее вызываем связку, (*7)

$login = 'test@test.ru'; // Логин от аккаунта Модуль.Кассы
$password = 'password'; // Пароль от аккаунта Модуль.Кассы
$retailPointUuid = 'uuid'; // Идентификатор розничной точки
$testMode = true; // Тестовый режим
$associate = new \Bigperson\ModulposApiClient\Associate($login, $password, $retailPointUuid, $testMode);
$result = $associate->init();

В $result получим массив с данным userName и password которые будут использоватся для дальнейших обращений к API. Их нужно где-нибудь сохранить, например в базе данных., (*8)

Отправка данных чека на сервер фискализации (создание документа)

Для начала необходимо сформировать данные самого чека. Для этого достаточно для ваших моделей инплементировать интерфейсы ModulposOrderInterface для заказа, ModulposOrderItemInterface для товара в заказе, ModulposPaymentItemInterface для способа оплаты. Также вы можете использовать entity из пакета, или отнаследовать от них собственные классы переопределив методы на собственные., (*9)

use Bigperson\ModulposApiClient\Entity\Order;
use Bigperson\ModulposApiClient\Entity\Cashier;
use Bigperson\ModulposApiClient\Entity\OrderItem;
use Bigperson\ModulposApiClient\Entity\PaymentItem;

$dateTime =  new \DateTime('NOW');
// Создаем заказ
$order = Order::create([
    'documentUuid'     => uniqid(),
    'checkoutDateTime' => $dateTime->format(DATE_RFC3339),
    'orderId'          => rand(100000, 999999),
    'typeOperation'    => 'SALE',
    'customerContact'  => 'test@example.com',
]);

// Созадем товары
$orderItem1 = OrderItem::create([
    'price' => 100,
    'quantity' => 1,
    'vatTag' => OrderItem::VAT_NO,
    'name' => 'Test Product1'
]);

$orderItem2 = OrderItem::create([
    'price' => 200,
    'quantity' => 1,
    'vatTag' => OrderItem::VAT_NO,
    'name' => 'Test Product2'
]);

//Создаем способ оплаты
$paymentItem = PaymentItem::create([
    'type' => 'CARD',
    'sum' => 300
]);

// Добавляем товары и способ оплаты к заказу
$order->addItem($orderItem1);
$order->addItem($orderItem2);
$order->addPaymentItem($paymentItem);

//Создаем кассира
$cashier = Cashier::create([
    'name' => 'Test Cashier',
    'inn' => '123456789012',
    'position' => 'salesman',
]);

Далее объект заказа необходимо передать клиенту, также вы можете передать responseURL и печатать ли чек на кассе:, (*10)

$login = 'test@test.ru'; // Логин полученный на первом шаге
$password = 'password'; // Пароль полученный на первом шаге
$testMode = true; // Тестовый режим
$client = new \Bigperson\ModulposApiClient\Client($login, $password, $testMode);
$responseUrl =  'https://internet.shop.ru/order/982340931/checkout?completed=1';
$printReceipt = true; // Печатать ли чек на кассе
$result = $client->sendCheck($order, $responseUrl, $printReceipt, $cashier);

Все параметры кроме $order - опциональные. Если не передан объект ModulposCashierInterface то будут использованны данные из настроек торговой точки., (*11)

В ответ придет массив со статусом обработки документа и фискального накопителя., (*12)

Проверка статуса документа

Если при передаче данных чека был передан responseURL, то на него придет результат фискализации, если параметр задан не был, то вы можете самостоятельно проверить статус документа:, (*13)

$login = 'test@test.ru'; // Логин полученный на первом шаге
$password = 'password'; // Пароль полученный на первом шаге
$testMode = true; // Тестовый режим
$documentId = 'efbafcdd-113a-45db-8fb9-718b1fdc3524'; // id документа
$client = new \Bigperson\ModulposApiClient\Client($login, $password, $testMode);
$result = $client->getStatusDocumentById($documentId);

В ответ придет массив со статусом status, который может принимать значения: * QUEUED - документ принят в очередь на обработку; * PENDING - документ получен кассой для печати; * PRINTED - фискализирован успешно; * COMPLETED - результат фискализации отправлен (если было заполнено поле responseURL) в сервис источник; * FAILED - ошибка при фискализации., (*14)

Также в массив придет fnState - статус фискального накопителя, может принимать значения:, (*15)

  • ready ​- соединение с фискальным накопителем установлено, состояние позволяет фискализировать чеки
  • associated​ - клиент успешно связан с розничной точкой, но касса еще ни разу не вышла на связь и не сообщила свое состояние
  • failed ​- Проблемы получения статуса фискального накопителя. Этот статус не препятствует добавлению документов для фискализации. Все документы будут добавлены в очередь на сервере и дождутся момента когда касса будет в состоянии их фискализировать

Кроме того вы можете вызвать отдельно метод проверки статуса фискального накопителя (сервиса фискализации):, (*16)

$client = new \Bigperson\ModulposApiClient\Client($login, $password, $testMode);
$result = $client->getStatusFiscalService();

Развитие пакета

С целью активного развития пакета, рекомендуем создавать пулл-реквесты, а не только баг-репорты (issues). По любым проблемам рекомендуем открывать Баг-репорты с подробным описанием проблемы и последовательностью действия для воспроизведения бага., (*17)

Лицензия

MIT, (*18)

The Versions

16/12 2017

dev-master

9999999-dev

PHP client for modulpos API Fiscal Service

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anton Kartsev

16/12 2017

dev-analysis-8732lk

dev-analysis-8732lk

PHP client for modulpos API Fiscal Service

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anton Kartsev

26/07 2017

0.0.2

0.0.2.0

PHP client for modulpos API Fiscal Service

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anton Kartsev

25/07 2017

0.0.1

0.0.1.0

PHP client for modulpos API Fiscal Service

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anton Kartsev