namespace app\controllers;
+use JsonException;
use Yii;
use yii\filters\AccessControl;
use yii\helpers\Json;
$orderId = $data['orderId'];
$returnId = $data['returnId'];
- $orderReturnData = MarketplaceService::fetchReturn($campaignId, $orderId, $returnId);
- $rawReturnData = $orderReturnData['rawReturnData'];
- $returnedAt = $orderReturnData['returnedAt'];
+ $isTest = !empty($data['test']);
+ if ($isTest) {
+ $testDataObj = $data['test'];
+ if (!isset($testDataObj['result']['creationDate'])) {
+ Yii::$app->response->statusCode = 400;
+ return $this->asJson([
+ 'error' => [
+ 'type' => 'WRONG_EVENT_FORMAT',
+ 'message' => "Тестовые данные не содержат обязательное поле result.creationDate"
+ ]
+ ]);
+ }
+ $returnedAt = date('Y-m-d H:i:s', strtotime($testDataObj['result']['creationDate']));
+ $rawReturnData = json_encode($data['test'], JSON_UNESCAPED_UNICODE);
+ } else {
+ try {
+ $orderReturnData = MarketplaceService::fetchReturn($campaignId, $orderId, $returnId);
+ $rawReturnData = $orderReturnData['rawReturnData'];
+ $returnedAt = $orderReturnData['returnedAt'];
+ } catch (\Exception $e) {
+ Yii::$app->response->statusCode = 400;
+ return $this->asJson([
+ 'error' => [
+ 'type' => 'WRONG_EVENT_FORMAT',
+ 'message' => "Ошибка получения данных возврата: " . $e->getMessage()
+ ]
+ ]);
+ }
+ }
$orderData = MarketplaceService::fetchOrder($campaignId, $orderId);
if (empty($orderData)) {
return $this->asJson([
'error' => [
'type' => 'UNKNOWN',
- 'message' => 'Ошибка сохранения данных возврата в заказе'
+ 'message' => 'Ошибка сохранения данных возврата в заказе' . json_encode($order->getErrors(), JSON_UNESCAPED_UNICODE)
]
]);
}
- return $this->asJson([
+ $response = [
'version' => '1.0.0',
'name' => 'БазаЦветов24',
'timestamp' => date('Y-m-d H:i:s'),
'message' => "ORDER_RETURN_CREATED событие обработано успешно",
'result' => [
- 'returned_at' => $order->returned_at,
- 'return_data' => $order->return_data
+ 'returned_at' => $order->returned_at ?? null,
+ 'return_data' => $order->return_data ?? null
]
- ]);
+ ];
+ if ($isTest) {
+ $response['test'] = true;
+ $response['testData'] = $data['test'];
+ }
+ return $this->asJson($response);
default:
Yii::info("Неизвестный тип события: {$eventType}");
[['status_1c'], 'default', 'value' => 1],
[['marketplace_order_id', 'status_id', 'substatus_id', 'creation_date', 'updated_at', 'total', 'delivery_total', 'buyer_total_before_discount', 'tax_system', 'payment_type', 'payment_method'], 'required'],
[['store_id', 'status_id', 'substatus_id', 'fake', 'cancel_requested', 'status_1c'], 'default', 'value' => null],
+ [[ 'fake'], 'default', 'value' => 0],
[['store_id', 'status_id', 'substatus_id', 'fake', 'cancel_requested', 'status_1c'], 'integer'],
[['creation_date', 'updated_at', 'returned_at'], 'safe'],
[['return_data', 'raw_data'], 'string'],