Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e70a65fa44 | |||
| ba5166f2cf | |||
| 93f5186b15 | |||
| f2b4952aa5 | |||
| 7899daf421 |
@@ -9,7 +9,8 @@
|
|||||||
|
|
||||||
namespace AtolOnline\Api;
|
namespace AtolOnline\Api;
|
||||||
|
|
||||||
use AtolOnline\{Entities\Document,
|
use AtolOnline\{Entities\Company,
|
||||||
|
Entities\Document,
|
||||||
Exceptions\AtolCorrectionInfoException,
|
Exceptions\AtolCorrectionInfoException,
|
||||||
Exceptions\AtolInvalidUuidException,
|
Exceptions\AtolInvalidUuidException,
|
||||||
Exceptions\AtolKktLoginEmptyException,
|
Exceptions\AtolKktLoginEmptyException,
|
||||||
@@ -172,7 +173,7 @@ class Kkt extends Client
|
|||||||
*/
|
*/
|
||||||
public function setCallbackUrl(string $url)
|
public function setCallbackUrl(string $url)
|
||||||
{
|
{
|
||||||
$this->kkt_config['prod']['callback_url'] = $url;
|
$this->kkt_config[$this->isTestMode() ? 'test' : 'prod']['callback_url'] = $url;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -390,7 +391,7 @@ class Kkt extends Client
|
|||||||
{
|
{
|
||||||
$headers['Content-type'] = 'application/json; charset=utf-8';
|
$headers['Content-type'] = 'application/json; charset=utf-8';
|
||||||
if ($this->getAuthToken()) {
|
if ($this->getAuthToken()) {
|
||||||
$headers['Token'] = $this->auth_token;
|
$headers['Token'] = $this->getAuthToken();
|
||||||
}
|
}
|
||||||
return $headers;
|
return $headers;
|
||||||
}
|
}
|
||||||
@@ -429,6 +430,7 @@ class Kkt extends Client
|
|||||||
* @param mixed $data Данные для передачи
|
* @param mixed $data Данные для передачи
|
||||||
* @param array|null $options Параметры Guzzle
|
* @param array|null $options Параметры Guzzle
|
||||||
* @return \AtolOnline\Api\KktResponse
|
* @return \AtolOnline\Api\KktResponse
|
||||||
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||||
* @see https://guzzle.readthedocs.io/en/latest/request-options.html
|
* @see https://guzzle.readthedocs.io/en/latest/request-options.html
|
||||||
*/
|
*/
|
||||||
protected function sendAtolRequest(string $http_method, string $api_method, $data = null, array $options = null)
|
protected function sendAtolRequest(string $http_method, string $api_method, $data = null, array $options = null)
|
||||||
@@ -449,6 +451,7 @@ class Kkt extends Client
|
|||||||
* Производит авторизацию на ККТ и получает токен доступа для дальнейших HTTP-запросов
|
* Производит авторизацию на ККТ и получает токен доступа для дальнейших HTTP-запросов
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||||
*/
|
*/
|
||||||
protected function auth()
|
protected function auth()
|
||||||
{
|
{
|
||||||
@@ -471,23 +474,36 @@ class Kkt extends Client
|
|||||||
* @param string $api_method Метод API
|
* @param string $api_method Метод API
|
||||||
* @param string $type Тип документа: receipt, correction
|
* @param string $type Тип документа: receipt, correction
|
||||||
* @param \AtolOnline\Entities\Document $document Объект документа
|
* @param \AtolOnline\Entities\Document $document Объект документа
|
||||||
|
* @param string|null $external_id Уникальный код документа (если не указан, то будет создан UUID)
|
||||||
* @return \AtolOnline\Api\KktResponse
|
* @return \AtolOnline\Api\KktResponse
|
||||||
|
* @throws \AtolOnline\Exceptions\AtolEmailTooLongException
|
||||||
|
* @throws \AtolOnline\Exceptions\AtolEmailValidateException
|
||||||
|
* @throws \AtolOnline\Exceptions\AtolInnWrongLengthException
|
||||||
|
* @throws \AtolOnline\Exceptions\AtolPaymentAddressTooLongException
|
||||||
* @throws \AtolOnline\Exceptions\AtolWrongDocumentTypeException Некорректный тип документа
|
* @throws \AtolOnline\Exceptions\AtolWrongDocumentTypeException Некорректный тип документа
|
||||||
* @throws \Exception
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
||||||
*/
|
*/
|
||||||
protected function registerDocument(string $api_method, string $type, Document $document)
|
protected function registerDocument(string $api_method, string $type, Document $document, ?string $external_id = null)
|
||||||
{
|
{
|
||||||
$type = trim($type);
|
$type = trim($type);
|
||||||
if (!in_array($type, ['receipt', 'correction'])) {
|
if (!in_array($type, ['receipt', 'correction'])) {
|
||||||
throw new AtolWrongDocumentTypeException($type);
|
throw new AtolWrongDocumentTypeException($type);
|
||||||
}
|
}
|
||||||
$this->auth();
|
$this->auth();
|
||||||
$data = [
|
if ($this->isTestMode()) {
|
||||||
'timestamp' => date('d.m.y H:i:s'),
|
$document->setCompany((new Company())
|
||||||
'external_id' => Uuid::uuid4()->toString(),
|
->setInn('5544332219')
|
||||||
'service' => ['callback_url' => $this->getCallbackUrl()],
|
->setPaymentAddress('https://v4.online.atol.ru')
|
||||||
$type => $document,
|
->setEmail('test@example.com')
|
||||||
];
|
->setSno('osn')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$data['timestamp'] = date('d.m.y H:i:s');
|
||||||
|
$data['external_id'] = $external_id ?: Uuid::uuid4()->toString();
|
||||||
|
$data[$type] = $document;
|
||||||
|
if ($this->getCallbackUrl()) {
|
||||||
|
$data['service'] = ['callback_url' => $this->getCallbackUrl()];
|
||||||
|
}
|
||||||
return $this->sendAtolRequest('POST', trim($api_method), $data);
|
return $this->sendAtolRequest('POST', trim($api_method), $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -496,7 +512,7 @@ class Kkt extends Client
|
|||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function getAuthToken()
|
public function getAuthToken(): ?string
|
||||||
{
|
{
|
||||||
return $this->auth_token;
|
return $this->auth_token;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ class Document extends Entity
|
|||||||
$json['company'] = $this->getCompany()->jsonSerialize(); // обязательно
|
$json['company'] = $this->getCompany()->jsonSerialize(); // обязательно
|
||||||
}
|
}
|
||||||
if ($this->getPayments()) {
|
if ($this->getPayments()) {
|
||||||
$json['payments'] = $this->getPayments()->jsonSerialize(); // обязательно
|
$json['payments'] = $this->payments->jsonSerialize(); // обязательно
|
||||||
}
|
}
|
||||||
if ($this->getCashier()) {
|
if ($this->getCashier()) {
|
||||||
$json['cashier'] = $this->getCashier();
|
$json['cashier'] = $this->getCashier();
|
||||||
@@ -417,7 +417,7 @@ class Document extends Entity
|
|||||||
$json['client'] = $this->getClient()->jsonSerialize(); // обязательно для некоррекционных
|
$json['client'] = $this->getClient()->jsonSerialize(); // обязательно для некоррекционных
|
||||||
}
|
}
|
||||||
if ($this->getItems()) {
|
if ($this->getItems()) {
|
||||||
$json['items'] = $this->getItems()->jsonSerialize(); // обязательно для некоррекционных
|
$json['items'] = $this->items->jsonSerialize(); // обязательно для некоррекционных
|
||||||
}
|
}
|
||||||
$json['total'] = $this->calcTotal(); // обязательно для некоррекционных
|
$json['total'] = $this->calcTotal(); // обязательно для некоррекционных
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user