To know the exact reason, update the following core file:
vendor/magento/module-checkout/Model/PaymentInformationManagement.php
Please comment out the try-catch same as below:
public function savePaymentInformationAndPlaceOrder(
$cartId,
\Magento\Quote\Api\Data\PaymentInterface $paymentMethod,
\Magento\Quote\Api\Data\AddressInterface $billingAddress = null
) {
$this->savePaymentInformation($cartId, $paymentMethod, $billingAddress);
// try {
$orderId = $this->cartManagement->placeOrder($cartId);
// } catch (\Magento\Framework\Exception\LocalizedException $e) {
// throw new CouldNotSaveException(
// __($e->getMessage()),
// $e
// );
// } catch (\Exception $e) {
// $this->getLogger()->critical($e);
// throw new CouldNotSaveException(
// __('A server error stopped your order from being placed. Please try to place your order again.'),
// $e
// );
// }
return $orderId;
}
Now, try to place order again. You will be able to see the detailed error in log file or may be in Browser > Inspect Element > Network.
Note: Please do not forget to revert the core file after updating the code.
Array to string conversion in /vendor/magento/framework/DB/Adapter/Pdo/Mysql.php on line
. You should find this in server log orvar/log/exception.log
.