Initial Commit
This commit is contained in:
@@ -0,0 +1,219 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
use InvalidArgumentException;
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\AuthorizationDetails;
|
||||
use YooKassa\Model\CancellationDetails;
|
||||
use YooKassa\Model\Confirmation\ConfirmationCodeVerification;
|
||||
use YooKassa\Model\Confirmation\ConfirmationDeepLink;
|
||||
use YooKassa\Model\Confirmation\ConfirmationEmbedded;
|
||||
use YooKassa\Model\Confirmation\ConfirmationQr;
|
||||
use YooKassa\Model\Confirmation\ConfirmationRedirect;
|
||||
use YooKassa\Model\Confirmation\ConfirmationExternal;
|
||||
use YooKassa\Model\ConfirmationType;
|
||||
use YooKassa\Model\Metadata;
|
||||
use YooKassa\Model\MonetaryAmount;
|
||||
use YooKassa\Model\Payment;
|
||||
use YooKassa\Model\PaymentInterface;
|
||||
use YooKassa\Model\PaymentMethod\AbstractPaymentMethod;
|
||||
use YooKassa\Model\PaymentMethod\PaymentMethodFactory;
|
||||
use YooKassa\Model\Recipient;
|
||||
use YooKassa\Model\Transfer;
|
||||
|
||||
/**
|
||||
* Абстрактный класс ответа от API, возвращающего информацию о платеже
|
||||
*
|
||||
* @package YooKassa\Request\Payments
|
||||
*/
|
||||
abstract class AbstractPaymentResponse extends Payment implements PaymentInterface
|
||||
{
|
||||
/**
|
||||
* Конструктор, устанавливает настройки платежа из ассоциативного массива
|
||||
*
|
||||
* @param array $sourceArray Массив с информацией о платеже, пришедший от API
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function fromArray($sourceArray)
|
||||
{
|
||||
$this->setId($sourceArray['id']);
|
||||
$this->setStatus($sourceArray['status']);
|
||||
$this->setAmount($this->factoryAmount($sourceArray['amount']));
|
||||
$this->setCreatedAt($sourceArray['created_at']);
|
||||
$this->setPaid($sourceArray['paid']);
|
||||
$this->setRefundable($sourceArray['refundable']);
|
||||
if (!empty($sourceArray['test'])) {
|
||||
$this->setTest($sourceArray['test']);
|
||||
}
|
||||
if (!empty($sourceArray['payment_method'])) {
|
||||
$this->setPaymentMethod($this->factoryPaymentMethod($sourceArray['payment_method']));
|
||||
}
|
||||
|
||||
if (!empty($sourceArray['description'])) {
|
||||
$this->setDescription($sourceArray['description']);
|
||||
}
|
||||
|
||||
if (!empty($sourceArray['recipient'])) {
|
||||
$recipient = new Recipient();
|
||||
if (!empty($sourceArray['recipient']['account_id'])) {
|
||||
$recipient->setAccountId($sourceArray['recipient']['account_id']);
|
||||
}
|
||||
if (!empty($sourceArray['recipient']['gateway_id'])) {
|
||||
$recipient->setGatewayId($sourceArray['recipient']['gateway_id']);
|
||||
}
|
||||
$this->setRecipient($recipient);
|
||||
}
|
||||
if (!empty($sourceArray['captured_at'])) {
|
||||
$this->setCapturedAt($sourceArray['captured_at']);
|
||||
}
|
||||
if (!empty($sourceArray['expires_at'])) {
|
||||
$this->setExpiresAt($sourceArray['expires_at']);
|
||||
}
|
||||
if (!empty($sourceArray['confirmation'])) {
|
||||
$confirmationType = $sourceArray['confirmation']['type'];
|
||||
switch ($confirmationType) {
|
||||
case ConfirmationType::REDIRECT:
|
||||
$confirmation = new ConfirmationRedirect();
|
||||
if (!empty($sourceArray['confirmation']['confirmation_url'])) {
|
||||
$confirmation->setConfirmationUrl($sourceArray['confirmation']['confirmation_url']);
|
||||
}
|
||||
if (empty($sourceArray['confirmation']['enforce'])) {
|
||||
$confirmation->setEnforce(false);
|
||||
} else {
|
||||
$confirmation->setEnforce($sourceArray['confirmation']['enforce']);
|
||||
}
|
||||
if (!empty($sourceArray['confirmation']['return_url'])) {
|
||||
$confirmation->setReturnUrl($sourceArray['confirmation']['return_url']);
|
||||
}
|
||||
break;
|
||||
|
||||
case ConfirmationType::EMBEDDED:
|
||||
$confirmation = new ConfirmationEmbedded();
|
||||
if (!empty($sourceArray['confirmation']['confirmation_token'])) {
|
||||
$confirmation->setConfirmationToken($sourceArray['confirmation']['confirmation_token']);
|
||||
}
|
||||
break;
|
||||
|
||||
case ConfirmationType::EXTERNAL:
|
||||
$confirmation = new ConfirmationExternal();
|
||||
break;
|
||||
|
||||
case ConfirmationType::CODE_VERIFICATION:
|
||||
$confirmation = new ConfirmationCodeVerification();
|
||||
break;
|
||||
|
||||
case ConfirmationType::DEEPLINK:
|
||||
$confirmation = new ConfirmationDeepLink();
|
||||
break;
|
||||
|
||||
case ConfirmationType::QR:
|
||||
$confirmation = new ConfirmationQr();
|
||||
if (!empty($sourceArray['confirmation']['confirmation_data'])) {
|
||||
$confirmation->setConfirmationData($sourceArray['confirmation']['confirmation_data']);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (isset($confirmation)) {
|
||||
$this->setConfirmation($confirmation);
|
||||
} else {
|
||||
throw new InvalidArgumentException('confirmation type '.$confirmationType.' is incorrect');
|
||||
}
|
||||
}
|
||||
if (!empty($sourceArray['refunded_amount'])) {
|
||||
$this->setRefundedAmount($this->factoryAmount($sourceArray['refunded_amount']));
|
||||
}
|
||||
if (!empty($sourceArray['receipt_registration'])) {
|
||||
$this->setReceiptRegistration($sourceArray['receipt_registration']);
|
||||
}
|
||||
if (!empty($sourceArray['metadata'])) {
|
||||
$metadata = new Metadata();
|
||||
foreach ($sourceArray['metadata'] as $key => $value) {
|
||||
$metadata->offsetSet($key, $value);
|
||||
}
|
||||
$this->setMetadata($metadata);
|
||||
}
|
||||
if (!empty($sourceArray['cancellation_details'])) {
|
||||
$cancellationDetails = $sourceArray['cancellation_details'];
|
||||
$party = isset($cancellationDetails['party']) ? $cancellationDetails['party'] : null;
|
||||
$reason = isset($cancellationDetails['reason']) ? $cancellationDetails['reason'] : null;
|
||||
$this->setCancellationDetails(new CancellationDetails($party, $reason));
|
||||
}
|
||||
if (!empty($sourceArray['authorization_details'])) {
|
||||
$authorizationDetails = $sourceArray['authorization_details'];
|
||||
$rrn = isset($authorizationDetails['rrn']) ? $authorizationDetails['rrn'] : null;
|
||||
$authCode = isset($authorizationDetails['auth_code']) ? $authorizationDetails['auth_code'] : null;
|
||||
$this->setAuthorizationDetails(new AuthorizationDetails($rrn, $authCode));
|
||||
}
|
||||
if (!empty($sourceArray['transfers'])) {
|
||||
$transfers = array();
|
||||
foreach ($sourceArray['transfers'] as $transferDefinition) {
|
||||
$transfers[] = new Transfer($transferDefinition);
|
||||
}
|
||||
|
||||
$this->setTransfers($transfers);
|
||||
}
|
||||
if (!empty($sourceArray['income_amount'])) {
|
||||
$this->setIncomeAmount($this->factoryAmount($sourceArray['income_amount']));
|
||||
}
|
||||
if (!empty($sourceArray['requestor'])) {
|
||||
$this->setRequestor($sourceArray['requestor']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Фабричный метод для создания способа оплаты
|
||||
*
|
||||
* @param array $options Настройки способа оплаты в массиве
|
||||
*
|
||||
* @return AbstractPaymentMethod Инстанс способа оплаты нужного типа
|
||||
*/
|
||||
private function factoryPaymentMethod($options)
|
||||
{
|
||||
$factory = new PaymentMethodFactory();
|
||||
|
||||
return $factory->factoryFromArray($options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Фабричный метод создания суммы
|
||||
*
|
||||
* @param array $options Сумма в виде ассоциативного массива
|
||||
*
|
||||
* @return AmountInterface Созданный инстанс суммы
|
||||
*/
|
||||
private function factoryAmount($options)
|
||||
{
|
||||
$amount = new MonetaryAmount(null, $options['currency']);
|
||||
if ($options['value'] > 0) {
|
||||
$amount->setValue($options['value']);
|
||||
}
|
||||
|
||||
return $amount;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,586 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
use YooKassa\Common\AbstractPaymentRequest;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Helpers\TypeCast;
|
||||
use YooKassa\Model\AirlineInterface;
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\Payment;
|
||||
use YooKassa\Model\PaymentData\AbstractPaymentData;
|
||||
use YooKassa\Model\ConfirmationAttributes\AbstractConfirmationAttributes;
|
||||
use YooKassa\Model\Metadata;
|
||||
use YooKassa\Model\ReceiptInterface;
|
||||
use YooKassa\Model\RecipientInterface;
|
||||
|
||||
/**
|
||||
* Класс объекта запроса к API на проведение нового платежа
|
||||
*
|
||||
* @package YooKassa\Request\Payments
|
||||
*
|
||||
* @property RecipientInterface $recipient Получатель платежа, если задан
|
||||
* @property AmountInterface $amount Сумма создаваемого платежа
|
||||
* @property string $description Описание транзакции
|
||||
* @property ReceiptInterface $receipt Данные фискального чека 54-ФЗ
|
||||
* @property string $paymentToken Одноразовый токен для проведения оплаты, сформированный YooKassa JS widget
|
||||
* @property string $payment_token Одноразовый токен для проведения оплаты, сформированный YooKassa JS widget
|
||||
* @property string $paymentMethodId Идентификатор записи о сохраненных платежных данных покупателя
|
||||
* @property string $payment_method_id Идентификатор записи о сохраненных платежных данных покупателя
|
||||
* @property AbstractPaymentData $paymentMethodData Данные используемые для создания метода оплаты
|
||||
* @property AbstractPaymentData $payment_method_data Данные используемые для создания метода оплаты
|
||||
* @property AbstractConfirmationAttributes $confirmation Способ подтверждения платежа
|
||||
* @property bool $savePaymentMethod Сохранить платежные данные для последующего использования. Значение true
|
||||
* инициирует создание многоразового payment_method.
|
||||
* @property bool $save_payment_method Сохранить платежные данные для последующего использования. Значение true
|
||||
* инициирует создание многоразового payment_method.
|
||||
* @property bool $capture Автоматически принять поступившую оплату
|
||||
* @property string $clientIp IPv4 или IPv6-адрес покупателя. Если не указан, используется IP-адрес TCP-подключения.
|
||||
* @property string $client_ip IPv4 или IPv6-адрес покупателя. Если не указан, используется IP-адрес TCP-подключения.
|
||||
* @property Metadata $metadata Метаданные привязанные к платежу
|
||||
*/
|
||||
class CreatePaymentRequest extends AbstractPaymentRequest implements CreatePaymentRequestInterface
|
||||
{
|
||||
const MAX_LENGTH_PAYMENT_TOKEN = 10240;
|
||||
|
||||
/**
|
||||
* @var RecipientInterface Получатель платежа
|
||||
*/
|
||||
private $_recipient;
|
||||
|
||||
/**
|
||||
* @var string Описание транзакции
|
||||
*/
|
||||
private $_description;
|
||||
|
||||
/**
|
||||
* @var string Одноразовый токен для проведения оплаты, сформированный YooKassa JS widget
|
||||
*/
|
||||
private $_paymentToken;
|
||||
|
||||
/**
|
||||
* @var string Идентификатор записи о сохраненных платежных данных покупателя
|
||||
*/
|
||||
private $_paymentMethodId;
|
||||
|
||||
/**
|
||||
* @var AbstractPaymentData Данные используемые для создания метода оплаты
|
||||
*/
|
||||
private $_paymentMethodData;
|
||||
|
||||
/**
|
||||
* @var AbstractConfirmationAttributes Способ подтверждения платежа
|
||||
*/
|
||||
private $_confirmation;
|
||||
|
||||
/**
|
||||
* @var bool Сохранить платежные данные для последующего использования. Значение true инициирует создание многоразового payment_method.
|
||||
*/
|
||||
private $_savePaymentMethod;
|
||||
|
||||
/**
|
||||
* @var bool Автоматически принять поступившую оплату
|
||||
*/
|
||||
private $_capture;
|
||||
|
||||
/**
|
||||
* @var string IPv4 или IPv6-адрес покупателя. Если не указан, используется IP-адрес TCP-подключения.
|
||||
*/
|
||||
private $_clientIp;
|
||||
|
||||
/**
|
||||
* @var AirlineInterface Объект с данными для продажи авиабилетов
|
||||
*/
|
||||
private $_airline;
|
||||
|
||||
/**
|
||||
* @var Metadata Метаданные привязанные к платежу
|
||||
*/
|
||||
private $_metadata;
|
||||
|
||||
/**
|
||||
* Возвращает объект получателя платежа
|
||||
* @return RecipientInterface|null Объект с информацией о получателе платежа или null если получатель не задан
|
||||
*/
|
||||
public function getRecipient()
|
||||
{
|
||||
return $this->_recipient;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет наличие получателя платежа в запросе
|
||||
* @return bool True если получатель платежа задан, false если нет
|
||||
*/
|
||||
public function hasRecipient()
|
||||
{
|
||||
return !empty($this->_recipient);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает описание транзакции
|
||||
* @return string
|
||||
*/
|
||||
public function getDescription()
|
||||
{
|
||||
return $this->_description;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает описание транзакции
|
||||
* @param string $value
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение превышает допустимую длину
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданное значение не является строкой
|
||||
*/
|
||||
public function setDescription($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_description = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$length = mb_strlen((string)$value, 'utf-8');
|
||||
if ($length > Payment::MAX_LENGTH_DESCRIPTION) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid description value', 0, 'CreatePaymentRequest.description', $value
|
||||
);
|
||||
}
|
||||
$this->_description = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid description value type', 0, 'CreatePaymentRequest.description', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет наличие описания транзакции в создаваемом платеже
|
||||
* @return bool True если описание транзакции есть, false если нет
|
||||
*/
|
||||
public function hasDescription()
|
||||
{
|
||||
return $this->_description !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает объект с информацией о получателе платежа
|
||||
* @param RecipientInterface|null $value Инстанс объекта информации о получателе платежа или null
|
||||
*/
|
||||
public function setRecipient($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_recipient = null;
|
||||
} elseif (is_object($value) && $value instanceof RecipientInterface) {
|
||||
$this->_recipient = $value;
|
||||
} else {
|
||||
throw new \InvalidArgumentException('Invalid recipient value type');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает одноразовый токен для проведения оплаты
|
||||
* @return string Одноразовый токен для проведения оплаты, сформированный YooKassa JS widget
|
||||
*/
|
||||
public function getPaymentToken()
|
||||
{
|
||||
return $this->_paymentToken;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет наличие одноразового токена для проведения оплаты
|
||||
* @return bool True если токен установлен, false если нет
|
||||
*/
|
||||
public function hasPaymentToken()
|
||||
{
|
||||
return !empty($this->_paymentToken);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает одноразовый токен для проведения оплаты, сформированный YooKassa JS widget
|
||||
* @param string $value Одноразовый токен для проведения оплаты
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение превышает допустимую длину
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданное значение не является строкой
|
||||
*/
|
||||
public function setPaymentToken($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_paymentToken = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$length = mb_strlen((string)$value, 'utf-8');
|
||||
if ($length > self::MAX_LENGTH_PAYMENT_TOKEN) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid paymentToken value', 0, 'CreatePaymentRequest.paymentToken', $value
|
||||
);
|
||||
}
|
||||
$this->_paymentToken = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid paymentToken value type', 0, 'CreatePaymentRequest.paymentToken', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор закиси платёжных данных покупателя
|
||||
* @return string Идентификатор записи о сохраненных платежных данных покупателя
|
||||
*/
|
||||
public function getPaymentMethodId()
|
||||
{
|
||||
return $this->_paymentMethodId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет наличие идентификатора записи о платёжных данных покупателя
|
||||
* @return bool True если идентификатор задан, false если нет
|
||||
*/
|
||||
public function hasPaymentMethodId()
|
||||
{
|
||||
return !empty($this->_paymentMethodId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор записи о сохранённых данных покупателя
|
||||
* @param string $value Идентификатор записи о сохраненных платежных данных покупателя
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Генерируется если переданные значение не является строкой или null
|
||||
*/
|
||||
public function setPaymentMethodId($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_paymentMethodId = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$this->_paymentMethodId = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid paymentMethodId value type in CreatePaymentRequest',
|
||||
0,
|
||||
'CreatePaymentRequest.CreatePaymentRequest',
|
||||
$value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает данные для создания метода оплаты
|
||||
* @return AbstractPaymentData Данные используемые для создания метода оплаты
|
||||
*/
|
||||
public function getPaymentMethodData()
|
||||
{
|
||||
return $this->_paymentMethodData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет установлен ли объект с методом оплаты
|
||||
* @return bool True если объект метода оплаты установлен, false если нет
|
||||
*/
|
||||
public function hasPaymentMethodData()
|
||||
{
|
||||
return !empty($this->_paymentMethodData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает объект с информацией для создания метода оплаты
|
||||
* @param AbstractPaymentData|null $value Объект с создания метода оплаты или null
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если был передан объект невалидного типа
|
||||
*/
|
||||
public function setPaymentMethodData($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_paymentMethodData = null;
|
||||
} elseif (is_object($value) && $value instanceof AbstractPaymentData) {
|
||||
$this->_paymentMethodData = $value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid paymentMethodData value type in CreatePaymentRequest',
|
||||
0,
|
||||
'CreatePaymentRequest.paymentMethodData',
|
||||
$value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает способ подтверждения платежа
|
||||
* @return AbstractConfirmationAttributes Способ подтверждения платежа
|
||||
*/
|
||||
public function getConfirmation()
|
||||
{
|
||||
return $this->_confirmation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен способ подтверждения платежа
|
||||
* @return bool True если способ подтверждения платежа был установлен, false если нет
|
||||
*/
|
||||
public function hasConfirmation()
|
||||
{
|
||||
return $this->_confirmation !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает способ подтверждения платежа
|
||||
* @param AbstractConfirmationAttributes|null $value Способ подтверждения платежа
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданное значение не является объектом типа
|
||||
* AbstractConfirmationAttributes или null
|
||||
*/
|
||||
public function setConfirmation($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_confirmation = null;
|
||||
} elseif (is_object($value) && $value instanceof AbstractConfirmationAttributes) {
|
||||
$this->_confirmation = $value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid confirmation value type in CreatePaymentRequest',
|
||||
0,
|
||||
'CreatePaymentRequest.confirmation',
|
||||
$value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает флаг сохранения платёжных данных
|
||||
* @return bool Флаг сохранения платёжных данных
|
||||
*/
|
||||
public function getSavePaymentMethod()
|
||||
{
|
||||
return $this->_savePaymentMethod;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен флаг сохранения платёжных данных
|
||||
* @return bool True если флыг был установлен, false если нет
|
||||
*/
|
||||
public function hasSavePaymentMethod()
|
||||
{
|
||||
return $this->_savePaymentMethod !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает флаг сохранения платёжных данных. Значение true инициирует создание многоразового payment_method.
|
||||
* @param bool $value Сохранить платежные данные для последующего использования
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Генерируется если переданный аргумент не кастится в bool
|
||||
*/
|
||||
public function setSavePaymentMethod($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_savePaymentMethod = null;
|
||||
} elseif (TypeCast::canCastToBoolean($value)) {
|
||||
$this->_savePaymentMethod = (bool)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid savePaymentMethod value type in CreatePaymentRequest',
|
||||
0,
|
||||
'CreatePaymentRequest.savePaymentMethod',
|
||||
$value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает флаг автоматического принятия поступившей оплаты
|
||||
* @return bool True если требуется автоматически принять поступившую оплату, false если нет
|
||||
*/
|
||||
public function getCapture()
|
||||
{
|
||||
return $this->_capture;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен флаг автоматического приняти поступившей оплаты
|
||||
* @return bool True если флаг автоматического принятия оплаты был установлен, false если нет
|
||||
*/
|
||||
public function hasCapture()
|
||||
{
|
||||
return $this->_capture !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает флаг автоматического принятия поступившей оплаты
|
||||
* @param bool $value Автоматически принять поступившую оплату
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Генерируется если переданный аргумент не кастится в bool
|
||||
*/
|
||||
public function setCapture($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_capture = null;
|
||||
} elseif (TypeCast::canCastToBoolean($value)) {
|
||||
$this->_capture = (bool)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid capture value type in CreatePaymentRequest', 0, 'CreatePaymentRequest.capture', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает IPv4 или IPv6-адрес покупателя
|
||||
* @return string IPv4 или IPv6-адрес покупателя
|
||||
*/
|
||||
public function getClientIp()
|
||||
{
|
||||
return $this->_clientIp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен IPv4 или IPv6-адрес покупателя
|
||||
* @return bool True если IP адрес покупателя был установлен, false если нет
|
||||
*/
|
||||
public function hasClientIp()
|
||||
{
|
||||
return $this->_clientIp !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает IP адрес покупателя
|
||||
* @param string $value IPv4 или IPv6-адрес покупателя
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданный аргумент не является строкой
|
||||
*/
|
||||
public function setClientIp($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_clientIp = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$this->_clientIp = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid clientIp value type in CreatePaymentRequest', 0, 'CreatePaymentRequest.clientIp', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return AirlineInterface
|
||||
*/
|
||||
public function getAirline()
|
||||
{
|
||||
return $this->_airline;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param AirlineInterface $value
|
||||
*/
|
||||
public function setAirline(AirlineInterface $value)
|
||||
{
|
||||
$this->_airline = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет были ли установлены данные длинной записи
|
||||
* @return bool
|
||||
*/
|
||||
function hasAirline()
|
||||
{
|
||||
return $this->_airline !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает данные оплаты установленные мерчантом
|
||||
* @return Metadata Метаданные, привязанные к платежу
|
||||
*/
|
||||
public function getMetadata()
|
||||
{
|
||||
return $this->_metadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет были ли установлены метаданные заказа
|
||||
* @return bool True если метаданные были установлены, false если нет
|
||||
*/
|
||||
public function hasMetadata()
|
||||
{
|
||||
return !empty($this->_metadata) && $this->_metadata->count() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает метаданные, привязанные к платежу
|
||||
* @param Metadata|array|null $value Метаданные платежа, устанавливаемые мерчантом
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданные данные не удалось интерпретировать как
|
||||
* метаданные платежа
|
||||
*/
|
||||
public function setMetadata($value)
|
||||
{
|
||||
if ($value === null || (is_array($value) && empty($value))) {
|
||||
$this->_metadata = null;
|
||||
} elseif (is_object($value) && $value instanceof Metadata) {
|
||||
$this->_metadata = $value;
|
||||
} elseif (is_array($value)) {
|
||||
$this->_metadata = new Metadata();
|
||||
foreach ($value as $key => $val) {
|
||||
$this->_metadata->offsetSet($key, (string)$val);
|
||||
}
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid metadata value type in CreatePaymentRequest', 0, 'CreatePaymentRequest.metadata', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет на валидность текущий объект
|
||||
* @return bool True если объект запроса валиден, false если нет
|
||||
*/
|
||||
public function validate()
|
||||
{
|
||||
if (!parent::validate()) {
|
||||
return false;
|
||||
}
|
||||
if ($this->hasPaymentToken()) {
|
||||
if ($this->hasPaymentMethodId()) {
|
||||
$this->setValidationError('Both paymentToken and paymentMethodID values are specified');
|
||||
return false;
|
||||
}
|
||||
if ($this->hasPaymentMethodData()) {
|
||||
$this->setValidationError('Both paymentToken and paymentData values are specified');
|
||||
return false;
|
||||
}
|
||||
} elseif ($this->hasPaymentMethodId()) {
|
||||
if ($this->hasPaymentMethodData()) {
|
||||
$this->setValidationError('Both paymentMethodID and paymentData values are specified');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает билдер объектов запросов создания платежа
|
||||
* @return CreatePaymentRequestBuilder Инстанс билдера объектов запрсов
|
||||
*/
|
||||
public static function builder()
|
||||
{
|
||||
return new CreatePaymentRequestBuilder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,351 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
use YooKassa\Common\AbstractPaymentRequestBuilder;
|
||||
use YooKassa\Common\Exceptions\EmptyPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Common\Exceptions\InvalidRequestException;
|
||||
use YooKassa\Model\Airline;
|
||||
use YooKassa\Model\AirlineInterface;
|
||||
use YooKassa\Model\ConfirmationAttributes\AbstractConfirmationAttributes;
|
||||
use YooKassa\Model\ConfirmationAttributes\ConfirmationAttributesFactory;
|
||||
use YooKassa\Model\Metadata;
|
||||
use YooKassa\Model\PaymentData\AbstractPaymentData;
|
||||
use YooKassa\Model\PaymentData\PaymentDataFactory;
|
||||
use YooKassa\Model\Recipient;
|
||||
use YooKassa\Model\RecipientInterface;
|
||||
|
||||
/**
|
||||
* Класс билдера объектов запрсов к API на создание платежа
|
||||
*
|
||||
* @package YooKassa\Request\Payments
|
||||
*/
|
||||
class CreatePaymentRequestBuilder extends AbstractPaymentRequestBuilder
|
||||
{
|
||||
/**
|
||||
* @var CreatePaymentRequest Собираемый объект запроса
|
||||
*/
|
||||
protected $currentObject;
|
||||
|
||||
/**
|
||||
* @var Recipient Получатель платежа
|
||||
*/
|
||||
private $recipient;
|
||||
|
||||
/**
|
||||
* @var PaymentDataFactory Фабрика методов проведения платежей
|
||||
*/
|
||||
private $paymentDataFactory;
|
||||
|
||||
/**
|
||||
* @var ConfirmationAttributesFactory Фабрика объектов методов подтверждения платежей
|
||||
*/
|
||||
private $confirmationFactory;
|
||||
|
||||
/**
|
||||
* @var Airline Длинная запись
|
||||
*/
|
||||
private $airline;
|
||||
|
||||
/**
|
||||
* Инициализирует объект запроса, который в дальнейшем будет собираться билдером
|
||||
* @return CreatePaymentRequest Инстанс собираемого объекта запроса к API
|
||||
*/
|
||||
protected function initCurrentObject()
|
||||
{
|
||||
parent::initCurrentObject();
|
||||
|
||||
$request = new CreatePaymentRequest();
|
||||
|
||||
$this->recipient = new Recipient();
|
||||
$this->airline = new Airline();
|
||||
|
||||
return $request;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор магазина получателя платежа
|
||||
* @param string $value Идентификатор магазина
|
||||
* @return CreatePaymentRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws EmptyPropertyValueException Выбрасывается если было передано пустое значение
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если было передано не строковое значение
|
||||
*/
|
||||
public function setAccountId($value)
|
||||
{
|
||||
$this->recipient->setAccountId($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор шлюза
|
||||
* @param string $value Идентификатор шлюза
|
||||
* @return CreatePaymentRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws EmptyPropertyValueException Выбрасывается если было передано пустое значение
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если было передано не строковое значение
|
||||
*/
|
||||
public function setGatewayId($value)
|
||||
{
|
||||
$this->recipient->setGatewayId($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает получателя платежа из объекта или ассоциативного массива
|
||||
* @param RecipientInterface|array $value Получатель платежа
|
||||
* @return CreatePaymentRequestBuilder
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если передан аргумент не валидного типа
|
||||
*/
|
||||
public function setRecipient($value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$this->recipient->fromArray($value);
|
||||
} elseif ($value instanceof RecipientInterface) {
|
||||
$this->recipient->setAccountId($value->getAccountId());
|
||||
$this->recipient->setGatewayId($value->getGatewayId());
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException('Invalid recipient value', 0, 'recipient', $value);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param AirlineInterface|array $value объект данных длинной записи или ассоциативный массив с данными
|
||||
*
|
||||
* @return CreatePaymentRequestBuilder
|
||||
*/
|
||||
public function setAirline($value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$this->airline->fromArray($value);
|
||||
} elseif ($value instanceof AirlineInterface) {
|
||||
$this->airline = clone $value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException('Invalid receipt value type', 0, 'receipt', $value);
|
||||
}
|
||||
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает одноразовый токен для проведения оплаты
|
||||
* @param string $value Одноразовый токен для проведения оплаты
|
||||
* @return CreatePaymentRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение превышает допустимую длину
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданное значение не является строкой
|
||||
*/
|
||||
public function setPaymentToken($value)
|
||||
{
|
||||
$this->currentObject->setPaymentToken($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор записи о сохранённых данных покупателя
|
||||
* @param string $value Идентификатор записи о сохраненных платежных данных покупателя
|
||||
* @return CreatePaymentRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Генерируется если переданные значение не является строкой или null
|
||||
*/
|
||||
public function setPaymentMethodId($value)
|
||||
{
|
||||
$this->currentObject->setPaymentMethodId($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает объект с информацией для создания метода оплаты
|
||||
* @param AbstractPaymentData|string|array|null $value Объект с создания метода оплаты или null
|
||||
* @param array $options Настройки способа оплаты в виде ассоциативного массива
|
||||
* @return CreatePaymentRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если был передан объект невалидного типа
|
||||
*/
|
||||
public function setPaymentMethodData($value, array $options = null)
|
||||
{
|
||||
if (is_string($value) && $value !== '') {
|
||||
if (empty($options)) {
|
||||
$value = $this->getPaymentDataFactory()->factory($value);
|
||||
} else {
|
||||
$value = $this->getPaymentDataFactory()->factoryFromArray($options, $value);
|
||||
}
|
||||
} elseif (is_array($value)) {
|
||||
$value = $this->getPaymentDataFactory()->factoryFromArray($value);
|
||||
}
|
||||
$this->currentObject->setPaymentMethodData($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает способ подтверждения платежа
|
||||
* @param AbstractConfirmationAttributes|string|array|null $value Способ подтверждения платежа
|
||||
* @param array|null $options Настройки способа подтверждения платежа в виде массива
|
||||
* @return CreatePaymentRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданное значение не является объектом типа
|
||||
* AbstractConfirmationAttributes или null
|
||||
*/
|
||||
public function setConfirmation($value, array $options = null)
|
||||
{
|
||||
if (is_string($value) && $value !== '') {
|
||||
if (empty($options)) {
|
||||
$value = $this->getConfirmationFactory()->factory($value);
|
||||
} else {
|
||||
$value = $this->getConfirmationFactory()->factoryFromArray($options, $value);
|
||||
}
|
||||
} elseif (is_array($value)) {
|
||||
$value = $this->getConfirmationFactory()->factoryFromArray($value);
|
||||
}
|
||||
$this->currentObject->setConfirmation($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает флаг сохранения платёжных данных. Значение true инициирует создание многоразового payment_method.
|
||||
* @param bool $value Сохранить платежные данные для последующего использования
|
||||
* @return CreatePaymentRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Генерируется если переданный аргумент не кастится в bool
|
||||
*/
|
||||
public function setSavePaymentMethod($value)
|
||||
{
|
||||
$this->currentObject->setSavePaymentMethod($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает флаг автоматического принятия поступившей оплаты
|
||||
* @param bool $value Автоматически принять поступившую оплату
|
||||
* @return CreatePaymentRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Генерируется если переданный аргумент не кастится в bool
|
||||
|
||||
*/
|
||||
public function setCapture($value)
|
||||
{
|
||||
$this->currentObject->setCapture($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает IP адрес покупателя
|
||||
* @param string $value IPv4 или IPv6-адрес покупателя
|
||||
* @return CreatePaymentRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданный аргумент не является строкой
|
||||
*/
|
||||
public function setClientIp($value)
|
||||
{
|
||||
$this->currentObject->setClientIp($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает метаданные, привязанные к платежу
|
||||
* @param Metadata|array|null $value Метаданные платежа, устанавливаемые мерчантом
|
||||
* @return CreatePaymentRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданные данные не удалось интерпретировать как
|
||||
* метаданные платежа
|
||||
*/
|
||||
public function setMetadata($value)
|
||||
{
|
||||
$this->currentObject->setMetadata($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает описание транзакции
|
||||
* @param string $value Описание транзакции
|
||||
* @return CreatePaymentRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение превышает допустимую длину
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданное значение не является строкой
|
||||
*/
|
||||
public function setDescription($value)
|
||||
{
|
||||
$this->currentObject->setDescription($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Строит и возвращает объект запроса для отправки в API ЮKassa
|
||||
* @param array|null $options Массив параметров для установки в объект запроса
|
||||
* @return CreatePaymentRequestInterface Инстанс объекта запроса
|
||||
*
|
||||
* @throws InvalidRequestException Выбрасывается если собрать объект запроса не удалось
|
||||
*/
|
||||
public function build(array $options = null)
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options);
|
||||
}
|
||||
$gatewayId = $this->recipient->getGatewayId();
|
||||
if (!empty($gatewayId)) {
|
||||
$this->currentObject->setRecipient($this->recipient);
|
||||
}
|
||||
if ($this->receipt->notEmpty()) {
|
||||
$this->currentObject->setReceipt($this->receipt);
|
||||
}
|
||||
if($this->airline->notEmpty()){
|
||||
$this->currentObject->setAirline($this->airline);
|
||||
}
|
||||
$this->currentObject->setAmount($this->amount);
|
||||
$this->currentObject->setTransfers($this->transfers);
|
||||
|
||||
return parent::build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает фабрику методов проведения платежей
|
||||
* @return PaymentDataFactory Фабрика методов проведения платежей
|
||||
*/
|
||||
protected function getPaymentDataFactory()
|
||||
{
|
||||
if ($this->paymentDataFactory === null) {
|
||||
$this->paymentDataFactory = new PaymentDataFactory();
|
||||
}
|
||||
return $this->paymentDataFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает фабрику для создания методов подтверждения платежей
|
||||
* @return ConfirmationAttributesFactory Фабрика объектов методов подтверждения платежей
|
||||
*/
|
||||
protected function getConfirmationFactory()
|
||||
{
|
||||
if ($this->confirmationFactory === null) {
|
||||
$this->confirmationFactory = new ConfirmationAttributesFactory();
|
||||
}
|
||||
return $this->confirmationFactory;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,223 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
use YooKassa\Model\Airline;
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\ConfirmationAttributes\AbstractConfirmationAttributes;
|
||||
use YooKassa\Model\Metadata;
|
||||
use YooKassa\Model\PaymentData\AbstractPaymentData;
|
||||
use YooKassa\Model\ReceiptInterface;
|
||||
use YooKassa\Model\RecipientInterface;
|
||||
use YooKassa\Model\TransferInterface;
|
||||
|
||||
/**
|
||||
* Interface CreatePaymentRequestInterface
|
||||
*
|
||||
* @package YooKassa\Request\Payments
|
||||
*
|
||||
* @property-read RecipientInterface|null $recipient Получатель платежа, если задан
|
||||
* @property-read AmountInterface $amount Сумма создаваемого платежа
|
||||
* @property-read ReceiptInterface $receipt Данные фискального чека 54-ФЗ
|
||||
* @property-read string $paymentToken Одноразовый токен для проведения оплаты, сформированный YooKassa JS widget
|
||||
* @property-read string $payment_token Одноразовый токен для проведения оплаты, сформированный YooKassa JS widget
|
||||
* @property-read string $paymentMethodId Идентификатор записи о сохраненных платежных данных покупателя
|
||||
* @property-read string $payment_method_id Идентификатор записи о сохраненных платежных данных покупателя
|
||||
* @property-read AbstractPaymentData $paymentMethodData Данные используемые для создания метода оплаты
|
||||
* @property-read AbstractPaymentData $payment_method_data Данные используемые для создания метода оплаты
|
||||
* @property-read AbstractConfirmationAttributes $confirmation Способ подтверждения платежа
|
||||
* @property-read bool $savePaymentMethod Сохранить платежные данные для последующего использования
|
||||
* @property-read bool $save_payment_method Сохранить платежные данные для последующего использования
|
||||
* @property-read bool $capture Автоматически принять поступившую оплату
|
||||
* @property-read string $clientIp IPv4 или IPv6-адрес покупателя. Если не указан, используется IP-адрес
|
||||
* TCP-подключения.
|
||||
* @property-read string $client_ip IPv4 или IPv6-адрес покупателя. Если не указан, используется IP-адрес
|
||||
* TCP-подключения.
|
||||
* @property-read Metadata $metadata Метаданные привязанные к платежу
|
||||
*/
|
||||
interface CreatePaymentRequestInterface
|
||||
{
|
||||
/**
|
||||
* Возвращает объект получателя платежа
|
||||
* @return RecipientInterface|null Объект с информацией о получателе платежа или null если получатель не задан
|
||||
*/
|
||||
function getRecipient();
|
||||
|
||||
/**
|
||||
* Проверяет наличие получателя платежа в запросе
|
||||
* @return bool True если получатель платежа задан, false если нет
|
||||
*/
|
||||
function hasRecipient();
|
||||
|
||||
/**
|
||||
* Возвращает сумму заказа
|
||||
* @return AmountInterface Сумма заказа
|
||||
*/
|
||||
function getAmount();
|
||||
|
||||
/**
|
||||
* Возвращает описание транзакции
|
||||
* @return string Описание транзакции
|
||||
*/
|
||||
function getDescription();
|
||||
|
||||
/**
|
||||
* Проверяет наличие описания транзакции в создаваемом платеже
|
||||
* @return bool True если описание транзакции установлено, false если нет
|
||||
*/
|
||||
function hasDescription();
|
||||
|
||||
/**
|
||||
* Возвращает чек, если он есть
|
||||
* @return ReceiptInterface|null Данные фискального чека 54-ФЗ или null если чека нет
|
||||
*/
|
||||
function getReceipt();
|
||||
|
||||
/**
|
||||
* Проверяет наличие чека в создаваемом платеже
|
||||
* @return bool True если чек есть, false если нет
|
||||
*/
|
||||
function hasReceipt();
|
||||
|
||||
/**
|
||||
* Возвращает одноразовый токен для проведения оплаты
|
||||
* @return string Одноразовый токен для проведения оплаты, сформированный YooKassa JS widget
|
||||
*/
|
||||
function getPaymentToken();
|
||||
|
||||
/**
|
||||
* Проверяет наличие одноразового токена для проведения оплаты
|
||||
* @return bool True если токен установлен, false если нет
|
||||
*/
|
||||
function hasPaymentToken();
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор закиси платёжных данных покупателя
|
||||
* @return string Идентификатор записи о сохраненных платежных данных покупателя
|
||||
*/
|
||||
function getPaymentMethodId();
|
||||
|
||||
/**
|
||||
* Проверяет наличие идентификатора записи о платёжных данных покупателя
|
||||
* @return bool True если идентификатор задан, false если нет
|
||||
*/
|
||||
function hasPaymentMethodId();
|
||||
|
||||
/**
|
||||
* Возвращает данные для создания метода оплаты
|
||||
* @return AbstractPaymentData Данные используемые для создания метода оплаты
|
||||
*/
|
||||
function getPaymentMethodData();
|
||||
|
||||
/**
|
||||
* Проверяет установлен ли объект с методом оплаты
|
||||
* @return bool True если объект метода оплаты установлен, false если нет
|
||||
*/
|
||||
function hasPaymentMethodData();
|
||||
|
||||
/**
|
||||
* Возвращает способ подтверждения платежа
|
||||
* @return AbstractConfirmationAttributes Способ подтверждения платежа
|
||||
*/
|
||||
function getConfirmation();
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен способ подтверждения платежа
|
||||
* @return bool True если способ подтверждения платежа был установлен, false если нет
|
||||
*/
|
||||
function hasConfirmation();
|
||||
|
||||
/**
|
||||
* Возвращает флаг сохранения платёжных данных
|
||||
* @return bool Флаг сохранения платёжных данных
|
||||
*/
|
||||
function getSavePaymentMethod();
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен флаг сохранения платёжных данных
|
||||
* @return bool True если флыг был установлен, false если нет
|
||||
*/
|
||||
function hasSavePaymentMethod();
|
||||
|
||||
/**
|
||||
* Возвращает флаг автоматического принятия поступившей оплаты
|
||||
* @return bool True если требуется автоматически принять поступившую оплату, false если нет
|
||||
*/
|
||||
function getCapture();
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен флаг автоматического приняти поступившей оплаты
|
||||
* @return bool True если флаг автоматического принятия оплаты был установлен, false если нет
|
||||
*/
|
||||
function hasCapture();
|
||||
|
||||
/**
|
||||
* Возвращает IPv4 или IPv6-адрес покупателя
|
||||
* @return string IPv4 или IPv6-адрес покупателя
|
||||
*/
|
||||
function getClientIp();
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен IPv4 или IPv6-адрес покупателя
|
||||
* @return bool True если IP адрес покупателя был установлен, false если нет
|
||||
*/
|
||||
function hasClientIp();
|
||||
|
||||
/**
|
||||
* Возвращает данные оплаты установленные мерчантом
|
||||
* @return Metadata Метаданные привязанные к платежу
|
||||
*/
|
||||
function getMetadata();
|
||||
|
||||
/**
|
||||
* Проверяет были ли установлены метаданные заказа
|
||||
* @return bool True если метаданные были установлены, false если нет
|
||||
*/
|
||||
function hasMetadata();
|
||||
|
||||
/**
|
||||
* Проверяет были ли установлены данные длинной записи
|
||||
* @return bool
|
||||
*/
|
||||
function hasAirline();
|
||||
|
||||
/**
|
||||
* Возвращает данные длинной записи
|
||||
* @return Airline
|
||||
*/
|
||||
function getAirline();
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
function hasTransfers();
|
||||
|
||||
/**
|
||||
* @return TransferInterface[]
|
||||
*/
|
||||
function getTransfers();
|
||||
}
|
||||
@@ -0,0 +1,357 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\ConfirmationAttributes\AbstractConfirmationAttributes;
|
||||
use YooKassa\Model\ConfirmationAttributes\ConfirmationAttributesRedirect;
|
||||
use YooKassa\Model\ConfirmationType;
|
||||
use YooKassa\Model\LegInterface;
|
||||
use YooKassa\Model\PassengerInterface;
|
||||
use YooKassa\Model\PaymentData\AbstractPaymentData;
|
||||
use YooKassa\Model\PaymentData\PaymentDataAlfabank;
|
||||
use YooKassa\Model\PaymentData\PaymentDataB2bSberbank;
|
||||
use YooKassa\Model\PaymentData\PaymentDataBankCard;
|
||||
use YooKassa\Model\PaymentData\PaymentDataGooglePay;
|
||||
use YooKassa\Model\PaymentData\PaymentDataSberbank;
|
||||
use YooKassa\Model\PaymentData\PaymentDataYooMoney;
|
||||
use YooKassa\Model\PaymentMethodType;
|
||||
use YooKassa\Model\ReceiptInterface;
|
||||
use YooKassa\Model\ReceiptItem;
|
||||
use YooKassa\Model\TransferInterface;
|
||||
|
||||
/**
|
||||
* Класс сериалайзера объекта запроса к API на проведение платежа
|
||||
*
|
||||
* @package YooKassa\Request\Payments
|
||||
*/
|
||||
class CreatePaymentRequestSerializer
|
||||
{
|
||||
private static $propertyMap = array(
|
||||
'reference_id' => 'referenceId',
|
||||
'payment_token' => 'paymentToken',
|
||||
'payment_method_id' => 'paymentMethodId',
|
||||
'client_ip' => 'clientIp',
|
||||
);
|
||||
|
||||
private static $paymentDataSerializerMap = array(
|
||||
PaymentMethodType::BANK_CARD => 'serializePaymentDataBankCard',
|
||||
PaymentMethodType::YOO_MONEY => 'serializePaymentDataYooMoney',
|
||||
PaymentMethodType::APPLE_PAY => 'serializePaymentDataMobile',
|
||||
PaymentMethodType::GOOGLE_PAY => 'serializePaymentDataGooglePay',
|
||||
PaymentMethodType::SBERBANK => 'serializePaymentDataSberbank',
|
||||
PaymentMethodType::ALFABANK => 'serializePaymentDataAlfabank',
|
||||
PaymentMethodType::WEBMONEY => 'serializePaymentData',
|
||||
PaymentMethodType::QIWI => 'serializePaymentDataMobilePhone',
|
||||
PaymentMethodType::CASH => 'serializePaymentDataMobilePhone',
|
||||
PaymentMethodType::MOBILE_BALANCE => 'serializePaymentDataMobilePhone',
|
||||
PaymentMethodType::INSTALLMENTS => 'serializePaymentData',
|
||||
PaymentMethodType::B2B_SBERBANK => 'serializePaymentDataB2BSberbank',
|
||||
PaymentMethodType::TINKOFF_BANK => 'serializePaymentData',
|
||||
PaymentMethodType::WECHAT => 'serializePaymentData',
|
||||
);
|
||||
|
||||
public function serialize(CreatePaymentRequestInterface $request)
|
||||
{
|
||||
$result = array();
|
||||
|
||||
if ($request->getAmount()->getValue() > 0) {
|
||||
$result['amount'] = $this->serializeAmount($request->getAmount());
|
||||
}
|
||||
|
||||
if ($request->hasTransfers()) {
|
||||
$result['transfers'] = $this->serializeTransfers($request->getTransfers());
|
||||
}
|
||||
|
||||
if ($request->hasDescription()) {
|
||||
$result['description'] = $request->getDescription();
|
||||
}
|
||||
if ($request->hasReceipt()) {
|
||||
$receipt = $request->getReceipt();
|
||||
if ($receipt->notEmpty()) {
|
||||
$result['receipt'] = $this->serializeReceipt($receipt);
|
||||
}
|
||||
}
|
||||
if ($request->hasRecipient()) {
|
||||
$result['recipient']['account_id'] = $request->getRecipient()->getAccountId();
|
||||
$result['recipient']['gateway_id'] = $request->getRecipient()->getGatewayId();
|
||||
}
|
||||
if ($request->hasPaymentMethodData()) {
|
||||
$method = self::$paymentDataSerializerMap[$request->getPaymentMethodData()->getType()];
|
||||
$result['payment_method_data'] = $this->{$method}($request->getPaymentMethodData());
|
||||
}
|
||||
if ($request->hasConfirmation()) {
|
||||
$confirmation = $request->getConfirmation();
|
||||
$result['confirmation'] = $this->serializeConfirmation($confirmation);
|
||||
}
|
||||
if ($request->hasMetadata()) {
|
||||
$result['metadata'] = $request->getMetadata()->toArray();
|
||||
}
|
||||
if ($request->hasCapture()) {
|
||||
$result['capture'] = $request->getCapture();
|
||||
}
|
||||
if ($request->hasSavePaymentMethod()) {
|
||||
$result['save_payment_method'] = $request->getSavePaymentMethod();
|
||||
}
|
||||
if ($request->hasAirline()) {
|
||||
$airline = $request->getAirline();
|
||||
$result['airline'] = array();
|
||||
|
||||
$ticketNumber = $airline->getTicketNumber();
|
||||
if (!empty($ticketNumber)) {
|
||||
$result['airline']['ticket_number'] = $ticketNumber;
|
||||
}
|
||||
$bookingReference = $airline->getBookingReference();
|
||||
if (!empty($bookingReference)) {
|
||||
$result['airline']['booking_reference'] = $bookingReference;
|
||||
}
|
||||
|
||||
foreach ($airline->getPassengers() as $passenger) {
|
||||
$result['airline']['passengers'][] = array(
|
||||
'first_name' => $passenger->getFirstName(),
|
||||
'last_name' => $passenger->getLastName(),
|
||||
);
|
||||
}
|
||||
|
||||
foreach ($airline->getLegs() as $leg) {
|
||||
$result['airline']['legs'][] = array(
|
||||
'departure_airport' => $leg->getDepartureAirport(),
|
||||
'destination_airport' => $leg->getDestinationAirport(),
|
||||
'departure_date' => $leg->getDepartureDate(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (self::$propertyMap as $name => $property) {
|
||||
$value = $request->{$property};
|
||||
if (!empty($value)) {
|
||||
$result[$name] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function serializeConfirmation(AbstractConfirmationAttributes $confirmation)
|
||||
{
|
||||
$result = array(
|
||||
'type' => $confirmation->getType(),
|
||||
);
|
||||
if ($locale = $confirmation->getLocale()) {
|
||||
$result['locale'] = $locale;
|
||||
}
|
||||
if ($confirmation->getType() === ConfirmationType::REDIRECT) {
|
||||
/** @var ConfirmationAttributesRedirect $confirmation */
|
||||
if ($confirmation->getEnforce()) {
|
||||
$result['enforce'] = $confirmation->getEnforce();
|
||||
}
|
||||
$result['return_url'] = $confirmation->getReturnUrl();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function serializeReceipt(ReceiptInterface $receipt)
|
||||
{
|
||||
$result = array();
|
||||
|
||||
/** @var ReceiptItem $item */
|
||||
foreach ($receipt->getItems() as $item) {
|
||||
$result['items'][] = $item->jsonSerialize();
|
||||
}
|
||||
|
||||
$customer = $receipt->getCustomer();
|
||||
if (!empty($customer)) {
|
||||
$result['customer'] = $customer->jsonSerialize();
|
||||
}
|
||||
|
||||
$value = $receipt->getTaxSystemCode();
|
||||
if (!empty($value)) {
|
||||
$result['tax_system_code'] = $value;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function serializeAmount(AmountInterface $amount)
|
||||
{
|
||||
return array(
|
||||
'value' => $amount->getValue(),
|
||||
'currency' => $amount->getCurrency(),
|
||||
);
|
||||
}
|
||||
|
||||
private function serializePaymentDataBankCard(PaymentDataBankCard $paymentData)
|
||||
{
|
||||
$result = array(
|
||||
'type' => $paymentData->getType(),
|
||||
);
|
||||
if ($paymentData->getCard() !== null) {
|
||||
$result['card'] = array(
|
||||
'cardholder' => $paymentData->getCard()->getCardholder(),
|
||||
'expiry_year' => $paymentData->getCard()->getExpiryYear(),
|
||||
'expiry_month' => $paymentData->getCard()->getExpiryMonth(),
|
||||
'number' => $paymentData->getCard()->getNumber(),
|
||||
'csc' => $paymentData->getCard()->getCsc(),
|
||||
);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function serializePaymentDataYooMoney(PaymentDataYooMoney $paymentData)
|
||||
{
|
||||
$result = array(
|
||||
'type' => $paymentData->getType(),
|
||||
);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function serializePaymentDataMobile(AbstractPaymentData $paymentData)
|
||||
{
|
||||
$result = array(
|
||||
'type' => $paymentData->getType(),
|
||||
);
|
||||
if ($paymentData->getPaymentData() !== null) {
|
||||
$result['payment_data'] = $paymentData->getPaymentData();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function serializePaymentDataSberbank(PaymentDataSberbank $paymentData)
|
||||
{
|
||||
$result = array(
|
||||
'type' => $paymentData->getType(),
|
||||
);
|
||||
if ($paymentData->getPhone() !== null) {
|
||||
$result['phone'] = $paymentData->getPhone();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function serializePaymentDataAlfabank(PaymentDataAlfabank $paymentData)
|
||||
{
|
||||
$result = array(
|
||||
'type' => $paymentData->getType(),
|
||||
);
|
||||
if ($paymentData->getLogin() !== null) {
|
||||
$result['login'] = $paymentData->getLogin();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function serializePaymentData(AbstractPaymentData $paymentData)
|
||||
{
|
||||
return array(
|
||||
'type' => $paymentData->getType(),
|
||||
);
|
||||
}
|
||||
|
||||
private function serializePaymentDataMobilePhone(AbstractPaymentData $paymentData)
|
||||
{
|
||||
$result = array(
|
||||
'type' => $paymentData->getType(),
|
||||
);
|
||||
if ($paymentData->getPhone() !== null) {
|
||||
$result['phone'] = $paymentData->getPhone();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PaymentDataGooglePay $paymentData
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function serializePaymentDataGooglePay(PaymentDataGooglePay $paymentData)
|
||||
{
|
||||
$result = array(
|
||||
'type' => $paymentData->getType(),
|
||||
'payment_method_token' => $paymentData->getPaymentMethodToken(),
|
||||
'google_transaction_id' => $paymentData->getGoogleTransactionId(),
|
||||
);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param PaymentDataB2bSberbank $paymentData
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function serializePaymentDataB2BSberbank(PaymentDataB2bSberbank $paymentData)
|
||||
{
|
||||
$result = array(
|
||||
'type' => $paymentData->getType(),
|
||||
);
|
||||
|
||||
if ($paymentData->getPaymentPurpose() !== null) {
|
||||
$result['payment_purpose'] = $paymentData->getPaymentPurpose();
|
||||
}
|
||||
|
||||
if ($paymentData->getVatData() !== null) {
|
||||
$vatData = array(
|
||||
'type' => $paymentData->getVatData()->getType(),
|
||||
);
|
||||
|
||||
if ($paymentData->getVatData()->getRate() !== null) {
|
||||
$vatData['rate'] = $paymentData->getVatData()->getRate();
|
||||
}
|
||||
|
||||
if ($paymentData->getVatData()->getAmount() !== null) {
|
||||
$vatData['amount'] = $this->serializeAmount($paymentData->getVatData()->getAmount());
|
||||
}
|
||||
|
||||
$result['vat_data'] = $vatData;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param TransferInterface[] $transfers
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function serializeTransfers(array $transfers)
|
||||
{
|
||||
$result = array();
|
||||
foreach ($transfers as $transfer) {
|
||||
$result[] = array(
|
||||
'account_id' => $transfer->getAccountId(),
|
||||
'amount' => $this->serializeAmount($transfer->getAmount())
|
||||
);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
/**
|
||||
* Класс объекта ответа возвращаемого API при запросе на создание платежа
|
||||
*
|
||||
* @package YooKassa\Request\Payments
|
||||
*/
|
||||
class CreatePaymentResponse extends AbstractPaymentResponse
|
||||
{}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments\Payment;
|
||||
|
||||
use YooKassa\Request\Payments\AbstractPaymentResponse;
|
||||
|
||||
/**
|
||||
* Класс объекта ответа от API на запрос отмены платежа
|
||||
*
|
||||
* @package YooKassa\Request\Payments\Payment
|
||||
*/
|
||||
class CancelResponse extends AbstractPaymentResponse
|
||||
{}
|
||||
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments\Payment;
|
||||
|
||||
use YooKassa\Common\AbstractPaymentRequest;
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\ReceiptInterface;
|
||||
|
||||
/**
|
||||
* Класс объекта запроса к API на подтверждение оплаты
|
||||
*
|
||||
* @property AmountInterface $amount Подтверждаемая сумма оплаты
|
||||
* @property ReceiptInterface $receipt Данные фискального чека 54-ФЗ
|
||||
*/
|
||||
class CreateCaptureRequest extends AbstractPaymentRequest implements CreateCaptureRequestInterface
|
||||
{
|
||||
|
||||
/**
|
||||
* Валидирует объект запроса
|
||||
* @return bool True если запрос валиден и его можно отправить в API, false если нет
|
||||
*/
|
||||
public function validate()
|
||||
{
|
||||
if ($this->_amount !== null) {
|
||||
$value = $this->_amount->getValue();
|
||||
if (empty($value) || $value <= 0.0) {
|
||||
$this->setValidationError('Invalid amount value: ' . $value);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if ($this->getReceipt() && $this->getReceipt()->notEmpty()) {
|
||||
$email = $this->getReceipt()->getCustomer()->getEmail();
|
||||
$phone = $this->getReceipt()->getCustomer()->getPhone();
|
||||
if (empty($email) && empty($phone)) {
|
||||
$this->setValidationError('Both email and phone values are empty in receipt');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает билдер объектов запросов на подтверждение оплаты
|
||||
* @return CreateCaptureRequestBuilder Инстанс билдера
|
||||
*/
|
||||
public static function builder()
|
||||
{
|
||||
return new CreateCaptureRequestBuilder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments\Payment;
|
||||
|
||||
use YooKassa\Common\AbstractPaymentRequestBuilder;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyException;
|
||||
use YooKassa\Common\Exceptions\InvalidRequestException;
|
||||
|
||||
class CreateCaptureRequestBuilder extends AbstractPaymentRequestBuilder
|
||||
{
|
||||
/**
|
||||
* @var CreateCaptureRequest
|
||||
*/
|
||||
protected $currentObject;
|
||||
|
||||
/**
|
||||
* @return CreateCaptureRequest
|
||||
*/
|
||||
protected function initCurrentObject()
|
||||
{
|
||||
parent::initCurrentObject();
|
||||
|
||||
return new CreateCaptureRequest();
|
||||
}
|
||||
|
||||
/**
|
||||
* Осуществляет сборку объекта запроса к API
|
||||
* @param array|null $options Массив дополнительных настроек объекта
|
||||
* @return CreateCaptureRequestInterface Иснатс объекта запроса к API
|
||||
*
|
||||
* @throws InvalidRequestException Выбрасывается если при валидации запроса произошла ошибка
|
||||
* @throws InvalidPropertyException Выбрасывается если не удалось установить один из параметров, переданных в
|
||||
* массиве настроек
|
||||
*/
|
||||
public function build(array $options = null)
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options);
|
||||
}
|
||||
if (!empty($this->transfers)) {
|
||||
$this->currentObject->setTransfers($this->transfers);
|
||||
}
|
||||
if ($this->amount->getValue() > 0) {
|
||||
$this->currentObject->setAmount($this->amount);
|
||||
}
|
||||
if ($this->receipt->notEmpty()) {
|
||||
$this->currentObject->setReceipt($this->receipt);
|
||||
}
|
||||
return parent::build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments\Payment;
|
||||
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\MonetaryAmount;
|
||||
use YooKassa\Model\ReceiptInterface;
|
||||
use YooKassa\Model\TransferInterface;
|
||||
|
||||
/**
|
||||
* Interface CreateCaptureRequestInterface
|
||||
*
|
||||
* @package YooKassa\Request\Payments\Payment
|
||||
*
|
||||
* @property-read MonetaryAmount $amount Подтверждаемая сумма оплаты
|
||||
* @property-read ReceiptInterface $receipt Данные фискального чека 54-ФЗ
|
||||
*/
|
||||
interface CreateCaptureRequestInterface
|
||||
{
|
||||
/**
|
||||
* Возвращает подтвердаемую сумму оплаты
|
||||
* @return AmountInterface Подтверждаемая сумма оплаты
|
||||
*/
|
||||
function getAmount();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена сумма оплаты
|
||||
* @return bool True если сумма оплаты была установлена, false если нет
|
||||
*/
|
||||
function hasAmount();
|
||||
|
||||
/**
|
||||
* Возвращает чек, если он есть
|
||||
* @return ReceiptInterface|null Данные фискального чека 54-ФЗ или null если чека нет
|
||||
* @since 1.0.2
|
||||
*/
|
||||
function getReceipt();
|
||||
|
||||
/**
|
||||
* Проверяет наличие чека в создаваемом платеже
|
||||
* @return bool True если чек есть, false если нет
|
||||
* @since 1.0.2
|
||||
*/
|
||||
function hasReceipt();
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
function hasTransfers();
|
||||
|
||||
/**
|
||||
* @return TransferInterface[]
|
||||
*/
|
||||
function getTransfers();
|
||||
}
|
||||
+155
@@ -0,0 +1,155 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments\Payment;
|
||||
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\ReceiptItem;
|
||||
use YooKassa\Model\TransferInterface;
|
||||
|
||||
/**
|
||||
* Класс объекта осуществляющего сериализацию запроса к API на подтверждение заказа
|
||||
*
|
||||
* @package YooKassa\Request\Payments\Payment
|
||||
*/
|
||||
class CreateCaptureRequestSerializer
|
||||
{
|
||||
/**
|
||||
* Сериализует объект запроса к API на подтверждение заказа в ассоциативный массив
|
||||
*
|
||||
* @param CreateCaptureRequestInterface $request Сериализуемый объект запроса
|
||||
*
|
||||
* @return array Ассоциативный массив содержащий информацию для отправки в API
|
||||
*/
|
||||
public function serialize(CreateCaptureRequestInterface $request)
|
||||
{
|
||||
$result = array();
|
||||
if ($request->hasAmount()) {
|
||||
$result['amount'] = $this->serializeAmount($request->getAmount());
|
||||
}
|
||||
if ($request->hasTransfers()) {
|
||||
$result['transfers'] = $this->serializeTransfers($request->getTransfers());
|
||||
}
|
||||
if ($request->hasReceipt()) {
|
||||
$receipt = $request->getReceipt();
|
||||
if ($receipt->notEmpty()) {
|
||||
$result['receipt'] = array();
|
||||
/** @var ReceiptItem $item */
|
||||
foreach ($receipt->getItems() as $item) {
|
||||
$itemArray = array(
|
||||
'description' => $item->getDescription(),
|
||||
'amount' => array(
|
||||
'value' => $item->getPrice()->getValue(),
|
||||
'currency' => $item->getPrice()->getCurrency(),
|
||||
),
|
||||
'quantity' => $item->getQuantity(),
|
||||
'vat_code' => $item->getVatCode(),
|
||||
);
|
||||
|
||||
if ($value = $item->getPaymentSubject()) {
|
||||
$itemArray['payment_subject'] = $value;
|
||||
}
|
||||
|
||||
if ($value = $item->getPaymentMode()) {
|
||||
$itemArray['payment_mode'] = $value;
|
||||
}
|
||||
|
||||
if ($value = $item->getProductCode()) {
|
||||
$itemArray['product_code'] = $value;
|
||||
}
|
||||
|
||||
if ($value = $item->getCountryOfOriginCode()) {
|
||||
$itemArray['country_of_origin_code'] = $value;
|
||||
}
|
||||
|
||||
if ($value = $item->getCustomsDeclarationNumber()) {
|
||||
$itemArray['customs_declaration_number'] = $value;
|
||||
}
|
||||
|
||||
if ($value = $item->getExcise()) {
|
||||
$itemArray['excise'] = $value;
|
||||
}
|
||||
|
||||
$result['receipt']['items'][] = $itemArray;
|
||||
}
|
||||
|
||||
if ($customer = $receipt->getCustomer()) {
|
||||
$customerArray = array();
|
||||
|
||||
if ($value = $customer->getEmail()) {
|
||||
$customerArray['email'] = $value;
|
||||
}
|
||||
|
||||
if ($value = $customer->getPhone()) {
|
||||
$customerArray['phone'] = $value;
|
||||
}
|
||||
|
||||
if ($value = $customer->getFullName()) {
|
||||
$customerArray['full_name'] = $value;
|
||||
}
|
||||
|
||||
if ($value = $customer->getInn()) {
|
||||
$customerArray['inn'] = $value;
|
||||
}
|
||||
|
||||
$result['receipt']['customer'] = $customerArray;
|
||||
}
|
||||
|
||||
if ($value = $receipt->getTaxSystemCode()) {
|
||||
$result['receipt']['tax_system_code'] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function serializeAmount(AmountInterface $amount)
|
||||
{
|
||||
return array(
|
||||
'value' => $amount->getValue(),
|
||||
'currency' => $amount->getCurrency(),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param TransferInterface[] $transfers
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function serializeTransfers(array $transfers)
|
||||
{
|
||||
$result = array();
|
||||
foreach ($transfers as $transfer) {
|
||||
$result[] = array(
|
||||
'account_id' => $transfer->getAccountId(),
|
||||
'amount' => $this->serializeAmount($transfer->getAmount())
|
||||
);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments\Payment;
|
||||
|
||||
use YooKassa\Request\Payments\AbstractPaymentResponse;
|
||||
|
||||
/**
|
||||
* Класс объекта ответа от API на запрос подтверждения платежа
|
||||
*
|
||||
* @package YooKassa\Request\Payments\Payment
|
||||
*/
|
||||
class CreateCaptureResponse extends AbstractPaymentResponse
|
||||
{}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
/**
|
||||
* Класс объекта ответа, возвращаемого API при запросе конкретного платежа
|
||||
*
|
||||
* @package YooKassa\Request\Payments
|
||||
*/
|
||||
class PaymentResponse extends AbstractPaymentResponse
|
||||
{}
|
||||
@@ -0,0 +1,669 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
use Exception;
|
||||
use YooKassa\Common\AbstractRequest;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Helpers\TypeCast;
|
||||
use YooKassa\Model\PaymentMethodType;
|
||||
use YooKassa\Model\PaymentStatus;
|
||||
|
||||
/**
|
||||
* Класс объекта запроса к API для получения списка платежей магазина
|
||||
*
|
||||
* @property \DateTime|null $createdAtGte Время создания, от (включительно)
|
||||
* @property \DateTime|null $createdAtGt Время создания, от (не включая)
|
||||
* @property \DateTime|null $createdAtLte Время создания, до (включительно)
|
||||
* @property \DateTime|null $createdAtLt Время создания, до (не включая)
|
||||
* @property \DateTime|null $capturedAtGte Время подтверждения, от (включительно)
|
||||
* @property \DateTime|null $capturedAtGt Время подтверждения, от (не включая)
|
||||
* @property \DateTime|null $capturedAtLte Время подтверждения, до (включительно)
|
||||
* @property \DateTime|null $capturedAtLt Время подтверждения, до (не включая)
|
||||
* @property string|null $status Статус платежа
|
||||
* @property string|null $paymentMethod Платежный метод
|
||||
* @property integer|null $limit Ограничение количества объектов платежа, отображаемых на одной странице выдачи
|
||||
* @property string|null $cursor Страница выдачи результатов, которую необходимо отобразить
|
||||
*/
|
||||
class PaymentsRequest extends AbstractRequest implements PaymentsRequestInterface
|
||||
{
|
||||
const MAX_LIMIT_VALUE = 100;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, от (включительно)
|
||||
*/
|
||||
private $_createdAtGte;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, от (не включая)
|
||||
*/
|
||||
private $_createdAtGt;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, до (включительно)
|
||||
*/
|
||||
private $_createdAtLte;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, до (не включая)
|
||||
*/
|
||||
private $_createdAtLt;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время подтверждения, от (включительно)
|
||||
*/
|
||||
private $_capturedAtGte;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время подтверждения, от (не включая)
|
||||
*/
|
||||
private $_capturedAtGt;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время подтверждения, до (включительно)
|
||||
*/
|
||||
private $_capturedAtLte;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время подтверждения, до (не включая)
|
||||
*/
|
||||
private $_capturedAtLt;
|
||||
|
||||
/**
|
||||
* @var string Статус платежа
|
||||
*/
|
||||
private $_status;
|
||||
|
||||
/**
|
||||
* @var string Платежный метод
|
||||
*/
|
||||
private $_paymentMethod;
|
||||
|
||||
/**
|
||||
* @var string Ограничение количества объектов платежа
|
||||
*/
|
||||
private $_limit;
|
||||
|
||||
/**
|
||||
* @var string Страница выдачи результатов, которую необходимо отобразить
|
||||
*/
|
||||
private $_cursor;
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (включительно)
|
||||
*/
|
||||
public function getCreatedAtGte()
|
||||
{
|
||||
return $this->_createdAtGte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtGte()
|
||||
{
|
||||
return $this->_createdAtGte !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются платежи
|
||||
* @param \DateTime|string|int|null $value Время создания, от (включительно) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGte($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtGte = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid createdAtGte value in PaymentsRequest', 0, 'PaymentRequest.createdAtGte'
|
||||
);
|
||||
}
|
||||
$this->_createdAtGte = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid createdAtGte value type in PaymentsRequest', 0, 'PaymentRequest.createdAtGte'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (не включая)
|
||||
*/
|
||||
public function getCreatedAtGt()
|
||||
{
|
||||
return $this->_createdAtGt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtGt()
|
||||
{
|
||||
return $this->_createdAtGt !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются платежи
|
||||
* @param \DateTime|string|int|null $value Время создания, от (не включая) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGt($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtGt = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid createdAtGt value in PaymentsRequest', 0, 'PaymentRequest.createdAtGt'
|
||||
);
|
||||
}
|
||||
$this->_createdAtGt = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid createdAtGt value type in PaymentsRequest', 0, 'PaymentRequest.createdAtGt'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (включительно)
|
||||
*/
|
||||
public function getCreatedAtLte()
|
||||
{
|
||||
return $this->_createdAtLte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtLte()
|
||||
{
|
||||
return $this->_createdAtLte !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются платежи
|
||||
* @param \DateTime|string|int|null $value Время создания, до (включительно) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLte($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtLte = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid createdAtLte value in PaymentsRequest', 0, 'PaymentRequest.createdAtLte'
|
||||
);
|
||||
}
|
||||
$this->_createdAtLte = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid createdAtLte value type in PaymentsRequest', 0, 'PaymentRequest.createdAtLte'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (не включая)
|
||||
*/
|
||||
public function getCreatedAtLt()
|
||||
{
|
||||
return $this->_createdAtLt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtLt()
|
||||
{
|
||||
return $this->_createdAtLt !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются платежи
|
||||
* @param \DateTime|string|int|null $value Время создания, до (не включая) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLt($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtLt = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid createdAtLt value in PaymentsRequest', 0, 'PaymentRequest.createdAtLt'
|
||||
);
|
||||
}
|
||||
$this->_createdAtLt = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid createdAlLt value type in PaymentsRequest', 0, 'PaymentRequest.createdAtLt'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату подтверждения от которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время подтверждения, от (включительно)
|
||||
*/
|
||||
public function getCapturedAtGte()
|
||||
{
|
||||
return $this->_capturedAtGte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата подтверждения от которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCapturedAtGte()
|
||||
{
|
||||
return $this->_capturedAtGte !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату подтверждения от которой выбираются платежи
|
||||
* @param \DateTime|string|int|null $value Время подтверждения, от (включительно) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCapturedAtGte($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_capturedAtGte = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid capturedAtGte value in PaymentsRequest', 0, 'PaymentRequest.capturedAtGte'
|
||||
);
|
||||
}
|
||||
$this->_capturedAtGte = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid capturedAtGte value type in PaymentsRequest', 0, 'PaymentRequest.capturedAtGte'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату подтверждения от которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время подтверждения, от (не включая)
|
||||
*/
|
||||
public function getCapturedAtGt()
|
||||
{
|
||||
return $this->_capturedAtGt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата подтверждения от которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCapturedAtGt()
|
||||
{
|
||||
return $this->_capturedAtGt !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату подтверждения от которой выбираются платежи
|
||||
* @param \DateTime|string|int|null $value Время подтверждения, от (не включая) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCapturedAtGt($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_capturedAtGt = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid capturedAtGt value in PaymentsRequest', 0, 'PaymentRequest.capturedAtGt'
|
||||
);
|
||||
}
|
||||
$this->_capturedAtGt = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid capturedAtGt value type in PaymentsRequest', 0, 'PaymentRequest.capturedAtGt'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату подтверждения до которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время подтверждения, до (включительно)
|
||||
*/
|
||||
public function getCapturedAtLte()
|
||||
{
|
||||
return $this->_capturedAtLte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата подтверждения до которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCapturedAtLte()
|
||||
{
|
||||
return $this->_capturedAtLte !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату подтверждения до которой выбираются платежи
|
||||
* @param \DateTime|string|int|null $value Время подтверждения, до (включительно) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCapturedAtLte($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_capturedAtLte = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid capturedAtLte value in PaymentsRequest', 0, 'PaymentRequest.capturedAtLte'
|
||||
);
|
||||
}
|
||||
$this->_capturedAtLte = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid capturedAtLte value type in PaymentsRequest', 0, 'PaymentRequest.capturedAtLte'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату подтверждения до которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время подтверждения, до (не включая)
|
||||
*/
|
||||
public function getCapturedAtLt()
|
||||
{
|
||||
return $this->_capturedAtLt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата подтверждения до которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCapturedAtLt()
|
||||
{
|
||||
return $this->_capturedAtLt !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату подтверждения до которой выбираются платежи
|
||||
* @param \DateTime|string|int|null $value Время подтверждения, до (не включая) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCapturedAtLt($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_capturedAtLt = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid capturedAtLt value in PaymentsRequest', 0, 'PaymentRequest.capturedAtLt'
|
||||
);
|
||||
}
|
||||
$this->_capturedAtLt = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid capturedAlLt value type in PaymentsRequest', 0, 'PaymentRequest.capturedAtLt'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает статус выбираемых платежей или null если он до этого не был установлен
|
||||
* @return string|null Статус выбираемых платежей
|
||||
*/
|
||||
public function getStatus()
|
||||
{
|
||||
return $this->_status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен статус выбираемых платежей
|
||||
* @return bool True если статус был установлен, false если нет
|
||||
*/
|
||||
public function hasStatus()
|
||||
{
|
||||
return $this->_status !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает статус выбираемых платежей
|
||||
* @param string $value Статус выбираемых платежей или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение не является валидным статусом
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setStatus($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_status = null;
|
||||
} elseif (TypeCast::canCastToEnumString($value)) {
|
||||
if (!PaymentStatus::valueExists((string)$value)) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid status value in PaymentsRequest', 0, 'PaymentsRequest.status', $value
|
||||
);
|
||||
} else {
|
||||
$this->_status = (string)$value;
|
||||
}
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid status value in PaymentsRequest', 0, 'PaymentsRequest.status', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает платежный метод выбираемых платежей или null если он до этого не был установлен
|
||||
* @return string|null Платежный метод выбираемых платежей
|
||||
*/
|
||||
public function getPaymentMethod()
|
||||
{
|
||||
return $this->_paymentMethod;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен платежный метод выбираемых платежей
|
||||
* @return bool True если платежный метод был установлен, false если нет
|
||||
*/
|
||||
public function hasPaymentMethod()
|
||||
{
|
||||
return $this->_paymentMethod !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает платежный метод выбираемых платежей
|
||||
* @param string $value Платежный метод выбираемых платежей или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение не является валидным статусом
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setPaymentMethod($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_paymentMethod = null;
|
||||
} elseif (TypeCast::canCastToEnumString($value)) {
|
||||
if (!PaymentMethodType::valueExists((string)$value)) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid status value in PaymentsRequest', 0, 'PaymentsRequest.paymentMethod', $value
|
||||
);
|
||||
} else {
|
||||
$this->_paymentMethod = (string)$value;
|
||||
}
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid status value type in PaymentsRequest', 0, 'PaymentsRequest.paymentMethod', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ограничение количества объектов платежа
|
||||
* @return integer|null Ограничение количества объектов платежа
|
||||
*/
|
||||
public function getLimit()
|
||||
{
|
||||
return $this->_limit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлено ограничение количества объектов платежа
|
||||
* @return bool True если было установлено, false если нет
|
||||
*/
|
||||
public function hasLimit()
|
||||
{
|
||||
return $this->_limit !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает ограничение количества объектов платежа
|
||||
* @param integer|null $value Ограничение количества объектов платежа или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передано не целое число
|
||||
*/
|
||||
public function setLimit($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_limit = null;
|
||||
} elseif (is_int($value)) {
|
||||
if ($value < 0 || $value > self::MAX_LIMIT_VALUE) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid limit value in PaymentsRequest', 0, 'PaymentsRequest.limit', $value
|
||||
);
|
||||
}
|
||||
$this->_limit = $value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid limit value type in PaymentsRequest', 0, 'PaymentsRequest.limit', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Страница выдачи результатов, которую необходимо отобразить
|
||||
* @return string|null
|
||||
*/
|
||||
public function getCursor()
|
||||
{
|
||||
return $this->_cursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлена страница выдачи результатов, которую необходимо отобразить
|
||||
* @return bool True если была установлена, false если нет
|
||||
*/
|
||||
public function hasCursor()
|
||||
{
|
||||
return $this->_cursor !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает cтраницw выдачи результатов, которую необходимо отобразить
|
||||
* @param string $value Страница выдачи результатов или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setCursor($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_cursor = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$this->_cursor = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid status value type in PaymentsRequest', 0, 'PaymentsRequest.limit', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет валидность текущего объекта запроса
|
||||
* @return bool True если объект валиден, false если нет
|
||||
*/
|
||||
public function validate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает инстанс билдера объектов запросов списка платежей магазина
|
||||
* @return PaymentsRequestBuilder Билдер объектов запросов списка платежей
|
||||
*/
|
||||
public static function builder()
|
||||
{
|
||||
return new PaymentsRequestBuilder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,248 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
use DateTime;
|
||||
use Exception;
|
||||
use YooKassa\Common\AbstractRequest;
|
||||
use YooKassa\Common\AbstractRequestBuilder;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
|
||||
/**
|
||||
* Билдер объектов запросов к API для пролучения списка платежей магазина
|
||||
*
|
||||
* @package YooKassa\Request\Payments
|
||||
*/
|
||||
class PaymentsRequestBuilder extends AbstractRequestBuilder
|
||||
{
|
||||
/**
|
||||
* @var PaymentsRequest Собираемый объект запроса списка платежей магазина
|
||||
*/
|
||||
protected $currentObject;
|
||||
|
||||
/**
|
||||
* Возвращает новый объект запроса для получения списка платежей, который в дальнейшем будет собираться в билдере
|
||||
* @return PaymentsRequest Объект запроса списка платежей магазина
|
||||
*/
|
||||
protected function initCurrentObject()
|
||||
{
|
||||
return new PaymentsRequest();
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает страница выдачи результатов
|
||||
* @param string|null $value Страница выдачи результатов или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setCursor($value)
|
||||
{
|
||||
$this->currentObject->setCursor($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются платежи
|
||||
* @param DateTime|string|int|null $value Время создания, от (не включая) или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGt($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtGt($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются платежи
|
||||
* @param DateTime|string|int|null $value Время создания, от (включительно) или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGte($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtGte($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются платежи
|
||||
* @param DateTime|string|int|null $value Время создания, до (не включая) или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLt($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtLt($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются платежи
|
||||
* @param DateTime|string|int|null $value Время создания, до (включительно) или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLte($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtLte($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату подтверждения от которой выбираются платежи
|
||||
* @param DateTime|string|int|null $value Время создания, до (включительно) или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCapturedAtGt($value)
|
||||
{
|
||||
$this->currentObject->setCapturedAtGt($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату подтверждения от которой выбираются платежи
|
||||
* @param DateTime|string|int|null $value Время подтверждения, от (включительно) или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCapturedAtGte($value)
|
||||
{
|
||||
$this->currentObject->setCapturedAtGte($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату подтверждения до которой выбираются платежи
|
||||
* @param DateTime|string|int|null $value Время подтверждения, до (включительно) или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCapturedAtLt($value)
|
||||
{
|
||||
$this->currentObject->setCapturedAtLt($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату подтверждения до которой выбираются платежи
|
||||
* @param DateTime|string|int|null $value Время подтверждения, до (включительно) или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCapturedAtLte($value)
|
||||
{
|
||||
$this->currentObject->setCapturedAtLte($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает ограничение количества объектов платежа
|
||||
* @param string $value Ограничение количества объектов платежа или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод было передана не целое число
|
||||
*/
|
||||
public function setLimit($value)
|
||||
{
|
||||
$this->currentObject->setLimit($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает статус выбираемых платежей
|
||||
* @param string $value Статус выбираемых платежей или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение не является валидным статусом
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setStatus($value)
|
||||
{
|
||||
$this->currentObject->setStatus($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает платежный метод выбираемых платежей
|
||||
* @param string $value Платежный метод выбираемых платежей или null чтобы удалить значение
|
||||
* @return PaymentsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение не является валидным статусом
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setPaymentMethod($value)
|
||||
{
|
||||
$this->currentObject->setPaymentMethod($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Собирает и возвращает объект запроса списка платежей магазина
|
||||
* @param array|null $options Массив с настройками запроса
|
||||
* @return AbstractRequest Инстанс объекта запроса к API для получения списка платежей магазина
|
||||
*/
|
||||
public function build(array $options = null)
|
||||
{
|
||||
return parent::build($options);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,181 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
/**
|
||||
* Interface PaymentsRequestInterface
|
||||
*
|
||||
* @package YooKassa\Request\Payments
|
||||
*
|
||||
* @property-read string|null $cursor Страница выдачи результатов, которую необходимо отобразить
|
||||
* @property-read \DateTime|null $createdAtGte Время создания, от (включительно)
|
||||
* @property-read \DateTime|null $createdAtGt Время создания, от (не включая)
|
||||
* @property-read \DateTime|null $createdAtLte Время создания, до (включительно)
|
||||
* @property-read \DateTime|null $createdAtLt Время создания, до (не включая)
|
||||
* @property-read \DateTime|null $capturedAtGte Время подтверждения, от (включительно)
|
||||
* @property-read \DateTime|null $capturedAtGt Время подтверждения, от (не включая)
|
||||
* @property-read \DateTime|null $capturedAtLte Время подтверждения, до (включительно)
|
||||
* @property-read \DateTime|null $capturedAtLt Время подтверждения, до (не включая)
|
||||
* @property-read integer|null $limit Ограничение количества объектов платежа, отображаемых на одной странице выдачи
|
||||
* @property-read string|null $recipientGatewayId Идентификатор шлюза.
|
||||
* @property-read string|null $status Статус платежа
|
||||
*/
|
||||
interface PaymentsRequestInterface
|
||||
{
|
||||
/**
|
||||
* Возвращает страницу выдачи результатов или null если она до этого не была установлена
|
||||
* @return string|null Страница выдачи результатов
|
||||
*/
|
||||
function getCursor();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена страница выдачи результатов
|
||||
* @return bool True если страница выдачи результатов была установлена, false если нет
|
||||
*/
|
||||
function hasCursor();
|
||||
|
||||
/**
|
||||
* Устанавливает страницу выдачи результатов
|
||||
* @param string $value Страница
|
||||
* @return void
|
||||
*/
|
||||
function setCursor($value);
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (включительно)
|
||||
*/
|
||||
function getCreatedAtGte();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtGte();
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются платежи
|
||||
* @param \DateTime $value Дата
|
||||
* @return void
|
||||
*/
|
||||
function setCreatedAtGte($value);
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (не включая)
|
||||
*/
|
||||
function getCreatedAtGt();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtGt();
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются платежи
|
||||
* @param \DateTime $value Дата
|
||||
* @return void
|
||||
*/
|
||||
function setCreatedAtGt($value);
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (включительно)
|
||||
*/
|
||||
function getCreatedAtLte();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtLte();
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются платежи
|
||||
* @param \DateTime $value Дата
|
||||
* @return void
|
||||
*/
|
||||
function setCreatedAtLte($value);
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены платежи или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (не включая)
|
||||
*/
|
||||
function getCreatedAtLt();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются платежи
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtLt();
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются платежи
|
||||
* @param \DateTime $value Дата
|
||||
* @return void
|
||||
*/
|
||||
function setCreatedAtLt($value);
|
||||
|
||||
/**
|
||||
* Возвращает ограничение количества объектов платежа или null если оно до этого не было установлено
|
||||
* @return string|null Ограничение количества объектов платежа
|
||||
*/
|
||||
function getLimit();
|
||||
|
||||
/**
|
||||
* Проверяет было ли установлено ограничение количества объектов платежа
|
||||
* @return bool True если ограничение количества объектов платежа было установлено, false если нет
|
||||
*/
|
||||
function hasLimit();
|
||||
|
||||
/**
|
||||
* Устанавливает ограничение количества объектов платежа
|
||||
* @param int $value Количества объектов платежа на странице
|
||||
* @return void
|
||||
*/
|
||||
function setLimit($value);
|
||||
|
||||
/**
|
||||
* Возвращает статус выбираемых платежей или null если он до этого не был установлен
|
||||
* @return string|null Статус выбираемых платежей
|
||||
*/
|
||||
function getStatus();
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен статус выбираемых платежей
|
||||
* @return bool True если статус был установлен, false если нет
|
||||
*/
|
||||
function hasStatus();
|
||||
|
||||
/**
|
||||
* Устанавливает статус выбираемых платежей
|
||||
* @param string $value Статус платежей
|
||||
* @return void
|
||||
*/
|
||||
function setStatus($value);
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
/**
|
||||
* Класс сериализатора объектов запросов к API для получения списка платежей
|
||||
*
|
||||
* @package YooKassa\Request\Payments
|
||||
*/
|
||||
class PaymentsRequestSerializer
|
||||
{
|
||||
/**
|
||||
* @var array Карта маппинга свойств объекта запроса на поля отправляемого запроса
|
||||
*/
|
||||
private static $propertyMap = array(
|
||||
'createdAtGte' => 'created_at.gte',
|
||||
'createdAtGt' => 'created_at.gt',
|
||||
'createdAtLte' => 'created_at.lte',
|
||||
'createdAtLt' => 'created_at.lt',
|
||||
'capturedAtGte' => 'captured_at.gte',
|
||||
'capturedAtGt' => 'captured_at.gt',
|
||||
'capturedAtLte' => 'captured_at.lte',
|
||||
'capturedAtLt' => 'captured_at.lt',
|
||||
'status' => 'status',
|
||||
'paymentMethod' => 'payment_method',
|
||||
'limit' => 'limit',
|
||||
'cursor' => 'cursor',
|
||||
);
|
||||
|
||||
/**
|
||||
* Сериализует объект запроса к API для дальнейшей его отправки
|
||||
* @param PaymentsRequestInterface $request Сериализуемый объект
|
||||
* @return array Массив с инфомрацией, отпарвляемый в дальнейшем в API
|
||||
*/
|
||||
public function serialize(PaymentsRequestInterface $request)
|
||||
{
|
||||
$result = array();
|
||||
foreach (self::$propertyMap as $property => $name) {
|
||||
$value = $request->{$property};
|
||||
if (!empty($value)) {
|
||||
if ($value instanceof \DateTime) {
|
||||
if ($value->getTimestamp() > 1) {
|
||||
$result[$name] = $value->format(YOOKASSA_DATE);
|
||||
}
|
||||
} else {
|
||||
$result[$name] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Payments;
|
||||
|
||||
use Exception;
|
||||
use YooKassa\Common\AbstractObject;
|
||||
use YooKassa\Model\PaymentInterface;
|
||||
|
||||
/**
|
||||
* Класс объекта ответа от API со списком платежей магазина
|
||||
*
|
||||
* @package YooKassa\Request\Payments
|
||||
*/
|
||||
class PaymentsResponse extends AbstractObject
|
||||
{
|
||||
/**
|
||||
* @var PaymentInterface[] Массив платежей
|
||||
*/
|
||||
private $items;
|
||||
|
||||
/**
|
||||
* @var string|null Токен следующей страницы
|
||||
*/
|
||||
private $nextCursor;
|
||||
|
||||
/**
|
||||
* Конструктор, устанавливает свойства объекта из пришедшего из API ассоциативного массива
|
||||
*
|
||||
* @param array $sourceArray Массив настроек, пришедший от API
|
||||
* @throws Exception
|
||||
*/
|
||||
public function fromArray($sourceArray)
|
||||
{
|
||||
$this->items = array();
|
||||
foreach ($sourceArray['items'] as $paymentInfo) {
|
||||
$payment = new PaymentResponse($paymentInfo);
|
||||
$this->items[] = $payment;
|
||||
}
|
||||
if (!empty($sourceArray['next_cursor'])) {
|
||||
$this->nextCursor = $sourceArray['next_cursor'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает список платежей
|
||||
* @return PaymentInterface[] Список платежей
|
||||
*/
|
||||
public function getItems()
|
||||
{
|
||||
return $this->items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает токен следующей страницы, если он задан, или null
|
||||
* @return string|null Токен следующей страницы
|
||||
*/
|
||||
public function getNextCursor()
|
||||
{
|
||||
return $this->nextCursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет имееотся ли в ответе токен следующей страницы
|
||||
* @return bool True если токен следующей страницы есть, false если нет
|
||||
*/
|
||||
public function hasNextCursor()
|
||||
{
|
||||
return $this->nextCursor !== null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,576 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
use DateTime;
|
||||
use YooKassa\Common\AbstractObject;
|
||||
use YooKassa\Common\Exceptions\EmptyPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Helpers\TypeCast;
|
||||
use YooKassa\Model\ReceiptRegistrationStatus;
|
||||
use YooKassa\Model\ReceiptType;
|
||||
use YooKassa\Model\Settlement;
|
||||
use YooKassa\Model\SettlementInterface;
|
||||
|
||||
/**
|
||||
* Class AbstractReceipt
|
||||
*
|
||||
* @package YooKassa\Model
|
||||
*
|
||||
* @property string $id Идентификатор чека в ЮKassa.
|
||||
* @property string $type Тип чека в онлайн-кассе: приход "payment" или возврат "refund".
|
||||
* @property string $status Статус доставки данных для чека в онлайн-кассу ("pending", "succeeded" или "canceled").
|
||||
* @property string $fiscalAttribute Фискальный признак чека. Формируется фискальным накопителем на основе данных, переданных для регистрации чека.
|
||||
* @property string $fiscal_attribute Фискальный признак чека. Формируется фискальным накопителем на основе данных, переданных для регистрации чека.
|
||||
* @property string $fiscalDocumentNumber Номер фискального документа.
|
||||
* @property string $fiscal_document_number Номер фискального документа.
|
||||
* @property string $fiscalStorageNumber Номер фискального накопителя в кассовом аппарате.
|
||||
* @property string $fiscal_storage_number Номер фискального накопителя в кассовом аппарате.
|
||||
* @property string $fiscalProviderId Идентификатор чека в онлайн-кассе. Присутствует, если чек удалось зарегистрировать.
|
||||
* @property string $fiscal_provider_id Идентификатор чека в онлайн-кассе. Присутствует, если чек удалось зарегистрировать.
|
||||
* @property \DateTime $registeredAt Дата и время формирования чека в фискальном накопителе.
|
||||
* @property \DateTime $registered_at Дата и время формирования чека в фискальном накопителе.
|
||||
* @property int $taxSystemCode Код системы налогообложения. Число 1-6.
|
||||
* @property int $tax_system_code Код системы налогообложения. Число 1-6.
|
||||
* @property ReceiptResponseItemInterface[] $items Список товаров в заказе
|
||||
* @property SettlementInterface[] $settlements Перечень совершенных расчетов.
|
||||
* @property string $onBehalfOf Идентификатор магазина
|
||||
*/
|
||||
abstract class AbstractReceiptResponse extends AbstractObject implements ReceiptResponseInterface
|
||||
{
|
||||
const LENGTH_RECEIPT_ID = 39;
|
||||
|
||||
/** @var string Идентификатор чека в ЮKassa. */
|
||||
private $_id;
|
||||
|
||||
/** @var string Тип чека в онлайн-кассе: приход "payment" или возврат "refund". */
|
||||
private $_type;
|
||||
|
||||
/** @var string Статус доставки данных для чека в онлайн-кассу "pending", "succeeded" или "canceled". */
|
||||
private $_status;
|
||||
|
||||
/** @var string Номер фискального документа. */
|
||||
private $_fiscalDocumentNumber;
|
||||
|
||||
/** @var string Номер фискального накопителя в кассовом аппарате. */
|
||||
private $_fiscalStorageNumber;
|
||||
|
||||
/** @var string идентификатор объекта чека */
|
||||
private $_object_id;
|
||||
|
||||
/**
|
||||
* @var string Фискальный признак чека.
|
||||
* Формируется фискальным накопителем на основе данных, переданных для регистрации чека.
|
||||
*/
|
||||
private $_fiscalAttribute;
|
||||
|
||||
/**
|
||||
* @var \DateTime Дата и время формирования чека в фискальном накопителе.
|
||||
* Указывается в формате [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).
|
||||
*/
|
||||
private $_registeredAt;
|
||||
|
||||
/** @var string Идентификатор чека в онлайн-кассе. Присутствует, если чек удалось зарегистрировать. */
|
||||
private $_fiscalProviderId;
|
||||
|
||||
/** @var ReceiptResponseItemInterface[] Список товаров в заказе */
|
||||
private $_items = array();
|
||||
|
||||
/** @var SettlementInterface[] Список оплат */
|
||||
private $_settlements = array();
|
||||
|
||||
/** @var int Код системы налогообложения. Число 1-6. */
|
||||
private $_taxSystemCode;
|
||||
|
||||
/** @var string Идентификатор магазина */
|
||||
private $_onBehalfOf;
|
||||
|
||||
/**
|
||||
* AbstractReceiptResponse constructor.
|
||||
*
|
||||
* @param mixed $receiptData
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function __construct($receiptData)
|
||||
{
|
||||
$this->setId($receiptData['id']);
|
||||
$this->setType($receiptData['type']);
|
||||
$this->setObjectId($this->factoryObjectId($receiptData));
|
||||
$this->setStatus($receiptData['status']);
|
||||
|
||||
if (!empty($receiptData['tax_system_code'])) {
|
||||
$this->setTaxSystemCode($receiptData['tax_system_code']);
|
||||
}
|
||||
if (!empty($receiptData['fiscal_document_number'])) {
|
||||
$this->setFiscalDocumentNumber($receiptData['fiscal_document_number']);
|
||||
}
|
||||
if (!empty($receiptData['fiscal_storage_number'])) {
|
||||
$this->setFiscalStorageNumber($receiptData['fiscal_storage_number']);
|
||||
}
|
||||
if (!empty($receiptData['fiscal_attribute'])) {
|
||||
$this->setFiscalAttribute($receiptData['fiscal_attribute']);
|
||||
}
|
||||
if (!empty($receiptData['registered_at'])) {
|
||||
$this->setRegisteredAt(new DateTime($receiptData['registered_at']));
|
||||
}
|
||||
if (!empty($receiptData['fiscal_provider_id'])) {
|
||||
$this->setFiscalProviderId($receiptData['fiscal_provider_id']);
|
||||
}
|
||||
if (!empty($receiptData['items'])) {
|
||||
if (is_array($receiptData['items']) && count($receiptData['items'])) {
|
||||
$itemsArray = array();
|
||||
foreach ($receiptData['items'] as $item) {
|
||||
$itemsArray[] = new ReceiptResponseItem($item);
|
||||
}
|
||||
$this->setItems($itemsArray);
|
||||
} else {
|
||||
throw new EmptyPropertyValueException('Empty items value in receipt', 0, 'receipt.items');
|
||||
}
|
||||
} else {
|
||||
throw new EmptyPropertyValueException('Empty items value in receipt', 0, 'receipt.items');
|
||||
}
|
||||
if (!empty($receiptData['settlements'])) {
|
||||
if (is_array($receiptData['settlements']) && count($receiptData['settlements'])) {
|
||||
$itemsArray = array();
|
||||
foreach ($receiptData['settlements'] as $item) {
|
||||
$itemsArray[] = new Settlement($item);
|
||||
}
|
||||
$this->setSettlements($itemsArray);
|
||||
} else {
|
||||
throw new EmptyPropertyValueException('Empty settlements value in receipt', 0, 'receipt.settlements');
|
||||
}
|
||||
}
|
||||
if (!empty($receiptData['on_behalf_of'])) {
|
||||
$this->setOnBehalfOf($receiptData['on_behalf_of']);
|
||||
}
|
||||
|
||||
$this->setSpecificProperties($receiptData);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getId()
|
||||
{
|
||||
return $this->_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор чека
|
||||
* @param string $value Идентификатор чека
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если длина переданной строки не равна 40
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setId($value)
|
||||
{
|
||||
if (TypeCast::canCastToString($value)) {
|
||||
if (strlen((string)$value) !== self::LENGTH_RECEIPT_ID) {
|
||||
throw new InvalidPropertyValueException('Invalid receipt id value', 0, 'Receipt.id', $value);
|
||||
}
|
||||
$this->_id = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException('Invalid receipt id value type', 0, 'Receipt.id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return $this->_type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает типа чека
|
||||
* @param string $value Тип чека
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданная строка не является валидным типом
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setType($value)
|
||||
{
|
||||
if (TypeCast::canCastToEnumString($value)) {
|
||||
if (!ReceiptType::valueExists((string)$value)) {
|
||||
throw new InvalidPropertyValueException('Invalid receipt type value', 0, 'Receipt.type', $value);
|
||||
}
|
||||
$this->_type = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid receipt type value type', 0, 'Receipt.type', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает идентификатор платежа или возврата, для которого был сформирован чек.
|
||||
* @return string
|
||||
*/
|
||||
public function getObjectId()
|
||||
{
|
||||
return $this->_object_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор платежа или возврата, для которого был сформирован чек
|
||||
*
|
||||
* @param $value
|
||||
*/
|
||||
public function setObjectId($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_object_id = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$this->_object_id = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException('Invalid receipt object_id type', 0, 'Receipt.object_id', $value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Фабричный метод создания идентификатора объекта, для которого был сформирован чек
|
||||
*
|
||||
* @param array $receiptData Массив данных чека
|
||||
* @return string|null
|
||||
*/
|
||||
private function factoryObjectId($receiptData)
|
||||
{
|
||||
if (array_key_exists('refund_id', $receiptData)) {
|
||||
return $receiptData['refund_id'];
|
||||
} elseif (array_key_exists('payment_id', $receiptData)) {
|
||||
return $receiptData['payment_id'];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getStatus()
|
||||
{
|
||||
return $this->_status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает состояние регистрации фискального чека
|
||||
* @param string $value Состояние регистрации фискального чека
|
||||
*
|
||||
* @return AbstractReceiptResponse
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное состояние регистрации не существует
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданный аргумент не строка
|
||||
*/
|
||||
public function setStatus($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_status = null;
|
||||
} elseif (TypeCast::canCastToEnumString($value)) {
|
||||
if (ReceiptRegistrationStatus::valueExists($value)) {
|
||||
$this->_status = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid status value', 0, 'Receipt.status', $value
|
||||
);
|
||||
}
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid status value type', 0, 'Receipt.status', $value
|
||||
);
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getFiscalDocumentNumber()
|
||||
{
|
||||
return $this->_fiscalDocumentNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает номер фискального документа
|
||||
* @param string $value Номер фискального документа
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданный аргумент не строка
|
||||
*/
|
||||
public function setFiscalDocumentNumber($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_fiscalDocumentNumber = null;
|
||||
} elseif (!TypeCast::canCastToString($value)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid fiscal_document_number value type', 0, 'Receipt.fiscalDocumentNumber', $value
|
||||
);
|
||||
} else {
|
||||
$this->_fiscalDocumentNumber = (string)$value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getFiscalStorageNumber()
|
||||
{
|
||||
return $this->_fiscalStorageNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $fiscal_storage_number
|
||||
*/
|
||||
public function setFiscalStorageNumber($fiscal_storage_number)
|
||||
{
|
||||
$this->_fiscalStorageNumber = $fiscal_storage_number;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getFiscalAttribute()
|
||||
{
|
||||
return $this->_fiscalAttribute;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $fiscal_attribute
|
||||
*/
|
||||
public function setFiscalAttribute($fiscal_attribute)
|
||||
{
|
||||
$this->_fiscalAttribute = $fiscal_attribute;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return DateTime
|
||||
*/
|
||||
public function getRegisteredAt()
|
||||
{
|
||||
return $this->_registeredAt;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DateTime $registered_at
|
||||
*/
|
||||
public function setRegisteredAt($registered_at)
|
||||
{
|
||||
$this->_registeredAt = $registered_at;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getFiscalProviderId()
|
||||
{
|
||||
return $this->_fiscalProviderId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $fiscal_provider_id
|
||||
*/
|
||||
public function setFiscalProviderId($fiscal_provider_id)
|
||||
{
|
||||
$this->_fiscalProviderId = $fiscal_provider_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ReceiptResponseItem[]
|
||||
*/
|
||||
public function getItems()
|
||||
{
|
||||
return $this->_items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает список позиций в чеке
|
||||
*
|
||||
* Если до этого в чеке уже были установлены значения, они удаляются и полностью заменяются переданным списком
|
||||
* позиций. Все передаваемые значения в массиве позиций должны быть объектами класса, реализующего интерфейс
|
||||
* ReceiptItemInterface, в противном случае будет выброшено исключение InvalidPropertyValueTypeException.
|
||||
*
|
||||
* @param ReceiptResponseItemInterface[] $value Список товаров в заказе
|
||||
*
|
||||
* @throws EmptyPropertyValueException Выбрасывается если передали пустой массив значений
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в качестве значения был передан не массив и не
|
||||
* итератор, лабо если одно из переданных значений не реализует интерфейс ReceiptItemInterface
|
||||
*/
|
||||
public function setItems($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
throw new EmptyPropertyValueException('Empty items value in receipt', 0, 'receipt.items');
|
||||
}
|
||||
if (!is_array($value) && !($value instanceof \Traversable)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid items value type in receipt', 0, 'receipt.items', $value
|
||||
);
|
||||
}
|
||||
$this->_items = array();
|
||||
foreach ($value as $key => $val) {
|
||||
if (is_object($val) && $val instanceof ReceiptResponseItemInterface) {
|
||||
$this->addItem($val);
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid item value type in receipt', 0, 'receipt.items[' . $key . ']', $val
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет товар в чек
|
||||
*
|
||||
* @param ReceiptResponseItemInterface $value Объект добавляемой в чек позиции
|
||||
*/
|
||||
public function addItem($value)
|
||||
{
|
||||
$this->_items[] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает Массив оплат, обеспечивающих выдачу товара
|
||||
*
|
||||
* @return SettlementInterface[]
|
||||
*/
|
||||
public function getSettlements()
|
||||
{
|
||||
return $this->_settlements;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SettlementInterface[] $value
|
||||
*/
|
||||
public function setSettlements($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
throw new EmptyPropertyValueException('Empty settlements value in receipt', 0, 'receipt.settlements');
|
||||
}
|
||||
if (!is_array($value) && !($value instanceof \Traversable)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid settlements value type in receipt', 0, 'receipt.settlements', $value
|
||||
);
|
||||
}
|
||||
$this->_settlements = array();
|
||||
foreach ($value as $key => $val) {
|
||||
if (is_object($val) && $val instanceof SettlementInterface) {
|
||||
$this->addSettlement($val);
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid settlement value type in receipt', 0, 'receipt.settlements['.$key.']', $val
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SettlementInterface $value
|
||||
*/
|
||||
public function addSettlement(SettlementInterface $value)
|
||||
{
|
||||
$this->_settlements[] = $value;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getTaxSystemCode()
|
||||
{
|
||||
return $this->_taxSystemCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает код системы налогообложения
|
||||
*
|
||||
* @param int $value Код системы налогообложения. Число 1-6
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданный аргумент - не число
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданный аргумент меньше одного или больше шести
|
||||
*/
|
||||
public function setTaxSystemCode($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_taxSystemCode = null;
|
||||
} elseif (!is_numeric($value)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid tax_system_code value type', 0, 'receipt.taxSystemCode'
|
||||
);
|
||||
} else {
|
||||
$castedValue = (int)$value;
|
||||
if ($castedValue < 1 || $castedValue > 6) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid tax_system_code value: ' . $value, 0, 'receipt.taxSystemCode'
|
||||
);
|
||||
}
|
||||
$this->_taxSystemCode = $castedValue;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getOnBehalfOf()
|
||||
{
|
||||
return $this->_onBehalfOf;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $value
|
||||
*/
|
||||
public function setOnBehalfOf($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
throw new EmptyPropertyValueException(
|
||||
'Empty onBehalfOf value', 0, 'Receipt.onBehalfOf'
|
||||
);
|
||||
} elseif (!TypeCast::canCastToString($value)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid onBehalfOf value type', 0, 'Receipt.onBehalfOf', $value
|
||||
);
|
||||
} else {
|
||||
$this->_onBehalfOf = (string)$value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет есть ли в чеке хотя бы одна позиция
|
||||
*
|
||||
* @return bool True если чек не пуст, false если в чеке нет ни одной позиции
|
||||
*/
|
||||
public function notEmpty()
|
||||
{
|
||||
return !empty($this->_items);
|
||||
}
|
||||
|
||||
/**
|
||||
* Установка свойств, присущих конкретному объекту
|
||||
*
|
||||
* @param array $receiptData
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
abstract public function setSpecificProperties($receiptData);
|
||||
}
|
||||
@@ -0,0 +1,434 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
|
||||
use YooKassa\Common\AbstractRequest;
|
||||
use YooKassa\Common\Exceptions\EmptyPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Helpers\TypeCast;
|
||||
use YooKassa\Model\ReceiptCustomer;
|
||||
use YooKassa\Model\ReceiptCustomerInterface;
|
||||
use YooKassa\Model\ReceiptItem;
|
||||
use YooKassa\Model\ReceiptItemInterface;
|
||||
use YooKassa\Model\ReceiptType;
|
||||
use YooKassa\Model\Settlement;
|
||||
use YooKassa\Model\SettlementInterface;
|
||||
|
||||
/**
|
||||
* Class AbstractPostReceiptRequest
|
||||
* @package YooKassa\Request\Receipts
|
||||
*/
|
||||
class CreatePostReceiptRequest extends AbstractRequest implements CreatePostReceiptRequestInterface
|
||||
{
|
||||
/** @var ReceiptCustomerInterface Информация о плательщике */
|
||||
private $_customer;
|
||||
|
||||
/** @var string Тип чека в онлайн-кассе: приход "payment" или возврат "refund". */
|
||||
private $_type;
|
||||
|
||||
/** @var bool Признак отложенной отправки чека. */
|
||||
private $_send = true;
|
||||
|
||||
/** @var int Код системы налогообложения. Число 1-6. */
|
||||
private $_taxSystemCode;
|
||||
|
||||
/** @var ReceiptItemInterface[] Список товаров в заказе */
|
||||
private $_items = array();
|
||||
|
||||
/** @var SettlementInterface[] Список платежей */
|
||||
private $_settlements = array();
|
||||
|
||||
/** @var string Идентификатор объекта оплаты */
|
||||
private $_object_id;
|
||||
|
||||
/** @var string Идентификатор магазина в ЮKassa */
|
||||
private $_onBehalfOf;
|
||||
|
||||
/**
|
||||
* Возвращает билдер объектов запросов создания платежа
|
||||
* @return CreatePostReceiptRequestBuilder Инстанс билдера объектов запрсов
|
||||
*/
|
||||
public static function builder()
|
||||
{
|
||||
return new CreatePostReceiptRequestBuilder();
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает Id объекта чека
|
||||
*
|
||||
* @return string Id объекта чека
|
||||
*/
|
||||
public function getObjectId()
|
||||
{
|
||||
return $this->_object_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает Id объекта чека
|
||||
*
|
||||
* @param string $value
|
||||
*/
|
||||
public function setObjectId($value)
|
||||
{
|
||||
$this->_object_id = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function hasCustomer()
|
||||
{
|
||||
return !empty($this->_customer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает информацию о плательщике
|
||||
*
|
||||
* @return ReceiptCustomerInterface информация о плательщике
|
||||
*/
|
||||
public function getCustomer()
|
||||
{
|
||||
return $this->_customer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает информацию о плательщике
|
||||
*
|
||||
* @param ReceiptCustomerInterface $value
|
||||
*/
|
||||
public function setCustomer($value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$this->_customer = new ReceiptCustomer($value);
|
||||
} elseif (is_object($value) && $value instanceof ReceiptCustomerInterface) {
|
||||
$this->_customer = $value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid customer value type in receipt', 0, 'Receipt.customer', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает список позиций в текущем чеке
|
||||
*
|
||||
* @return ReceiptItemInterface[] Список товаров в заказе
|
||||
*/
|
||||
public function getItems()
|
||||
{
|
||||
return $this->_items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает список позиций в чеке
|
||||
*
|
||||
* Если до этого в чеке уже были установлены значения, они удаляются и полностью заменяются переданным списком
|
||||
* позиций. Все передаваемые значения в массиве позиций должны быть объектами класса, реализующего интерфейс
|
||||
* ReceiptItemInterface, в противном случае будет выброшено исключение InvalidPropertyValueTypeException.
|
||||
*
|
||||
* @param ReceiptItemInterface[] $value Список товаров в заказе
|
||||
*
|
||||
* @throws EmptyPropertyValueException Выбрасывается если передали пустой массив значений
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в качестве значения был передан не массив и не
|
||||
* итератор, либо если одно из переданных значений не реализует интерфейс ReceiptItemInterface
|
||||
*/
|
||||
public function setItems($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
throw new EmptyPropertyValueException('Empty items value in receipt', 0, 'Receipt.items');
|
||||
}
|
||||
if (!is_array($value) && !($value instanceof \Traversable)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid items value type in receipt', 0, 'Receipt.items', $value
|
||||
);
|
||||
}
|
||||
$this->_items = array();
|
||||
foreach ($value as $key => $val) {
|
||||
if (is_array($val)) {
|
||||
$this->addItem(new ReceiptItem($val));
|
||||
} elseif (is_object($val) && $val instanceof ReceiptItemInterface) {
|
||||
$this->addItem($val);
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid item value type in receipt', 0, 'Receipt.items['.$key.']', $val
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет товар в чек
|
||||
*
|
||||
* @param ReceiptItemInterface $value Объект добавляемой в чек позиции
|
||||
*/
|
||||
public function addItem($value)
|
||||
{
|
||||
$this->_items[] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает код системы налогообложения
|
||||
*
|
||||
* @return int Код системы налогообложения. Число 1-6.
|
||||
*/
|
||||
public function getTaxSystemCode()
|
||||
{
|
||||
return $this->_taxSystemCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает код системы налогообложения
|
||||
*
|
||||
* @param int $value Код системы налогообложения. Число 1-6
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если переданный аргумент - не число
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданный аргумент меньше одного или больше шести
|
||||
*/
|
||||
public function setTaxSystemCode($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
throw new EmptyPropertyValueException('Empty taxSystemCode value in receipt', 0, 'Receipt.taxSystemCode');
|
||||
} elseif (!is_numeric($value)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid taxSystemCode value type', 0, 'Receipt.taxSystemCode'
|
||||
);
|
||||
} else {
|
||||
$castedValue = (int)$value;
|
||||
if ($castedValue < 1 || $castedValue > 6) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid taxSystemCode value: '.$value, 0, 'Receipt.taxSystemCode'
|
||||
);
|
||||
}
|
||||
$this->_taxSystemCode = $castedValue;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает тип чека в онлайн-кассе
|
||||
*
|
||||
* @return string Тип чека в онлайн-кассе: приход "payment" или возврат "refund".
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return $this->_type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает тип чека в онлайн-кассе
|
||||
*
|
||||
* @param string $value Тип чека в онлайн-кассе: приход "payment" или возврат "refund".
|
||||
*/
|
||||
public function setType($value)
|
||||
{
|
||||
if (TypeCast::canCastToEnumString($value)) {
|
||||
if (!ReceiptType::valueExists((string)$value)) {
|
||||
throw new InvalidPropertyValueException('Invalid receipt type value', 0, 'Receipt.type', $value);
|
||||
}
|
||||
$this->_type = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid receipt type value type', 0, 'Receipt.type', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает признак отложенной отправки чека.
|
||||
*
|
||||
* @return bool Признак отложенной отправки чека.
|
||||
*/
|
||||
public function getSend()
|
||||
{
|
||||
return $this->_send;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает признак отложенной отправки чека.
|
||||
* @param bool $value Признак отложенной отправки чека.
|
||||
*/
|
||||
public function setSend($value)
|
||||
{
|
||||
if (TypeCast::canCastToBoolean($value)) {
|
||||
$this->_send = (bool)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid receipt type value send', 0, 'Receipt.send', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает массив оплат, обеспечивающих выдачу товара.
|
||||
*
|
||||
* @return SettlementInterface[] Массив оплат, обеспечивающих выдачу товара.
|
||||
*/
|
||||
public function getSettlements()
|
||||
{
|
||||
return $this->_settlements;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает массив оплат, обеспечивающих выдачу товара.
|
||||
*
|
||||
* @param SettlementInterface[] $value Массив оплат, обеспечивающих выдачу товара.
|
||||
*/
|
||||
public function setSettlements($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
throw new EmptyPropertyValueException('Empty settlements value in receipt', 0, 'Receipt.settlements');
|
||||
}
|
||||
if (!is_array($value) && !($value instanceof \Traversable)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid settlements value type in receipt', 0, 'Receipt.settlements', $value
|
||||
);
|
||||
}
|
||||
$this->_settlements = array();
|
||||
foreach ($value as $key => $val) {
|
||||
if (is_array($val) && !empty($val['type']) && !empty($val['amount'])) {
|
||||
$this->addSettlement(new Settlement($val));
|
||||
} elseif (is_object($val) && $val instanceof SettlementInterface) {
|
||||
$this->addSettlement($val);
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid settlement value type in receipt', 0, 'Receipt.settlements['.$key.']', $val
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет оплату в перечень совершенных расчетов.
|
||||
*
|
||||
* @param SettlementInterface $value Информация о совершенных расчетах.
|
||||
*/
|
||||
public function addSettlement(SettlementInterface $value)
|
||||
{
|
||||
$this->_settlements[] = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getOnBehalfOf()
|
||||
{
|
||||
return $this->_onBehalfOf;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $value
|
||||
*/
|
||||
public function setOnBehalfOf($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
throw new EmptyPropertyValueException(
|
||||
'Empty onBehalfOf value', 0, 'Receipt.onBehalfOf'
|
||||
);
|
||||
} elseif (!TypeCast::canCastToString($value)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid onBehalfOf value type', 0, 'Receipt.onBehalfOf', $value
|
||||
);
|
||||
} else {
|
||||
$this->_onBehalfOf = (string)$value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет есть ли в чеке хотя бы одна позиция товаров и оплат
|
||||
*
|
||||
* @return bool True если чек не пуст, false если в чеке нет ни одной позиции
|
||||
*/
|
||||
public function notEmpty()
|
||||
{
|
||||
return !empty($this->_items) && !empty($this->_settlements);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает значения свойств текущего объекта из массива
|
||||
* @param array|\Traversable $sourceArray Ассоциативный массив с настройками
|
||||
*/
|
||||
public function fromArray($sourceArray)
|
||||
{
|
||||
if (!empty($sourceArray['customer'])) {
|
||||
$sourceArray['customer'] = new ReceiptCustomer($sourceArray['customer']);
|
||||
}
|
||||
|
||||
if (!empty($sourceArray['items'])) {
|
||||
foreach ($sourceArray['items'] as $i => $itemArray) {
|
||||
if (is_array($itemArray)) {
|
||||
$sourceArray['items'][$i] = new ReceiptItem($itemArray);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($sourceArray['settlements'])) {
|
||||
foreach ($sourceArray['settlements'] as $i => $itemArray) {
|
||||
if (is_array($itemArray)) {
|
||||
$sourceArray['settlements'][$i] = new Settlement($itemArray);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parent::fromArray($sourceArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* Валидирует текущий запрос, проверяет все ли нужные свойства установлены
|
||||
* @return bool True если запрос валиден, false если нет
|
||||
*/
|
||||
public function validate()
|
||||
{
|
||||
if (empty($this->_customer)) {
|
||||
$this->setValidationError('Receipt customer not specified');
|
||||
return false;
|
||||
}
|
||||
|
||||
if (empty($this->_type) || !ReceiptType::valueExists($this->_type)) {
|
||||
$this->setValidationError('Receipt type not specified');
|
||||
return false;
|
||||
}
|
||||
|
||||
if (empty($this->_send)) { // todo: пока может быть только true
|
||||
$this->setValidationError('Receipt send not specified');
|
||||
return false;
|
||||
}
|
||||
|
||||
if (empty($this->_settlements)) {
|
||||
$this->setValidationError('Receipt settlements not specified');
|
||||
return false;
|
||||
}
|
||||
|
||||
if (empty($this->_items)) {
|
||||
$this->setValidationError('Receipt items not specified');
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
|
||||
use YooKassa\Common\AbstractRequestBuilder;
|
||||
use YooKassa\Common\Exceptions\InvalidRequestException;
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\MonetaryAmount;
|
||||
use YooKassa\Model\ReceiptCustomer;
|
||||
use YooKassa\Model\ReceiptCustomerInterface;
|
||||
use YooKassa\Model\ReceiptItemInterface;
|
||||
use YooKassa\Model\SettlementInterface;
|
||||
|
||||
class CreatePostReceiptRequestBuilder extends AbstractRequestBuilder
|
||||
{
|
||||
/** @var CreatePostReceiptRequest Собираемый объект запроса */
|
||||
protected $currentObject;
|
||||
|
||||
/** @var AmountInterface */
|
||||
protected $amount;
|
||||
|
||||
/** @var ReceiptCustomer */
|
||||
protected $customer;
|
||||
|
||||
/**
|
||||
* Инициализирует объект запроса, который в дальнейшем будет собираться билдером
|
||||
* @return CreatePostReceiptRequest Инстанс собираемого объекта запроса к API
|
||||
*/
|
||||
protected function initCurrentObject()
|
||||
{
|
||||
$this->customer = new ReceiptCustomer();
|
||||
$this->amount = new MonetaryAmount();
|
||||
|
||||
return new CreatePostReceiptRequest();
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает сумму
|
||||
*
|
||||
* @param AmountInterface|array|string $value Сумма оплаты
|
||||
*
|
||||
* @return self Инстанс билдера запросов
|
||||
*/
|
||||
public function setAmount($value)
|
||||
{
|
||||
if (is_object($value) && $value instanceof AmountInterface) {
|
||||
$this->amount->setValue($value->getValue());
|
||||
$this->amount->setCurrency($value->getCurrency());
|
||||
} elseif (is_array($value)) {
|
||||
$this->amount->fromArray($value);
|
||||
} else {
|
||||
$this->amount->setValue($value);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает валюту в которой будет происходить подтверждение оплаты заказа
|
||||
*
|
||||
* @param string $value Валюта в которой подтверждается оплата
|
||||
*
|
||||
* @return self Инстанс билдера запросов
|
||||
*/
|
||||
public function setCurrency($value)
|
||||
{
|
||||
$this->amount->setCurrency($value);
|
||||
foreach ($this->currentObject->getItems() as $item) {
|
||||
$item->getPrice()->setCurrency($value);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ReceiptCustomerInterface|array $value
|
||||
* @return CreatePostReceiptRequestBuilder
|
||||
*/
|
||||
public function setCustomer($value)
|
||||
{
|
||||
if (is_array($value)) {
|
||||
$this->customer->fromArray($value);
|
||||
} elseif ($value instanceof ReceiptCustomerInterface) {
|
||||
$this->customer = $value;
|
||||
} else {
|
||||
$this->customer = null;
|
||||
}
|
||||
$this->currentObject->setCustomer($this->customer);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ReceiptItemInterface[] $value
|
||||
* @return CreatePostReceiptRequestBuilder
|
||||
*/
|
||||
public function setItems($value)
|
||||
{
|
||||
$this->currentObject->setItems($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $value
|
||||
* @return CreatePostReceiptRequestBuilder
|
||||
*/
|
||||
public function setTaxSystemCode($value)
|
||||
{
|
||||
$this->currentObject->setTaxSystemCode($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $value
|
||||
* @return CreatePostReceiptRequestBuilder
|
||||
*/
|
||||
public function setType($value)
|
||||
{
|
||||
$this->currentObject->setType($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $value
|
||||
* @return CreatePostReceiptRequestBuilder
|
||||
*/
|
||||
public function setSend($value)
|
||||
{
|
||||
$this->currentObject->setSend($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $value
|
||||
* @return CreatePostReceiptRequestBuilder
|
||||
*/
|
||||
public function setOnBehalfOf($value)
|
||||
{
|
||||
$this->currentObject->setOnBehalfOf($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SettlementInterface[] $value
|
||||
* @return CreatePostReceiptRequestBuilder
|
||||
*/
|
||||
public function setSettlements($value)
|
||||
{
|
||||
$this->currentObject->setSettlements($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $value
|
||||
* @return CreatePostReceiptRequestBuilder
|
||||
*/
|
||||
public function setObjectId($value)
|
||||
{
|
||||
$this->currentObject->setObjectId($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Строит и возвращает объект запроса для отправки в API ЮKassa
|
||||
* @param array|null $options Массив параметров для установки в объект запроса
|
||||
* @return CreatePostReceiptRequest Инстанс объекта запроса
|
||||
*
|
||||
* @throws InvalidRequestException Выбрасывается если собрать объект запроса не удалось
|
||||
*/
|
||||
public function build(array $options = null)
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options);
|
||||
|
||||
if (!empty($options['payment_id'])) {
|
||||
$this->setObjectId($options['payment_id']);
|
||||
} elseif (!empty($options['refund_id'])) {
|
||||
$this->setObjectId($options['refund_id']);
|
||||
}
|
||||
}
|
||||
|
||||
return parent::build($options);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
use YooKassa\Model\ReceiptCustomer;
|
||||
use YooKassa\Model\ReceiptCustomerInterface;
|
||||
use YooKassa\Model\ReceiptItemInterface;
|
||||
use YooKassa\Model\SettlementInterface;
|
||||
use YooKassa\Model\SupplierInterface;
|
||||
|
||||
/**
|
||||
* Interface CreateReceiptRequestInterface
|
||||
*
|
||||
* @package YooKassa\Request\Receipts
|
||||
*
|
||||
* @property string $objectId Идентификатор объекта ("payment" или "refund), для которого формируется чек.
|
||||
* @property string $object_id Идентификатор объекта ("payment" или "refund), для которого формируется чек.
|
||||
* @property string $type Тип чека в онлайн-кассе: приход "payment" или возврат "refund".
|
||||
* @property bool $send Признак отложенной отправки чека.
|
||||
* @property ReceiptCustomer $customer Информация о плательщике.
|
||||
* @property int $taxSystemCode Код системы налогообложения. Число 1-6.
|
||||
* @property int $tax_system_code Код системы налогообложения. Число 1-6.
|
||||
* @property ReceiptItemInterface[] $items Список товаров в заказе.
|
||||
* @property SupplierInterface $supplier Информация о поставщике товара или услуги.
|
||||
* @property SettlementInterface[] $settlements Массив оплат, обеспечивающих выдачу товара.
|
||||
*/
|
||||
interface CreatePostReceiptRequestInterface
|
||||
{
|
||||
/**
|
||||
* Возвращает идентификатор объекта, для которого формируется чек
|
||||
*
|
||||
* @return string Идентификатор объекта.
|
||||
*/
|
||||
public function getObjectId();
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор объекта, для которого формируется чек
|
||||
*
|
||||
* @param string $value Идентификатор объекта.
|
||||
* @return CreatePostReceiptRequestInterface
|
||||
*/
|
||||
public function setObjectId($value);
|
||||
|
||||
/**
|
||||
* Возвращает тип чека в онлайн-кассе
|
||||
*
|
||||
* @return string Тип чека в онлайн-кассе: приход "payment" или возврат "refund".
|
||||
*/
|
||||
public function getType();
|
||||
|
||||
/**
|
||||
* Устанавливает тип чека в онлайн-кассе
|
||||
* @param string $value Тип чека в онлайн-кассе: приход "payment" или возврат "refund".
|
||||
* @return CreatePostReceiptRequestInterface
|
||||
*/
|
||||
public function setType($value);
|
||||
|
||||
/**
|
||||
* Возвращает признак отложенной отправки чека.
|
||||
*
|
||||
* @return bool Признак отложенной отправки чека.
|
||||
*/
|
||||
public function getSend();
|
||||
|
||||
/**
|
||||
* Устанавливает признак отложенной отправки чека.
|
||||
*
|
||||
* @param bool $value Признак отложенной отправки чека.
|
||||
* @return CreatePostReceiptRequestInterface
|
||||
*/
|
||||
public function setSend($value);
|
||||
|
||||
/**
|
||||
* Возвращает код системы налогообложения.
|
||||
*
|
||||
* @return int Код системы налогообложения. Число 1-6.
|
||||
*/
|
||||
public function getTaxSystemCode();
|
||||
|
||||
/**
|
||||
* @param int $value
|
||||
* @return CreatePostReceiptRequestInterface
|
||||
*/
|
||||
public function setTaxSystemCode($value);
|
||||
|
||||
/**
|
||||
* Возвращает информацию о плательщике.
|
||||
*
|
||||
* @return ReceiptCustomerInterface Информация о плательщике.
|
||||
*/
|
||||
public function getCustomer();
|
||||
|
||||
/**
|
||||
* Устанавливает информацию о пользователе.
|
||||
*
|
||||
* @param ReceiptCustomerInterface $value информация о плательщике.
|
||||
* @return CreatePostReceiptRequestInterface
|
||||
*/
|
||||
public function setCustomer($value);
|
||||
|
||||
/**
|
||||
* Возвращает список товаров в заказе
|
||||
*
|
||||
* @return ReceiptItemInterface[]
|
||||
*/
|
||||
public function getItems();
|
||||
|
||||
/**
|
||||
* @param ReceiptItemInterface[] $items
|
||||
* @return CreatePostReceiptRequestInterface
|
||||
*/
|
||||
public function setItems($items);
|
||||
|
||||
/**
|
||||
* Возвращает Массив оплат, обеспечивающих выдачу товара.
|
||||
*
|
||||
* @return SettlementInterface[]
|
||||
*/
|
||||
public function getSettlements();
|
||||
|
||||
/**
|
||||
* @param SettlementInterface[] $value
|
||||
* @return CreatePostReceiptRequestInterface
|
||||
*/
|
||||
public function setSettlements($value);
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
public function getOnBehalfOf();
|
||||
|
||||
/**
|
||||
* @param string $value
|
||||
*/
|
||||
public function setOnBehalfOf($value);
|
||||
|
||||
/**
|
||||
* Проверяет есть ли в чеке хотя бы одна позиция
|
||||
* @return bool True если чек не пуст, false если в чеке нет ни одной позиции.
|
||||
*/
|
||||
function notEmpty();
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
use YooKassa\Model\ReceiptItem;
|
||||
use YooKassa\Model\ReceiptType;
|
||||
use YooKassa\Model\Settlement;
|
||||
|
||||
/**
|
||||
* Класс сериалайзера объекта запроса к API создание чека
|
||||
*
|
||||
* @package YooKassa\Request\Receipts
|
||||
*/
|
||||
class CreatePostReceiptRequestSerializer
|
||||
{
|
||||
/**
|
||||
* @param CreatePostReceiptRequestInterface $request
|
||||
* @return array
|
||||
*/
|
||||
public function serialize(CreatePostReceiptRequestInterface $request)
|
||||
{
|
||||
$result = array_merge(array(
|
||||
'type' => $request->getType(),
|
||||
'send' => $request->getSend(),
|
||||
), $this->serializeObjectId($request));
|
||||
|
||||
/** @var Settlement $item */
|
||||
foreach ($request->getSettlements() as $item) {
|
||||
$result['settlements'][] = $item->jsonSerialize();
|
||||
}
|
||||
|
||||
/** @var ReceiptItem $item */
|
||||
foreach ($request->getItems() as $item) {
|
||||
$result['items'][] = $item->jsonSerialize();
|
||||
}
|
||||
|
||||
$customer = $request->getCustomer();
|
||||
if (!empty($customer)) {
|
||||
$result['customer'] = $customer->jsonSerialize();
|
||||
}
|
||||
|
||||
$value = $request->getTaxSystemCode();
|
||||
if (!empty($value)) {
|
||||
$result['tax_system_code'] = $value;
|
||||
}
|
||||
|
||||
$onBehalfOf = $request->getOnBehalfOf();
|
||||
if (!empty($onBehalfOf)) {
|
||||
$result['on_behalf_of'] = $onBehalfOf;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param CreatePostReceiptRequestInterface $request
|
||||
* @return array
|
||||
*/
|
||||
private function serializeObjectId(CreatePostReceiptRequestInterface $request)
|
||||
{
|
||||
$result = array();
|
||||
|
||||
if ($request->getType() === ReceiptType::PAYMENT) {
|
||||
$result['payment_id'] = $request->getObjectId();
|
||||
} elseif ($request->getType() === ReceiptType::REFUND) {
|
||||
$result['refund_id'] = $request->getObjectId();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Helpers\TypeCast;
|
||||
|
||||
/**
|
||||
* Class PaymentReceipt
|
||||
* @package YooKassa\Model
|
||||
*
|
||||
* @property string $payment_id Идентификатор платежа в ЮKassa.
|
||||
* @property string $paymentId Идентификатор платежа в ЮKassa.
|
||||
*/
|
||||
class PaymentReceiptResponse extends AbstractReceiptResponse
|
||||
{
|
||||
const LENGTH_PAYMENT_ID = 36;
|
||||
|
||||
private $_payment_id;
|
||||
|
||||
/**
|
||||
* Установка свойств, присущих конкретному объекту
|
||||
*
|
||||
* @param array $receiptData
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setSpecificProperties($receiptData)
|
||||
{
|
||||
$this->setPaymentId($this->getObjectId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getPaymentId()
|
||||
{
|
||||
return $this->_payment_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор платежа в ЮKassa
|
||||
*
|
||||
* @param string $value Идентификатор платежа в ЮKassa
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в качестве значения была передана не строка
|
||||
* @throws InvalidPropertyValueException Выбрасывается если длина переданной строки не равна 36
|
||||
*/
|
||||
public function setPaymentId($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_payment_id = null;
|
||||
} elseif (!TypeCast::canCastToString($value)) {
|
||||
throw new InvalidPropertyValueTypeException('Invalid payment_id value type', 0, 'Receipt.paymentId');
|
||||
} elseif (strlen((string)$value) !== self::LENGTH_PAYMENT_ID) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid payment_id value: "'.$value.'"', 0, 'Receipt.paymentId', $value
|
||||
);
|
||||
} else {
|
||||
$this->_payment_id = (string)$value;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
|
||||
use YooKassa\Model\ReceiptType;
|
||||
|
||||
/**
|
||||
* Class ReceiptResponseFactory
|
||||
* @package YooKassa\Request\Receipts
|
||||
*/
|
||||
class ReceiptResponseFactory
|
||||
{
|
||||
private $typeClassMap = array(
|
||||
ReceiptType::PAYMENT => 'PaymentReceiptResponse',
|
||||
ReceiptType::REFUND => 'RefundReceiptResponse',
|
||||
ReceiptType::SIMPLE => 'SimpleReceiptResponse',
|
||||
);
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
*
|
||||
* @return AbstractReceiptResponse
|
||||
*/
|
||||
public function factory($data)
|
||||
{
|
||||
if (array_key_exists('type', $data)) {
|
||||
if (array_key_exists('refund_id', $data)) {
|
||||
$type = ReceiptType::REFUND;
|
||||
} elseif (array_key_exists('payment_id', $data)) {
|
||||
$type = ReceiptType::PAYMENT;
|
||||
} else {
|
||||
$type = ReceiptType::SIMPLE;
|
||||
}
|
||||
} else {
|
||||
throw new \InvalidArgumentException(
|
||||
'Parameter type not specified in ReceiptResponseFactory.factory()'
|
||||
);
|
||||
}
|
||||
if (!is_string($type)) {
|
||||
throw new \InvalidArgumentException('Invalid receipt type value in receipt factory');
|
||||
}
|
||||
if (!in_array($type, ReceiptType::getValidValues())) {
|
||||
throw new \InvalidArgumentException('Invalid receipt data type "' . $type . '"');
|
||||
}
|
||||
$className = __NAMESPACE__ . '\\' . $this->typeClassMap[$type];
|
||||
|
||||
return new $className($data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
use YooKassa\Model\SettlementInterface;
|
||||
|
||||
/**
|
||||
* Interface ReceiptInterface
|
||||
*
|
||||
* @package YooKassa\Model
|
||||
*
|
||||
* @property-read string $id Идентификатор чека в ЮKassa.
|
||||
* @property-read string $type Тип чека в онлайн-кассе: приход "payment" или возврат "refund".
|
||||
* @property-read string $receiptRegistration Статус доставки данных для чека в онлайн-кассу ("pending", "succeeded" или "canceled").
|
||||
* @property-read string $receipt_registration Статус доставки данных для чека в онлайн-кассу ("pending", "succeeded" или "canceled").
|
||||
* @property-read string $status Статус доставки данных для чека в онлайн-кассу ("pending", "succeeded" или "canceled").
|
||||
* @property-read int $taxSystemCode Код системы налогообложения. Число 1-6.
|
||||
* @property-read int $tax_system_code Код системы налогообложения. Число 1-6.
|
||||
* @property-read ReceiptResponseItemInterface[] $items Список товаров в заказе
|
||||
* @property-read SettlementInterface[] $settlements Список товаров в заказе
|
||||
*/
|
||||
interface ReceiptResponseInterface
|
||||
{
|
||||
/**
|
||||
* Возвращает идентификатор чека в ЮKassa
|
||||
*
|
||||
* @return string Идентификатор чека в ЮKassa.
|
||||
*/
|
||||
public function getId();
|
||||
|
||||
/**
|
||||
* Возвращает тип чека в онлайн-кассе
|
||||
*
|
||||
* @return string Тип чека в онлайн-кассе: приход "payment" или возврат "refund".
|
||||
*/
|
||||
public function getType();
|
||||
|
||||
/**
|
||||
* Возвращает статус доставки данных для чека в онлайн-кассу
|
||||
*
|
||||
* @return string Статус доставки данных для чека в онлайн-кассу ("pending", "succeeded" или "canceled").
|
||||
*/
|
||||
public function getStatus();
|
||||
|
||||
/**
|
||||
* Возвращает код системы налогообложения
|
||||
*
|
||||
* @return int Код системы налогообложения. Число 1-6.
|
||||
*/
|
||||
public function getTaxSystemCode();
|
||||
|
||||
/**
|
||||
* Возвращает список товаров в заказ
|
||||
*
|
||||
* @return ReceiptResponseItemInterface[]
|
||||
*/
|
||||
public function getItems();
|
||||
|
||||
/**
|
||||
* Возвращает список расчетов
|
||||
*
|
||||
* @return SettlementInterface[]
|
||||
*/
|
||||
public function getSettlements();
|
||||
|
||||
/**
|
||||
* Возвращает идентификатор магазин
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getOnBehalfOf();
|
||||
|
||||
/**
|
||||
* Проверяет есть ли в чеке хотя бы одна позиция
|
||||
* @return bool True если чек не пуст, false если в чеке нет ни одной позиции
|
||||
*/
|
||||
function notEmpty();
|
||||
}
|
||||
@@ -0,0 +1,387 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
use YooKassa\Common\AbstractObject;
|
||||
use YooKassa\Common\Exceptions\EmptyPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Helpers\TypeCast;
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\MonetaryAmount;
|
||||
use YooKassa\Model\Receipt\ReceiptItemAmount;
|
||||
use YooKassa\Model\Supplier;
|
||||
use YooKassa\Model\SupplierInterface;
|
||||
|
||||
/**
|
||||
* Interface ReceiptItemInterface
|
||||
*
|
||||
* @package YooKassa\Model
|
||||
*
|
||||
* @property string $description Название товара (не более 128 символов).
|
||||
* @property float $quantity Количество товара. Максимально возможное значение зависит от модели вашей онлайн-кассы.
|
||||
* @property float $amount Суммарная стоимость товара в копейках/центах
|
||||
* @property AmountInterface $price Цена товара
|
||||
* @property int $vatCode Ставка НДС, число 1-6
|
||||
* @property int $vat_code Ставка НДС, число 1-6
|
||||
* @property string $paymentSubject Признак предмета расчета
|
||||
* @property string $payment_subject Признак предмета расчета
|
||||
* @property string $paymentMode Признак способа расчета
|
||||
* @property string $payment_mode Признак способа расчета
|
||||
*/
|
||||
class ReceiptResponseItem extends AbstractObject implements ReceiptResponseItemInterface
|
||||
{
|
||||
/**
|
||||
* @var string Наименование товара
|
||||
*/
|
||||
private $_description;
|
||||
|
||||
/**
|
||||
* @var float Количество
|
||||
*/
|
||||
private $_quantity;
|
||||
|
||||
/**
|
||||
* @var ReceiptItemAmount Цена товара
|
||||
*/
|
||||
private $_amount;
|
||||
|
||||
/**
|
||||
* @var int Ставка НДС, число 1-6
|
||||
*/
|
||||
private $_vatCode;
|
||||
|
||||
/**
|
||||
* @var string Признак предмета расчета
|
||||
*/
|
||||
private $_paymentSubject;
|
||||
|
||||
/**
|
||||
* @var string Признак способа расчета
|
||||
*/
|
||||
private $_paymentMode;
|
||||
|
||||
/**
|
||||
* @var SupplierInterface Информация о поставщике товара или услуги
|
||||
*/
|
||||
private $_supplier;
|
||||
|
||||
/**
|
||||
* Конструктор, устанавливает настройки товара из ассоциативного массива
|
||||
*
|
||||
* @param array $itemData Массив с информацией о товаре, пришедший от API
|
||||
*/
|
||||
public function __construct($itemData)
|
||||
{
|
||||
$this->setDescription($itemData['description']);
|
||||
$this->setQuantity($itemData['quantity']);
|
||||
$this->setPrice($this->factoryAmount($itemData['amount']));
|
||||
$this->setVatCode($itemData['vat_code']);
|
||||
|
||||
if (!empty($itemData['payment_mode'])) {
|
||||
$this->setPaymentMode($itemData['payment_mode']);
|
||||
}
|
||||
|
||||
if (!empty($itemData['payment_subject'])) {
|
||||
$this->setPaymentSubject($itemData['payment_subject']);
|
||||
}
|
||||
|
||||
if (!empty($itemData['supplier'])) {
|
||||
$this->setSupplier($itemData['supplier']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает наименование товара
|
||||
* @return string Наименование товара
|
||||
*/
|
||||
public function getDescription()
|
||||
{
|
||||
return $this->_description;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает наименование товара
|
||||
*
|
||||
* @param string $value Наименование товара
|
||||
*
|
||||
* @throws EmptyPropertyValueException Выбрасывается если было передано пустое значение
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в качестве аргумента была передана не строка
|
||||
*/
|
||||
public function setDescription($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
throw new EmptyPropertyValueException(
|
||||
'Empty description value in ReceiptItem', 0, 'ReceiptItem.description'
|
||||
);
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$castedValue = (string)$value;
|
||||
if ($castedValue === '') {
|
||||
throw new EmptyPropertyValueException(
|
||||
'Empty description value in ReceiptItem', 0, 'ReceiptItem.description'
|
||||
);
|
||||
}
|
||||
$this->_description = $castedValue;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Empty description value in ReceiptItem', 0, 'ReceiptItem.description', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает количество товара
|
||||
* @return float Количество купленного товара
|
||||
*/
|
||||
public function getQuantity()
|
||||
{
|
||||
return $this->_quantity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает количество покупаемого товара
|
||||
*
|
||||
* @param int $value Количество
|
||||
*
|
||||
* @throws EmptyPropertyValueException Выбрасывается если было передано пустое значение
|
||||
* @throws InvalidPropertyValueException Выбрасывается если в качестве аргумента был передан ноль
|
||||
* или отрицательное число
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в качестве аргумента было передано не число
|
||||
*/
|
||||
public function setQuantity($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
throw new EmptyPropertyValueException('Empty quantity value in ReceiptItem', 0, 'ReceiptItem.quantity');
|
||||
} elseif (!is_numeric($value)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid quantity value type in ReceiptItem', 0, 'ReceiptItem.quantity', $value
|
||||
);
|
||||
} elseif ($value <= 0.0) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid quantity value in ReceiptItem', 0, 'ReceiptItem.quantity', $value
|
||||
);
|
||||
} else {
|
||||
$this->_quantity = (float)$value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает общую стоимость покупаемого товара в копейках/центах
|
||||
* @return int Сумма стоимости покупаемого товара
|
||||
*/
|
||||
public function getAmount()
|
||||
{
|
||||
return (int)round($this->_amount->getIntegerValue() * $this->_quantity);
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает цену товара
|
||||
* @return AmountInterface Цена товара
|
||||
*/
|
||||
public function getPrice()
|
||||
{
|
||||
return $this->_amount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает цену товара
|
||||
*
|
||||
* @param AmountInterface $value Цена товара
|
||||
*/
|
||||
public function setPrice(AmountInterface $value)
|
||||
{
|
||||
$this->_amount = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает ставку НДС
|
||||
* @return int|null Ставка НДС, число 1-6, или null если ставка не задана
|
||||
*/
|
||||
public function getVatCode()
|
||||
{
|
||||
return $this->_vatCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает ставку НДС
|
||||
*
|
||||
* @param int $value Ставка НДС, число 1-6
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если в качестве аргумента было передано число меньше одного
|
||||
* или больше шести
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в качестве аргумента было передано не число
|
||||
*/
|
||||
public function setVatCode($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_vatCode = null;
|
||||
} elseif (!is_numeric($value)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid vatId value type in ReceiptItem', 0, 'ReceiptItem.vatId', $value
|
||||
);
|
||||
} elseif ($value < 1 || $value > 6) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid vatId value in ReceiptItem', 0, 'ReceiptItem.vatId', $value
|
||||
);
|
||||
} else {
|
||||
$this->_vatCode = (int)$value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает признак предмета расчета
|
||||
* @return string|null Признак предмета расчета
|
||||
*/
|
||||
public function getPaymentSubject()
|
||||
{
|
||||
return $this->_paymentSubject;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает признак предмета расчета
|
||||
*
|
||||
* @param string $value Признак предмета расчета
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в качестве аргумента была передана не строка
|
||||
*/
|
||||
public function setPaymentSubject($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_paymentSubject = null;
|
||||
} elseif (!TypeCast::canCastToString($value)) {
|
||||
throw new InvalidPropertyValueTypeException('Invalid paymentSubject value type', 0, 'ReceiptItem.paymentSubject');
|
||||
} else {
|
||||
$this->_paymentSubject = $value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает признак способа расчета
|
||||
* @return string|null Признак способа расчета
|
||||
*/
|
||||
public function getPaymentMode()
|
||||
{
|
||||
return $this->_paymentMode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает признак способа расчета
|
||||
*
|
||||
* @param string $value Признак способа расчета
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в качестве аргумента была передана не строка
|
||||
*/
|
||||
public function setPaymentMode($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_paymentMode = null;
|
||||
} elseif (!TypeCast::canCastToString($value)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid paymentMode value type', 0, 'ReceiptItem.paymentMode', $value
|
||||
);
|
||||
} else {
|
||||
$this->_paymentMode = $value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return SupplierInterface
|
||||
*/
|
||||
public function getSupplier()
|
||||
{
|
||||
return $this->_supplier;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает информацию о поставщике товара или услуги.
|
||||
*
|
||||
* @param SupplierInterface|array $value
|
||||
*/
|
||||
public function setSupplier($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
throw new EmptyPropertyValueException(
|
||||
'Empty supplier value in receipt', 0, 'Receipt.supplier'
|
||||
);
|
||||
}
|
||||
|
||||
if (is_array($value)) {
|
||||
$value = new Supplier($value);
|
||||
}
|
||||
|
||||
if (!($value instanceof SupplierInterface)) {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid supplier value type in receipt', 0, 'Receipt.supplier', $value
|
||||
);
|
||||
}
|
||||
|
||||
$this->_supplier = $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Фабричный метод создания суммы
|
||||
*
|
||||
* @param array $options Сумма в виде ассоциативного массива
|
||||
*
|
||||
* @return AmountInterface Созданный инстанс суммы
|
||||
*/
|
||||
private function factoryAmount($options)
|
||||
{
|
||||
$amount = new MonetaryAmount(null, $options['currency']);
|
||||
if ($options['value'] > 0) {
|
||||
$amount->setValue($options['value']);
|
||||
}
|
||||
|
||||
return $amount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function jsonSerialize()
|
||||
{
|
||||
$result = array(
|
||||
'description' => $this->getDescription(),
|
||||
'amount' => array(
|
||||
'value' => $this->getPrice()->getValue(),
|
||||
'currency' => $this->getPrice()->getCurrency(),
|
||||
),
|
||||
'quantity' => $this->getQuantity(),
|
||||
'vat_code' => $this->getVatCode(),
|
||||
);
|
||||
|
||||
if ($this->getPaymentSubject()) {
|
||||
$result['payment_subject'] = $this->getPaymentSubject();
|
||||
}
|
||||
|
||||
if ($this->getPaymentMode()) {
|
||||
$result['payment_mode'] = $this->getPaymentMode();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\SupplierInterface;
|
||||
|
||||
/**
|
||||
* Interface ReceiptItemInterface
|
||||
*
|
||||
* @package YooKassa\Model
|
||||
*
|
||||
* @property-read string $description Название товара (не более 128 символов).
|
||||
* @property-read float $quantity Количество товара. Максимально возможное значение зависит от модели вашей онлайн-кассы.
|
||||
* @property-read float $amount Суммарная стоимость товара в копейках/центах
|
||||
* @property-read AmountInterface $price Цена товара
|
||||
* @property-read int $vatCode Ставка НДС, число 1-6
|
||||
* @property-read int $vat_code Ставка НДС, число 1-6
|
||||
*/
|
||||
interface ReceiptResponseItemInterface
|
||||
{
|
||||
/**
|
||||
* Возвращает название товара
|
||||
* @return string Название товара (не более 128 символов).
|
||||
*/
|
||||
function getDescription();
|
||||
|
||||
/**
|
||||
* Возвращает количество товара
|
||||
* @return float Количество купленного товара
|
||||
*/
|
||||
function getQuantity();
|
||||
|
||||
/**
|
||||
* Возвращает общую стоимость покупаемого товара в копейках/центах
|
||||
* @return float Сумма стоимости покупаемого товара
|
||||
*/
|
||||
function getAmount();
|
||||
|
||||
/**
|
||||
* Возвращает цену товара
|
||||
* @return AmountInterface Цена товара
|
||||
*/
|
||||
function getPrice();
|
||||
|
||||
/**
|
||||
* Возвращает ставку НДС
|
||||
* @return int|null Ставка НДС, число 1-6, или null если ставка не задана
|
||||
*/
|
||||
function getVatCode();
|
||||
|
||||
/**
|
||||
* Возвращает информацию о поставщике товара или услуги
|
||||
* @return SupplierInterface
|
||||
*/
|
||||
function getSupplier();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,509 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
use Exception;
|
||||
use YooKassa\Common\AbstractRequest;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Helpers\TypeCast;
|
||||
use YooKassa\Model\RefundStatus;
|
||||
|
||||
/**
|
||||
* Класс объекта запроса к API списка возвратов магазина
|
||||
*
|
||||
* @package YooKassa\Request\Receipts
|
||||
*
|
||||
* @property \DateTime $createdAtGte Время создания, от (включительно)
|
||||
* @property \DateTime $createdAtGt Время создания, от (не включая)
|
||||
* @property \DateTime $createdAtLte Время создания, до (включительно)
|
||||
* @property \DateTime $createdAtLt Время создания, до (не включая)
|
||||
* @property string $paymentId Идентификатор платежа
|
||||
* @property string $refundId Идентификатор возврата
|
||||
* @property string $status Статус возврата
|
||||
* @property integer|null $limit Ограничение количества объектов возврата, отображаемых на одной странице выдачи
|
||||
* @property string $cursor Токен для получения следующей страницы выборки
|
||||
*/
|
||||
class ReceiptsRequest extends AbstractRequest implements ReceiptsRequestInterface
|
||||
{
|
||||
const MAX_LIMIT_VALUE = 100;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, от (включительно)
|
||||
*/
|
||||
private $_createdAtGte;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, от (не включая)
|
||||
*/
|
||||
private $_createdAtGt;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, до (включительно)
|
||||
*/
|
||||
private $_createdAtLte;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, до (не включая)
|
||||
*/
|
||||
private $_createdAtLt;
|
||||
|
||||
/**
|
||||
* @var string Идентификатор платежа
|
||||
*/
|
||||
private $_paymentId;
|
||||
|
||||
/**
|
||||
* @var string Идентификатор возврата
|
||||
*/
|
||||
private $_refundId;
|
||||
|
||||
/**
|
||||
* @var string Статус возврата
|
||||
*/
|
||||
private $_status;
|
||||
|
||||
/**
|
||||
* @var string Ограничение количества объектов платежа
|
||||
*/
|
||||
private $_limit;
|
||||
|
||||
/**
|
||||
* @var string Токен для получения следующей страницы выборки
|
||||
*/
|
||||
private $_cursor;
|
||||
|
||||
/**
|
||||
* Возвращает идентификатор возврата
|
||||
* @return string Идентификатор возврата
|
||||
*/
|
||||
public function getRefundId()
|
||||
{
|
||||
return $this->_refundId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен идентификатор возврата
|
||||
* @return bool True если идентификатор возврата был установлен, false если не был
|
||||
*/
|
||||
public function hasRefundId()
|
||||
{
|
||||
return !empty($this->_refundId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор возврата
|
||||
* @param string $value Идентификатор возврата, который ищется в API
|
||||
*/
|
||||
public function setRefundId($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_refundId = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$length = mb_strlen((string)$value, 'utf-8');
|
||||
if ($length != 36) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid payment id value in ReceiptsRequest', 0, 'ReceiptsRequest.refundId', $value
|
||||
);
|
||||
}
|
||||
$this->_refundId = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid payment id value type in ReceiptsRequest', 0, 'ReceiptsRequest.refundId', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает идентификатор платежа если он задан или null
|
||||
* @return string|null Идентификатор платежа
|
||||
*/
|
||||
public function getPaymentId()
|
||||
{
|
||||
return $this->_paymentId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет, был ли задан идентификатор платежа
|
||||
* @return bool True если идентификатор был задан, false если нет
|
||||
*/
|
||||
public function hasPaymentId()
|
||||
{
|
||||
return !empty($this->_paymentId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор платежа или null если требуется его удалить
|
||||
* @param string|null $value Идентификатор платежа
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если длина переданной строки не равна 36 символам
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setPaymentId($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_paymentId = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$length = mb_strlen((string)$value, 'utf-8');
|
||||
if ($length != 36) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid payment id value in ReceiptsRequest', 0, 'ReceiptsRequest.paymentId', $value
|
||||
);
|
||||
}
|
||||
$this->_paymentId = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid payment id value type in ReceiptsRequest', 0, 'ReceiptsRequest.paymentId', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (включительно)
|
||||
*/
|
||||
public function getCreatedAtGte()
|
||||
{
|
||||
return $this->_createdAtGte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtGte()
|
||||
{
|
||||
return !empty($this->_createdAtGte);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, от (включительно) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGte($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtGte = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid created_gte value in ReceiptsRequest', 0, 'ReceiptsRequest.createdAtGte'
|
||||
);
|
||||
}
|
||||
$this->_createdAtGte = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid created_gte value type in ReceiptsRequest', 0, 'ReceiptsRequest.createdAtGte'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (не включая)
|
||||
*/
|
||||
public function getCreatedAtGt()
|
||||
{
|
||||
return $this->_createdAtGt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtGt()
|
||||
{
|
||||
return !empty($this->_createdAtGt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, от (не включая) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGt($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtGt = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid created_gt value in ReceiptsRequest', 0, 'ReceiptsRequest.createdAtGt'
|
||||
);
|
||||
}
|
||||
$this->_createdAtGt = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid created_gt value type in ReceiptsRequest', 0, 'ReceiptsRequest.createdAtGt'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (включительно)
|
||||
*/
|
||||
public function getCreatedAtLte()
|
||||
{
|
||||
return $this->_createdAtLte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtLte()
|
||||
{
|
||||
return !empty($this->_createdAtLte);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, до (включительно) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLte($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtLte = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid created_lte value in ReceiptsRequest', 0, 'ReceiptsRequest.createdLte'
|
||||
);
|
||||
}
|
||||
$this->_createdAtLte = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid created_lte value type in ReceiptsRequest', 0, 'ReceiptsRequest.createdLte'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (не включая)
|
||||
*/
|
||||
public function getCreatedAtLt()
|
||||
{
|
||||
return $this->_createdAtLt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtLt()
|
||||
{
|
||||
return !empty($this->_createdAtLt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, до (не включая) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLt($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtLt = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid created_lt value in ReceiptsRequest', 0, 'ReceiptsRequest.createdLt'
|
||||
);
|
||||
}
|
||||
$this->_createdAtLt = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid created_lt value type in ReceiptsRequest', 0, 'ReceiptsRequest.createdLt'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает статус выбираемых возвратов или null если он до этого не был установлен
|
||||
* @return string|null Статус выбираемых возвратов
|
||||
*/
|
||||
public function getStatus()
|
||||
{
|
||||
return $this->_status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен статус выбираемых возвратов
|
||||
* @return bool True если статус был установлен, false если нет
|
||||
*/
|
||||
public function hasStatus()
|
||||
{
|
||||
return !empty($this->_status);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает статус выбираемых возвратов
|
||||
* @param string $value Статус выбираемых платежей или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение не является валидным статусом
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setStatus($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_status = null;
|
||||
} elseif (TypeCast::canCastToEnumString($value)) {
|
||||
if (!RefundStatus::valueExists((string)$value)) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid status value in ReceiptsRequest', 0, 'ReceiptsRequest.status', $value
|
||||
);
|
||||
} else {
|
||||
$this->_status = (string)$value;
|
||||
}
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid status value type in ReceiptsRequest', 0, 'ReceiptsRequest.status', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает токен для получения следующей страницы выборки
|
||||
* @return string|null Токен для получения следующей страницы выборки
|
||||
*/
|
||||
public function getCursor()
|
||||
{
|
||||
return $this->_cursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен токен следующей страницы
|
||||
* @return bool True если токен был установлен, false если нет
|
||||
*/
|
||||
public function hasCursor()
|
||||
{
|
||||
return !empty($this->_cursor);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает токен следующей страницы выборки
|
||||
* @param string $value Токен следующей страницы выборки или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setCursor($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_cursor = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$this->_cursor = (string) $value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid status value type in ReceiptsRequest', 0, 'ReceiptsRequest.cursor', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ограничение количества объектов платежа
|
||||
* @return integer|null Ограничение количества объектов платежа
|
||||
*/
|
||||
public function getLimit()
|
||||
{
|
||||
return $this->_limit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлено ограничение количества объектов платежа
|
||||
* @return bool True если было установлено, false если нет
|
||||
*/
|
||||
public function hasLimit()
|
||||
{
|
||||
return $this->_limit !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает ограничение количества объектов платежа
|
||||
* @param integer|null $value Ограничение количества объектов платежа или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передано не целое число
|
||||
*/
|
||||
public function setLimit($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_limit = null;
|
||||
} elseif (is_int($value)) {
|
||||
if ($value < 0 || $value > self::MAX_LIMIT_VALUE) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid limit value in ReceiptsRequest', 0, 'ReceiptsRequest.limit', $value
|
||||
);
|
||||
}
|
||||
$this->_limit = $value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid limit value type in ReceiptsRequest', 0, 'ReceiptsRequest.limit', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет валидность текущего объекта запроса
|
||||
* @return bool True если объект валиден, false если нет
|
||||
*/
|
||||
public function validate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает инстанс билдера объектов запросов списка возвратов магазина
|
||||
* @return ReceiptsRequestBuilder Билдер объектов запросов списка возвратов
|
||||
*/
|
||||
public static function builder()
|
||||
{
|
||||
return new ReceiptsRequestBuilder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,195 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
use YooKassa\Common\AbstractRequestBuilder;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
|
||||
/**
|
||||
* Класс билдера объектов запросов к API списка чеков
|
||||
*
|
||||
* @package YooKassa\Request\Receipts
|
||||
*/
|
||||
class ReceiptsRequestBuilder extends AbstractRequestBuilder
|
||||
{
|
||||
/**
|
||||
* @var ReceiptsRequest Инстанс собираемого объекта запроса
|
||||
*/
|
||||
protected $currentObject;
|
||||
|
||||
/**
|
||||
* Инициализирует новый инстанс собираемого объекта
|
||||
* @return ReceiptsRequest Инстанс собираемого запроса
|
||||
*/
|
||||
protected function initCurrentObject()
|
||||
{
|
||||
return new ReceiptsRequest();
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор возврата
|
||||
* @param string $value Идентификатор возврата, который ищется в API
|
||||
* @return ReceiptsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если длина переданного значения не равна 36
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setRefundId($value)
|
||||
{
|
||||
$this->currentObject->setRefundId($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор платежа или null если требуется его удалить
|
||||
* @param string|null $value Идентификатор платежа
|
||||
* @return ReceiptsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если длина переданной строки не равна 36 символам
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setPaymentId($value)
|
||||
{
|
||||
$this->currentObject->setPaymentId($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает статус выбираемых чеков
|
||||
* @param string $value Статус выбираемых платежей или null чтобы удалить значение
|
||||
* @return ReceiptsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение не является валидным статусом
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setStatus($value)
|
||||
{
|
||||
$this->currentObject->setStatus($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает ограничение количества объектов чеков
|
||||
* @param string $value Ограничение количества объектов чеков или null чтобы удалить значение
|
||||
* @return ReceiptsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод было передана не целое число
|
||||
*/
|
||||
public function setLimit($value)
|
||||
{
|
||||
$this->currentObject->setLimit($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает токен следующей страницы выборки
|
||||
* @param string $value Токен следующей страницы выборки или null чтобы удалить значение
|
||||
* @return ReceiptsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setCursor($value)
|
||||
{
|
||||
$this->currentObject->setCursor($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются чеки
|
||||
* @param \DateTime|string|int|null $value Время создания, от (не включая) или null чтобы удалить значение
|
||||
* @return ReceiptsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|\Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGt($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtGt($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются чеки
|
||||
* @param \DateTime|string|int|null $value Время создания, от (включительно) или null чтобы удалить значение
|
||||
* @return ReceiptsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|\Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGte($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtGte($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются чеки
|
||||
* @param \DateTime|string|int|null $value Время создания, до (не включая) или null чтобы удалить значение
|
||||
* @return ReceiptsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|\Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLt($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtLt($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются чеки
|
||||
* @param \DateTime|string|int|null $value Время создания, до (включительно) или null чтобы удалить значение
|
||||
* @return ReceiptsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|\Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLte($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtLte($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Собирает и возвращает объект запроса списка чеков магазина
|
||||
* @param array|null $options Массив с настройками запроса
|
||||
* @return ReceiptsRequestInterface Инстанс объекта запроса к API для получения списка чеков магазина
|
||||
*/
|
||||
public function build(array $options = null)
|
||||
{
|
||||
return parent::build($options);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,153 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
/**
|
||||
* Интерфейс объекта запроса списка возвратов
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*
|
||||
* @property-read string $paymentId Идентификатор платежа
|
||||
* @property-read string $refundId Идентификатор возврата
|
||||
* @property-read \DateTime $createdAtGte Время создания, от (включительно)
|
||||
* @property-read \DateTime $createdAtGt Время создания, от (не включая)
|
||||
* @property-read \DateTime $createdAtLte Время создания, до (включительно)
|
||||
* @property-read \DateTime $createdAtLt Время создания, до (не включая)
|
||||
* @property-read string $status Статус возврата
|
||||
* @property-read string $cursor Токен для получения следующей страницы выборки
|
||||
* @property-read integer|null $limit Ограничение количества объектов, отображаемых на одной странице выдачи
|
||||
*/
|
||||
interface ReceiptsRequestInterface
|
||||
{
|
||||
/**
|
||||
* Возвращает идентификатор возврата
|
||||
* @return string Идентификатор возврата
|
||||
*/
|
||||
function getRefundId();
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен идентификатор возврата
|
||||
* @return bool True если идентификатор возврата был установлен, false если не был
|
||||
*/
|
||||
function hasRefundId();
|
||||
|
||||
/**
|
||||
* Возвращает идентификатор платежа если он задан или null
|
||||
* @return string|null Идентификатор платежа
|
||||
*/
|
||||
function getPaymentId();
|
||||
|
||||
/**
|
||||
* Проверяет, был ли задан идентификатор платежа
|
||||
* @return bool True если идентификатор был задан, false если нет
|
||||
*/
|
||||
function hasPaymentId();
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (включительно)
|
||||
*/
|
||||
function getCreatedAtGte();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtGte();
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (не включая)
|
||||
*/
|
||||
function getCreatedAtGt();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtGt();
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (включительно)
|
||||
*/
|
||||
function getCreatedAtLte();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtLte();
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (не включая)
|
||||
*/
|
||||
function getCreatedAtLt();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtLt();
|
||||
|
||||
/**
|
||||
* Возвращает статус выбираемых возвратов или null если он до этого не был установлен
|
||||
* @return string|null Статус выбираемых возвратов
|
||||
*/
|
||||
function getStatus();
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен статус выбираемых возвратов
|
||||
* @return bool True если статус был установлен, false если нет
|
||||
*/
|
||||
function hasStatus();
|
||||
|
||||
/**
|
||||
* Возвращает токен для получения следующей страницы выборки
|
||||
* @return string|null Токен для получения следующей страницы выборки
|
||||
*/
|
||||
function getCursor();
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен токен следующей страницы
|
||||
* @return bool True если токен был установлен, false если нет
|
||||
*/
|
||||
function hasCursor();
|
||||
|
||||
/**
|
||||
* Возвращает ограничение количества объектов или null если оно до этого не было установлено
|
||||
* @return string|null Ограничение количества объектов
|
||||
*/
|
||||
function getLimit();
|
||||
|
||||
/**
|
||||
* Проверяет было ли установлено ограничение количества объектов
|
||||
* @return bool True если ограничение количества объектов было установлено, false если нет
|
||||
*/
|
||||
function hasLimit();
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
/**
|
||||
* Класс сериализатора объектов запросов к API для получения списка возвратов
|
||||
*
|
||||
* @package YooKassa\Request\Receipts
|
||||
*/
|
||||
class ReceiptsRequestSerializer
|
||||
{
|
||||
/**
|
||||
* @var array Карта маппинга свойств объекта запроса на поля отправляемого запроса
|
||||
*/
|
||||
private static $propertyMap = array(
|
||||
'cursor' => 'cursor',
|
||||
'createdAtGte' => 'created_at.gte',
|
||||
'createdAtGt' => 'created_at.gt',
|
||||
'createdAtLte' => 'created_at.lte',
|
||||
'createdAtLt' => 'created_at.lt',
|
||||
'limit' => 'limit',
|
||||
'paymentId' => 'payment_id',
|
||||
'refundId' => 'refund_id',
|
||||
'status' => 'status',
|
||||
);
|
||||
|
||||
/**
|
||||
* Сериализует объект запроса к API для дальнейшей его отправки
|
||||
* @param ReceiptsRequestInterface $request Сериализуемый объект
|
||||
* @return array Массив с инфомрацией, отпарвляемый в дальнейшем в API
|
||||
*/
|
||||
public function serialize(ReceiptsRequestInterface $request)
|
||||
{
|
||||
$result = array();
|
||||
foreach (self::$propertyMap as $property => $name) {
|
||||
$value = $request->{$property};
|
||||
if (!empty($value)) {
|
||||
if ($value instanceof \DateTime) {
|
||||
if ($value->getTimestamp() > 1) {
|
||||
$result[$name] = $value->format(YOOKASSA_DATE);
|
||||
}
|
||||
} else {
|
||||
$result[$name] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
/**
|
||||
* Class ReceiptsResponse
|
||||
* @package YooKassa\Request\Receipts
|
||||
*/
|
||||
class ReceiptsResponse
|
||||
{
|
||||
/**
|
||||
* Формат выдачи результатов запроса. Возможное значение: `list` (список).
|
||||
*
|
||||
* @var string Формат выдачи результатов запроса.
|
||||
*/
|
||||
private $type;
|
||||
|
||||
/**
|
||||
* Список чеков
|
||||
*
|
||||
* @var ReceiptResponseInterface[] Список чеков
|
||||
*/
|
||||
private $items;
|
||||
|
||||
/**
|
||||
* @var string|null Токен следующей страницы
|
||||
*/
|
||||
private $nextCursor;
|
||||
|
||||
/**
|
||||
* @var ReceiptResponseFactory Фабрика для создания чеков
|
||||
*/
|
||||
private $factory;
|
||||
|
||||
/**
|
||||
* Конструктор, устанавливает список полученых от API чеков
|
||||
*
|
||||
* @param array $response Разобранный ответ от API в виде чеков
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function __construct($response)
|
||||
{
|
||||
$this->factory = new ReceiptResponseFactory();
|
||||
|
||||
if (!empty($response['type'])) {
|
||||
$this->type = $response['type'];
|
||||
}
|
||||
|
||||
$this->items = array();
|
||||
foreach ($response['items'] as $item) {
|
||||
if ($receipt = $this->factory->factory($item)) {
|
||||
$this->items[] = $receipt;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($response['next_cursor'])) {
|
||||
$this->nextCursor = $response['next_cursor'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает формат выдачи результатов запроса. Возможное значение: `list` (список).
|
||||
* @return string Формат выдачи результатов запроса.
|
||||
*/
|
||||
public function getType()
|
||||
{
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возаращает список чеков
|
||||
* @return ReceiptResponseInterface[] Список чеков
|
||||
*/
|
||||
public function getItems()
|
||||
{
|
||||
return $this->items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает токен следующей страницы, если он задан, или null
|
||||
* @return string|null Токен следующей страницы
|
||||
*/
|
||||
public function getNextCursor()
|
||||
{
|
||||
return $this->nextCursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет имееотся ли в ответе токен следующей страницы
|
||||
* @return bool True если токен следующей страницы есть, false если нет
|
||||
*/
|
||||
public function hasNextCursor()
|
||||
{
|
||||
return $this->nextCursor !== null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Helpers\TypeCast;
|
||||
|
||||
/**
|
||||
* Class RefundReceipt
|
||||
* @package YooKassa\Model
|
||||
*
|
||||
* @property string $refund_id Идентификатор возврата в ЮKassa.
|
||||
* @property string $refundId Идентификатор возврата в ЮKassa.
|
||||
*/
|
||||
class RefundReceiptResponse extends AbstractReceiptResponse
|
||||
{
|
||||
const LENGTH_REFUND_ID = 36;
|
||||
|
||||
private $_refund_id;
|
||||
|
||||
/**
|
||||
* Установка свойств, присущих конкретному объекту
|
||||
*
|
||||
* @param array $receiptData
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setSpecificProperties($receiptData)
|
||||
{
|
||||
$this->setRefundId($this->getObjectId());
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getRefundId()
|
||||
{
|
||||
return $this->_refund_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор возврата в ЮKassa
|
||||
*
|
||||
* @param string $value идентификатор возврата в ЮKassa
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в качестве значения была передана не строка
|
||||
* @throws InvalidPropertyValueException Выбрасывается если длина переданной строки не равна 36
|
||||
*/
|
||||
public function setRefundId($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_refund_id = null;
|
||||
} elseif (!TypeCast::canCastToString($value)) {
|
||||
throw new InvalidPropertyValueTypeException('Invalid refund_id value type', 0, 'Receipt.refundId');
|
||||
} elseif (strlen((string)$value) !== self::LENGTH_REFUND_ID) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid refund_id value: "'.$value.'"', 0, 'Receipt.refundId', $value
|
||||
);
|
||||
} else {
|
||||
$this->_refund_id = (string)$value;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Receipts;
|
||||
|
||||
/**
|
||||
* Class SimpleReceiptResponse
|
||||
* @package YooKassa\Model
|
||||
*
|
||||
* Чек, не привязанный ни к платежу, ни к возврату
|
||||
*/
|
||||
class SimpleReceiptResponse extends AbstractReceiptResponse
|
||||
{
|
||||
/**
|
||||
* Установка свойств, присущих конкретному объекту
|
||||
*
|
||||
* @param array $receiptData
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function setSpecificProperties($receiptData)
|
||||
{}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
use YooKassa\Model\MonetaryAmount;
|
||||
use YooKassa\Model\Refund;
|
||||
|
||||
/**
|
||||
* Абстрактный класс ответа от API с информацией о возврате
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*/
|
||||
abstract class AbstractRefundResponse extends Refund
|
||||
{
|
||||
/**
|
||||
* Конструктор
|
||||
* @param array $options Ассоциативный массив с информацией, вернувшейся от API
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function __construct($options)
|
||||
{
|
||||
$this->setId(empty($options['id']) ? null : $options['id']);
|
||||
$this->setPaymentId(empty($options['payment_id']) ? null : $options['payment_id']);
|
||||
$this->setStatus(empty($options['status']) ? null : $options['status']);
|
||||
$this->setCreatedAt(empty($options['created_at']) ? null : $options['created_at']);
|
||||
$this->setAmount(new MonetaryAmount($options['amount']['value'], $options['amount']['currency']));
|
||||
|
||||
if (!empty($options['requestor'])) {
|
||||
$this->setRequestor($options['requestor']);
|
||||
}
|
||||
|
||||
if (!empty($options['sources'])) {
|
||||
$this->setSources($options['sources']);
|
||||
}
|
||||
|
||||
if (!empty($options['receipt_registration'])) {
|
||||
$this->setReceiptRegistration($options['receipt_registration']);
|
||||
}
|
||||
|
||||
if (!empty($options['description'])) {
|
||||
$this->setDescription($options['description']);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,208 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
use YooKassa\Common\AbstractPaymentRequest;
|
||||
use YooKassa\Common\Exceptions\EmptyPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Helpers\TypeCast;
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\ReceiptInterface;
|
||||
use YooKassa\Model\Source;
|
||||
use YooKassa\Model\SourceInterface;
|
||||
|
||||
/**
|
||||
* Класс объекта запроса для создания возврата
|
||||
*
|
||||
* @property string $paymentId Айди платежа для которого создаётся возврат
|
||||
* @property AmountInterface $amount Сумма возврата
|
||||
* @property string $description Комментарий к операции возврата, основание для возврата средств покупателю.
|
||||
* @property ReceiptInterface|null $receipt Инстанс чека или null
|
||||
*/
|
||||
class CreateRefundRequest extends AbstractPaymentRequest implements CreateRefundRequestInterface
|
||||
{
|
||||
/**
|
||||
* @var string Айди платежа для которого создаётся возврат
|
||||
*/
|
||||
private $_paymentId;
|
||||
|
||||
/**
|
||||
* @var string Комментарий к операции возврата, основание для возврата средств покупателю.
|
||||
*/
|
||||
private $_description;
|
||||
|
||||
/**
|
||||
* @var SourceInterface[]
|
||||
*/
|
||||
private $_sources;
|
||||
|
||||
/**
|
||||
* Возвращает айди платежа для которого создаётся возврат средств
|
||||
* @return string Айди платежа для которого создаётся возврат
|
||||
*/
|
||||
public function getPaymentId()
|
||||
{
|
||||
return $this->_paymentId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает айди платежа для которого создаётся возврат
|
||||
* @param string $value Айди платежа
|
||||
*
|
||||
* @throws EmptyPropertyValueException Выбрасывается если передано пустое значение айди платежа
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение является строкой, но не является
|
||||
* валидным значением айди платежа
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если передано значение не валидного типа
|
||||
*/
|
||||
public function setPaymentId($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
throw new EmptyPropertyValueException(
|
||||
'Empty payment id value in CreateRefundRequest', 0, 'CreateRefundRequest.paymentId'
|
||||
);
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$length = mb_strlen($value, 'utf-8');
|
||||
if ($length != 36) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid payment id value in CreateRefundRequest', 0, 'CreateRefundRequest.paymentId', $value
|
||||
);
|
||||
}
|
||||
$this->_paymentId = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid payment id value type in CreateRefundRequest', 0, 'CreateRefundRequest.paymentId', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает комментарий к возврату или null, если комментарий не задан
|
||||
* @return string Комментарий к операции возврата, основание для возврата средств покупателю.
|
||||
*/
|
||||
public function getDescription()
|
||||
{
|
||||
return $this->_description;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет задан ли комментарий к создаваемому возврату
|
||||
* @return bool True если комментарий установлен, false если нет
|
||||
*/
|
||||
public function hasDescription()
|
||||
{
|
||||
return $this->_description !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает комментарий к возврату
|
||||
* @param string $value Комментарий к операции возврата, основание для возврата средств покупателю
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если была передана не строка
|
||||
*/
|
||||
public function setDescription($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_description = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$this->_description = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid description value type in CreateRefundRequest', 0, 'CreateRefundRequest.description', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает transfers (массив распределения денег между магазинами)
|
||||
* @param SourceInterface[]|array $value
|
||||
*/
|
||||
public function setSources($value)
|
||||
{
|
||||
if (!is_array($value)) {
|
||||
$message = 'Sources must be an array of SourceInterface';
|
||||
throw new InvalidPropertyValueTypeException($message, 0, 'CreateRefundRequest.sources', $value);
|
||||
}
|
||||
|
||||
$sources = array();
|
||||
foreach ($value as $item) {
|
||||
if (is_array($item)) {
|
||||
$item = new Source($item);
|
||||
}
|
||||
|
||||
if (!($item instanceof SourceInterface)) {
|
||||
$message = 'Source must be instance of SourceInterface';
|
||||
throw new InvalidPropertyValueTypeException($message, 0, 'CreateRefundRequest.sources', $value);
|
||||
}
|
||||
$sources[] = $item;
|
||||
}
|
||||
|
||||
$this->_sources = $sources;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return SourceInterface[]
|
||||
*/
|
||||
public function getSources()
|
||||
{
|
||||
return $this->_sources;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function hasSources()
|
||||
{
|
||||
return !empty($this->_sources);
|
||||
}
|
||||
|
||||
/**
|
||||
* Валидирует текущий объект запроса
|
||||
* @return bool True если текущий объект запроса валиден, false если нет
|
||||
*/
|
||||
public function validate()
|
||||
{
|
||||
if (!parent::validate()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (empty($this->_paymentId)) {
|
||||
$this->setValidationError('Payment id not specified');
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает билдер объектов текущего типа
|
||||
* @return CreateRefundRequestBuilder Инстанс билдера запрсов
|
||||
*/
|
||||
public static function builder()
|
||||
{
|
||||
return new CreateRefundRequestBuilder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
use YooKassa\Common\AbstractPaymentRequestBuilder;
|
||||
use YooKassa\Common\Exceptions\EmptyPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Model\SourceInterface;
|
||||
|
||||
/**
|
||||
* Класс билдера запросов к API на создание возврата средств
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*/
|
||||
class CreateRefundRequestBuilder extends AbstractPaymentRequestBuilder
|
||||
{
|
||||
|
||||
/**
|
||||
* @var CreateRefundRequest Собираемый объет запроса к API
|
||||
*/
|
||||
protected $currentObject;
|
||||
|
||||
/**
|
||||
* Возвращает новый объект для сборки
|
||||
* @return CreateRefundRequest Собираемый объет запроса к API
|
||||
*/
|
||||
protected function initCurrentObject()
|
||||
{
|
||||
parent::initCurrentObject();
|
||||
return new CreateRefundRequest();
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает айди платежа для которого создаётся возврат
|
||||
* @param string $value Айди платежа
|
||||
* @return CreateRefundRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws EmptyPropertyValueException Выбрасывается если передано пустое значение айди платежа
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение является строкой, но не является
|
||||
* валидным значением айди платежа
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если передано значение не валидного типа
|
||||
*/
|
||||
public function setPaymentId($value)
|
||||
{
|
||||
$this->currentObject->setPaymentId($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает комментарий к возврату
|
||||
* @param string $value Комментарий к возврату
|
||||
* @return CreateRefundRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если была передана не строка
|
||||
*/
|
||||
public function setDescription($value)
|
||||
{
|
||||
$this->currentObject->setDescription($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает источники возврата
|
||||
*
|
||||
* @param SourceInterface[]|array $value Массив трансферов
|
||||
*
|
||||
* @return self Инстанс билдера запросов
|
||||
*/
|
||||
public function setSources($value)
|
||||
{
|
||||
$this->currentObject->setSources($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Строит объект запроса к API
|
||||
* @param array|null $options Устаналвиваемые параметры запроса
|
||||
* @return CreateRefundRequestInterface Инстанс сгенерированного объекта запроса к API
|
||||
*/
|
||||
public function build(array $options = null)
|
||||
{
|
||||
if (!empty($options)) {
|
||||
$this->setOptions($options);
|
||||
}
|
||||
|
||||
$this->currentObject->setAmount($this->amount);
|
||||
|
||||
if ($this->receipt->notEmpty()) {
|
||||
$this->currentObject->setReceipt($this->receipt);
|
||||
}
|
||||
return parent::build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\ReceiptInterface;
|
||||
use YooKassa\Model\SourceInterface;
|
||||
|
||||
/**
|
||||
* Интерфейс объекта запроса на возврат
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*
|
||||
* @property-read string $paymentId Айди платежа для которого создаётся возврат
|
||||
* @property-read AmountInterface $amount Сумма возврата
|
||||
* @property-read string $description Комментарий к операции возврата, основание для возврата средств покупателю.
|
||||
* @property-read ReceiptInterface|null $receipt Инстанс чека или null
|
||||
*/
|
||||
interface CreateRefundRequestInterface
|
||||
{
|
||||
/**
|
||||
* Возвращает айди платежа для которого создаётся возврат средств
|
||||
* @return string Айди платежа для которого создаётся возврат
|
||||
*/
|
||||
function getPaymentId();
|
||||
|
||||
/**
|
||||
* Возвращает сумму возвращаемых средств
|
||||
* @return AmountInterface Сумма возврата
|
||||
*/
|
||||
function getAmount();
|
||||
|
||||
/**
|
||||
* Возвращает комментарий к возврату или null, если комментарий не задан
|
||||
* @return string Комментарий к операции возврата, основание для возврата средств покупателю.
|
||||
*/
|
||||
function getDescription();
|
||||
|
||||
/**
|
||||
* Проверяет задан ли комментарий к создаваемому возврату
|
||||
* @return bool True если комментарий установлен, false если нет
|
||||
*/
|
||||
function hasDescription();
|
||||
|
||||
/**
|
||||
* Возвращает инстанс чека или null если чек не задан
|
||||
* @return ReceiptInterface|null Инстанс чека или null
|
||||
*/
|
||||
function getReceipt();
|
||||
|
||||
/**
|
||||
* Проверяет задан ли чек
|
||||
* @return bool True если чек есть, false если нет
|
||||
*/
|
||||
function hasReceipt();
|
||||
|
||||
/**
|
||||
* @return SourceInterface[]
|
||||
*/
|
||||
function getSources();
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
function hasSources();
|
||||
}
|
||||
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
use YooKassa\Model\AmountInterface;
|
||||
use YooKassa\Model\ReceiptItem;
|
||||
use YooKassa\Model\SourceInterface;
|
||||
|
||||
/**
|
||||
* Класс сериалайзера запросов к API на создание нового возврата средств
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*/
|
||||
class CreateRefundRequestSerializer
|
||||
{
|
||||
/**
|
||||
* Сериализует переданный объект запроса к API в массив
|
||||
*
|
||||
* @param CreateRefundRequestInterface $request Сериализуемый объект запроса
|
||||
*
|
||||
* @return array Ассоциативный массив для передачи в API
|
||||
*/
|
||||
public function serialize(CreateRefundRequestInterface $request)
|
||||
{
|
||||
$result = array(
|
||||
'payment_id' => $request->getPaymentId(),
|
||||
'amount' => array(
|
||||
'value' => $request->getAmount()->getValue(),
|
||||
'currency' => $request->getAmount()->getCurrency(),
|
||||
),
|
||||
);
|
||||
if ($request->hasDescription()) {
|
||||
$result['description'] = $request->getDescription();
|
||||
}
|
||||
if ($request->hasReceipt()) {
|
||||
$receipt = $request->getReceipt();
|
||||
$result['receipt'] = array();
|
||||
/** @var ReceiptItem $item */
|
||||
foreach ($receipt->getItems() as $item) {
|
||||
$itemArray = array(
|
||||
'description' => $item->getDescription(),
|
||||
'amount' => array(
|
||||
'value' => $item->getPrice()->getValue(),
|
||||
'currency' => $item->getPrice()->getCurrency(),
|
||||
),
|
||||
'quantity' => $item->getQuantity(),
|
||||
'vat_code' => $item->getVatCode(),
|
||||
);
|
||||
|
||||
if ($item->getPaymentSubject()) {
|
||||
$itemArray['payment_subject'] = $item->getPaymentSubject();
|
||||
}
|
||||
|
||||
if ($item->getPaymentMode()) {
|
||||
$itemArray['payment_mode'] = $item->getPaymentMode();
|
||||
}
|
||||
|
||||
$result['receipt']['items'][] = $itemArray;
|
||||
}
|
||||
|
||||
$value = $receipt->getCustomer()->getEmail();
|
||||
if (!empty($value)) {
|
||||
$result['receipt']['customer']['email'] = $value;
|
||||
}
|
||||
$value = $receipt->getCustomer()->getPhone();
|
||||
if (!empty($value)) {
|
||||
$result['receipt']['customer']['phone'] = $value;
|
||||
}
|
||||
$value = $receipt->getTaxSystemCode();
|
||||
if (!empty($value)) {
|
||||
$result['receipt']['tax_system_code'] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
if ($request->hasSources()) {
|
||||
$result['sources'] = $this->serializeSources($request->getSources());
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param AmountInterface $amount
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function serializeAmount(AmountInterface $amount)
|
||||
{
|
||||
return array(
|
||||
'value' => $amount->getValue(),
|
||||
'currency' => $amount->getCurrency(),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SourceInterface[] $transfers
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function serializeSources(array $sources)
|
||||
{
|
||||
$result = array();
|
||||
foreach ($sources as $source) {
|
||||
$result[] = array(
|
||||
'account_id' => $source->getAccountId(),
|
||||
'amount' => $this->serializeAmount($source->getAmount())
|
||||
);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
/**
|
||||
* Класс объекта ответа от API при создании нового возврата
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*/
|
||||
class CreateRefundResponse extends AbstractRefundResponse
|
||||
{}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
/**
|
||||
* Класс объекта ответа от API при запросе одного конкретного возврата
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*/
|
||||
class RefundResponse extends AbstractRefundResponse
|
||||
{}
|
||||
@@ -0,0 +1,462 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
use Exception;
|
||||
use YooKassa\Common\AbstractRequest;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
use YooKassa\Helpers\TypeCast;
|
||||
use YooKassa\Model\RefundStatus;
|
||||
|
||||
/**
|
||||
* Класс объекта запроса к API списка возвратов магазина
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*
|
||||
* @property \DateTime $createdAtGte Время создания, от (включительно)
|
||||
* @property \DateTime $createdAtGt Время создания, от (не включая)
|
||||
* @property \DateTime $createdAtLte Время создания, до (включительно)
|
||||
* @property \DateTime $createdAtLt Время создания, до (не включая)
|
||||
* @property string $paymentId Идентификатор платежа
|
||||
* @property string $status Статус возврата
|
||||
* @property integer|null $limit Ограничение количества объектов возврата, отображаемых на одной странице выдачи
|
||||
* @property string $cursor Токен для получения следующей страницы выборки
|
||||
*/
|
||||
class RefundsRequest extends AbstractRequest implements RefundsRequestInterface
|
||||
{
|
||||
const MAX_LIMIT_VALUE = 100;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, от (включительно)
|
||||
*/
|
||||
private $_createdAtGte;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, от (не включая)
|
||||
*/
|
||||
private $_createdAtGt;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, до (включительно)
|
||||
*/
|
||||
private $_createdAtLte;
|
||||
|
||||
/**
|
||||
* @var \DateTime Время создания, до (не включая)
|
||||
*/
|
||||
private $_createdAtLt;
|
||||
|
||||
/**
|
||||
* @var string Идентификатор шлюза
|
||||
*/
|
||||
private $_paymentId;
|
||||
|
||||
/**
|
||||
* @var string Статус возврата
|
||||
*/
|
||||
private $_status;
|
||||
|
||||
/**
|
||||
* @var string Ограничение количества объектов платежа
|
||||
*/
|
||||
private $_limit;
|
||||
|
||||
/**
|
||||
* @var string Токен для получения следующей страницы выборки
|
||||
*/
|
||||
private $_cursor;
|
||||
|
||||
/**
|
||||
* Возвращает идентификатор платежа если он задан или null
|
||||
* @return string|null Идентификатор платежа
|
||||
*/
|
||||
public function getPaymentId()
|
||||
{
|
||||
return $this->_paymentId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет, был ли задан идентификатор платежа
|
||||
* @return bool True если идентификатор был задан, false если нет
|
||||
*/
|
||||
public function hasPaymentId()
|
||||
{
|
||||
return !empty($this->_paymentId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор платежа или null если требуется его удалить
|
||||
* @param string|null $value Идентификатор платежа
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если длина переданной строки не равна 36 символам
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setPaymentId($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_paymentId = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$length = mb_strlen((string)$value, 'utf-8');
|
||||
if ($length != 36) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid payment id value in RefundsRequest', 0, 'RefundsRequest.paymentId', $value
|
||||
);
|
||||
}
|
||||
$this->_paymentId = (string)$value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid payment id value type in RefundsRequest', 0, 'RefundsRequest.paymentId', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (включительно)
|
||||
*/
|
||||
public function getCreatedAtGte()
|
||||
{
|
||||
return $this->_createdAtGte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtGte()
|
||||
{
|
||||
return !empty($this->_createdAtGte);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, от (включительно) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGte($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtGte = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid created_gte value in RefundsRequest', 0, 'RefundsRequest.createdAtGte'
|
||||
);
|
||||
}
|
||||
$this->_createdAtGte = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid created_gte value type in RefundsRequest', 0, 'RefundsRequest.createdAtGte'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (не включая)
|
||||
*/
|
||||
public function getCreatedAtGt()
|
||||
{
|
||||
return $this->_createdAtGt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtGt()
|
||||
{
|
||||
return !empty($this->_createdAtGt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, от (не включая) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGt($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtGt = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid created_gt value in RefundsRequest', 0, 'RefundsRequest.createdAtGt'
|
||||
);
|
||||
}
|
||||
$this->_createdAtGt = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid created_gt value type in RefundsRequest', 0, 'RefundsRequest.createdAtGt'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (включительно)
|
||||
*/
|
||||
public function getCreatedAtLte()
|
||||
{
|
||||
return $this->_createdAtLte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtLte()
|
||||
{
|
||||
return !empty($this->_createdAtLte);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, до (включительно) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLte($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtLte = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid created_lte value in RefundsRequest', 0, 'RefundsRequest.createdLte'
|
||||
);
|
||||
}
|
||||
$this->_createdAtLte = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid created_lte value type in RefundsRequest', 0, 'RefundsRequest.createdLte'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (не включая)
|
||||
*/
|
||||
public function getCreatedAtLt()
|
||||
{
|
||||
return $this->_createdAtLt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
public function hasCreatedAtLt()
|
||||
{
|
||||
return !empty($this->_createdAtLt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, до (не включая) или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLt($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_createdAtLt = null;
|
||||
} elseif (TypeCast::canCastToDateTime($value)) {
|
||||
$dateTime = TypeCast::castToDateTime($value);
|
||||
if ($dateTime === null) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid created_lt value in RefundsRequest', 0, 'RefundsRequest.createdLt'
|
||||
);
|
||||
}
|
||||
$this->_createdAtLt = $dateTime;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid created_lt value type in RefundsRequest', 0, 'RefundsRequest.createdLt'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает статус выбираемых возвратов или null если он до этого не был установлен
|
||||
* @return string|null Статус выбираемых возвратов
|
||||
*/
|
||||
public function getStatus()
|
||||
{
|
||||
return $this->_status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен статус выбираемых возвратов
|
||||
* @return bool True если статус был установлен, false если нет
|
||||
*/
|
||||
public function hasStatus()
|
||||
{
|
||||
return !empty($this->_status);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает статус выбираемых возвратов
|
||||
* @param string $value Статус выбираемых платежей или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение не является валидным статусом
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setStatus($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_status = null;
|
||||
} elseif (TypeCast::canCastToEnumString($value)) {
|
||||
if (!RefundStatus::valueExists((string)$value)) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid status value in RefundsRequest', 0, 'RefundsRequest.status', $value
|
||||
);
|
||||
} else {
|
||||
$this->_status = (string)$value;
|
||||
}
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid status value in RefundsRequest', 0, 'RefundsRequest.status', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает токен для получения следующей страницы выборки
|
||||
* @return string|null Токен для получения следующей страницы выборки
|
||||
*/
|
||||
public function getCursor()
|
||||
{
|
||||
return $this->_cursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен токен следующей страницы
|
||||
* @return bool True если токен был установлен, false если нет
|
||||
*/
|
||||
public function hasCursor()
|
||||
{
|
||||
return !empty($this->_cursor);
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает токен следующей страницы выборки
|
||||
* @param string $value Токен следующей страницы выборки или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setCursor($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_cursor = null;
|
||||
} elseif (TypeCast::canCastToString($value)) {
|
||||
$this->_cursor = (string) $value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid status value in RefundsRequest', 0, 'RefundsRequest.cursor', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ограничение количества объектов платежа
|
||||
* @return integer|null Ограничение количества объектов платежа
|
||||
*/
|
||||
public function getLimit()
|
||||
{
|
||||
return $this->_limit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлено ограничение количества объектов платежа
|
||||
* @return bool True если было установлено, false если нет
|
||||
*/
|
||||
public function hasLimit()
|
||||
{
|
||||
return $this->_limit !== null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает ограничение количества объектов платежа
|
||||
* @param integer|null $value Ограничение количества объектов платежа или null чтобы удалить значение
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передано не целое число
|
||||
*/
|
||||
public function setLimit($value)
|
||||
{
|
||||
if ($value === null || $value === '') {
|
||||
$this->_limit = null;
|
||||
} elseif (is_int($value)) {
|
||||
if ($value < 0 || $value > self::MAX_LIMIT_VALUE) {
|
||||
throw new InvalidPropertyValueException(
|
||||
'Invalid limit value in RefundsRequest', 0, 'RefundsRequest.limit', $value
|
||||
);
|
||||
}
|
||||
$this->_limit = $value;
|
||||
} else {
|
||||
throw new InvalidPropertyValueTypeException(
|
||||
'Invalid limit value type in RefundsRequest', 0, 'RefundsRequest.limit', $value
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет валидность текущего объекта запроса
|
||||
* @return bool True если объект валиден, false если нет
|
||||
*/
|
||||
public function validate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает инстанс билдера объектов запросов списка возвратов магазина
|
||||
* @return RefundsRequestBuilder Билдер объектов запросов списка возвратов
|
||||
*/
|
||||
public static function builder()
|
||||
{
|
||||
return new RefundsRequestBuilder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,181 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
use YooKassa\Common\AbstractRequestBuilder;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueException;
|
||||
use YooKassa\Common\Exceptions\InvalidPropertyValueTypeException;
|
||||
|
||||
/**
|
||||
* Класс билдера объектов запросов к API списка возвратов
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*/
|
||||
class RefundsRequestBuilder extends AbstractRequestBuilder
|
||||
{
|
||||
/**
|
||||
* @var RefundsRequest Инстанс собираемого объекта запроса
|
||||
*/
|
||||
protected $currentObject;
|
||||
|
||||
/**
|
||||
* Инициализирует новый инстанс собираемого объекта
|
||||
* @return RefundsRequest Инстанс собираемого запроса
|
||||
*/
|
||||
protected function initCurrentObject()
|
||||
{
|
||||
return new RefundsRequest();
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает идентификатор платежа или null если требуется его удалить
|
||||
* @param string|null $value Идентификатор платежа
|
||||
* @return RefundsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если длина переданной строки не равна 36 символам
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setPaymentId($value)
|
||||
{
|
||||
$this->currentObject->setPaymentId($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает статус выбираемых возвратов
|
||||
* @param string $value Статус выбираемых платежей или null чтобы удалить значение
|
||||
* @return RefundsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Выбрасывается если переданное значение не является валидным статусом
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setStatus($value)
|
||||
{
|
||||
$this->currentObject->setStatus($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает ограничение количества объектов возвратов
|
||||
* @param string $value Ограничение количества объектов возвратов или null чтобы удалить значение
|
||||
* @return RefundsRequestBuilder Инстанс текущего билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод было передана не целое число
|
||||
*/
|
||||
public function setLimit($value)
|
||||
{
|
||||
$this->currentObject->setLimit($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает токен следующей страницы выборки
|
||||
* @param string $value Токен следующей страницы выборки или null чтобы удалить значение
|
||||
* @return RefundsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueTypeException Выбрасывается если в метод была передана не строка
|
||||
*/
|
||||
public function setCursor($value)
|
||||
{
|
||||
$this->currentObject->setCursor($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, от (не включая) или null чтобы удалить значение
|
||||
* @return RefundsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|\Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGt($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtGt($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания от которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, от (включительно) или null чтобы удалить значение
|
||||
* @return RefundsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|\Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtGte($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtGte($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, до (не включая) или null чтобы удалить значение
|
||||
* @return RefundsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|\Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLt($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtLt($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Устанавливает дату создания до которой выбираются возвраты
|
||||
* @param \DateTime|string|int|null $value Время создания, до (включительно) или null чтобы удалить значение
|
||||
* @return RefundsRequestBuilder Инстанс текущего объекта билдера
|
||||
*
|
||||
* @throws InvalidPropertyValueException Генерируется если была передана дата в невалидном формате (была передана
|
||||
* строка или число, которые не удалось преобразовать в валидную дату)
|
||||
* @throws InvalidPropertyValueTypeException|\Exception Генерируется если была передана дата с не тем типом (передана не
|
||||
* строка, не число и не значение типа \DateTime)
|
||||
*/
|
||||
public function setCreatedAtLte($value)
|
||||
{
|
||||
$this->currentObject->setCreatedAtLte($value);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Собирает и возвращает объект запроса списка возвратов магазина
|
||||
* @param array|null $options Массив с настройками запроса
|
||||
* @return RefundsRequestInterface Инстанс объекта запроса к API для получения списка возвратов магазина
|
||||
*/
|
||||
public function build(array $options = null)
|
||||
{
|
||||
return parent::build($options);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
/**
|
||||
* Интерфейс объекта запроса списка возвратов
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*
|
||||
* @property-read string $paymentId Идентификатор платежа
|
||||
* @property-read \DateTime $createdAtGte Время создания, от (включительно)
|
||||
* @property-read \DateTime $createdAtGt Время создания, от (не включая)
|
||||
* @property-read \DateTime $createdAtLte Время создания, до (включительно)
|
||||
* @property-read \DateTime $createdAtLt Время создания, до (не включая)
|
||||
* @property-read string $status Статус возврата
|
||||
* @property-read string $cursor Токен для получения следующей страницы выборки
|
||||
* @property-read integer|null $limit Ограничение количества объектов, отображаемых на одной странице выдачи
|
||||
*/
|
||||
interface RefundsRequestInterface
|
||||
{
|
||||
/**
|
||||
* Возвращает идентификатор платежа если он задан или null
|
||||
* @return string|null Идентификатор платежа
|
||||
*/
|
||||
function getPaymentId();
|
||||
|
||||
/**
|
||||
* Проверяет, был ли задан идентификатор платежа
|
||||
* @return bool True если идентификатор был задан, false если нет
|
||||
*/
|
||||
function hasPaymentId();
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (включительно)
|
||||
*/
|
||||
function getCreatedAtGte();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtGte();
|
||||
|
||||
/**
|
||||
* Возвращает дату создания от которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, от (не включая)
|
||||
*/
|
||||
function getCreatedAtGt();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания от которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtGt();
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (включительно)
|
||||
*/
|
||||
function getCreatedAtLte();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtLte();
|
||||
|
||||
/**
|
||||
* Возвращает дату создания до которой будут возвращены возвраты или null если дата не была установлена
|
||||
* @return \DateTime|null Время создания, до (не включая)
|
||||
*/
|
||||
function getCreatedAtLt();
|
||||
|
||||
/**
|
||||
* Проверяет была ли установлена дата создания до которой выбираются возвраты
|
||||
* @return bool True если дата была установлена, false если нет
|
||||
*/
|
||||
function hasCreatedAtLt();
|
||||
|
||||
/**
|
||||
* Возвращает статус выбираемых возвратов или null если он до этого не был установлен
|
||||
* @return string|null Статус выбираемых возвратов
|
||||
*/
|
||||
function getStatus();
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен статус выбираемых возвратов
|
||||
* @return bool True если статус был установлен, false если нет
|
||||
*/
|
||||
function hasStatus();
|
||||
|
||||
/**
|
||||
* Возвращает токен для получения следующей страницы выборки
|
||||
* @return string|null Токен для получения следующей страницы выборки
|
||||
*/
|
||||
function getCursor();
|
||||
|
||||
/**
|
||||
* Проверяет был ли установлен токен следующей страницы
|
||||
* @return bool True если токен был установлен, false если нет
|
||||
*/
|
||||
function hasCursor();
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
/**
|
||||
* Класс сериализатора объектов запросов к API для получения списка возвратов
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*/
|
||||
class RefundsRequestSerializer
|
||||
{
|
||||
/**
|
||||
* @var array Карта маппинга свойств объекта запроса на поля отправляемого запроса
|
||||
*/
|
||||
private static $propertyMap = array(
|
||||
'cursor' => 'cursor',
|
||||
'createdAtGte' => 'created_at.gte',
|
||||
'createdAtGt' => 'created_at.gt',
|
||||
'createdAtLte' => 'created_at.lte',
|
||||
'createdAtLt' => 'created_at.lt',
|
||||
'limit' => 'limit',
|
||||
'paymentId' => 'payment_id',
|
||||
'status' => 'status',
|
||||
);
|
||||
|
||||
/**
|
||||
* Сериализует объект запроса к API для дальнейшей его отправки
|
||||
* @param RefundsRequestInterface $request Сериализуемый объект
|
||||
* @return array Массив с инфомрацией, отпарвляемый в дальнейшем в API
|
||||
*/
|
||||
public function serialize(RefundsRequestInterface $request)
|
||||
{
|
||||
$result = array();
|
||||
foreach (self::$propertyMap as $property => $name) {
|
||||
$value = $request->{$property};
|
||||
if (!empty($value)) {
|
||||
if ($value instanceof \DateTime) {
|
||||
if ($value->getTimestamp() > 1) {
|
||||
$result[$name] = $value->format(YOOKASSA_DATE);
|
||||
}
|
||||
} else {
|
||||
$result[$name] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Refunds;
|
||||
|
||||
use YooKassa\Model\RefundInterface;
|
||||
|
||||
/**
|
||||
* Класс объекта ответа от API со списком возвратов магазина
|
||||
*
|
||||
* @package YooKassa\Request\Refunds
|
||||
*/
|
||||
class RefundsResponse
|
||||
{
|
||||
/**
|
||||
* @var RefundInterface[] Массив возвратов
|
||||
*/
|
||||
private $items;
|
||||
|
||||
/**
|
||||
* @var string|null Токен следующей страницы
|
||||
*/
|
||||
private $nextCursor;
|
||||
|
||||
/**
|
||||
* Конструктор, устанавливает свойства объекта из пришедшего из API ассоциативного массива
|
||||
* @param array $options Массив настроек, пришедший от API
|
||||
*/
|
||||
public function __construct(array $options)
|
||||
{
|
||||
$this->items = array();
|
||||
foreach ($options['items'] as $item) {
|
||||
$this->items[] = new RefundResponse($item);
|
||||
}
|
||||
if (!empty($options['next_cursor'])) {
|
||||
$this->nextCursor = $options['next_cursor'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает список возвратов
|
||||
* @return RefundInterface[] Список возвратов
|
||||
*/
|
||||
public function getItems()
|
||||
{
|
||||
return $this->items;
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает токен следующей страницы, если он задан, или null
|
||||
* @return string|null Токен следующей страницы
|
||||
*/
|
||||
public function getNextCursor()
|
||||
{
|
||||
return $this->nextCursor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет имееотся ли в ответе токен следующей страницы
|
||||
* @return bool True если токен следующей страницы есть, false если нет
|
||||
*/
|
||||
public function hasNextCursor()
|
||||
{
|
||||
return $this->nextCursor !== null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
/**
|
||||
* The MIT License
|
||||
*
|
||||
* Copyright (c) 2020 "YooMoney", NBСO LLC
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
namespace YooKassa\Request\Webhook;
|
||||
|
||||
use YooKassa\Model\Webhook\Webhook;
|
||||
|
||||
class WebhookListResponse
|
||||
{
|
||||
private $type;
|
||||
|
||||
/**
|
||||
* Список способов оплаты подходящих для оплаты заказа
|
||||
* Если нет ни одного доступного способа оплаты, список будет пустым
|
||||
* @var Webhook[] Список способов оплаты
|
||||
*/
|
||||
private $items;
|
||||
|
||||
/**
|
||||
* Конструктор, устанавливает список полученныз от API способов оплаты
|
||||
*
|
||||
* @param array $response Разобранный ответ от API в виде массива
|
||||
*/
|
||||
public function __construct($response)
|
||||
{
|
||||
if (!empty($response['type'])) {
|
||||
$this->type = $response['type'];
|
||||
}
|
||||
$this->items = array();
|
||||
foreach ($response['items'] as $item) {
|
||||
$this->items[] = new Webhook($item);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возаращает список способов оплаты подходящих для оплаты заказа
|
||||
* Если нет ни одного доступного способа оплаты, список будет пустым
|
||||
* @return Webhook[] Список способов оплаты
|
||||
*/
|
||||
public function getItems()
|
||||
{
|
||||
return $this->items;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user