Я использую Magento 2.2, у которого есть задание cron для обработки успешного заказа на другом сервере, на котором я отправляю запрос POST
на второй сервер и должен получить обратно {"orderId":"1234","isSuccess":true}
.Главный сервер помечает указанный порядок в БД во вновь созданном столбце (sent
) как true
.
Однако это не так.Иногда получение успешного ответа не помечает мою БД.Иногда это так.Мое состояние после получения ответа таково:
if ($this->verifySendSuccess($response, $order)) {
$orderCollectionFactory = $this->orderCollectionFactory->create();
$connection = $orderCollectionFactory->getConnection();
$connection->update(
$orderCollectionFactory->getMainTable(),
[self::ORDER_SENT_COL => true],
[self::ORDER_INCREMENT_ID_COL . ' = ?' => $order->getIncrementId()]
);
}
......
private function verifySendSuccess($response, \Magento\Sales\Model\Order $order)
{
$orderValid = isset($response['orderId']) && $response['orderId'] == $order->getIncrementId();
return $orderValid && isset($response['isSuccess']);
}
FYI - БД будет печататься в БД независимо от того, какое значение isSuccess
возвращается как.