Magento – Magento 2 An error occurred on the server. Please try to place the order again

checkoutmagento-2.0sales-order

I know my question are like this

But in my case when I check errors I see this

Magento\Customer\Model\Customer\Interceptor::_getResource","trace":"#0 /backup/html/toph/vendor/magento/framework/Interception/Interceptor.php(146): Magento\Checkout\Model\PaymentInformationManagement->savePaymentInformationAndPlaceOrder(151, Object(Magento\Quote\Model\Quote\Payment), Object(Magento\Quote\Model\Quote\Address))\n#1 /backup/html/toph/var/generation/Magento/Checkout/Model/PaymentInformationManagement/Interceptor.php(26):

I remove var/generation and re compile my code and set permission to file but error does not fixed .

Best Answer

It is possible to display the real error by editing the model files based on the error ajax call

Edit the function savePaymentInformationAndPlaceOrder in

vendor/magento/module-checkout/Model/PaymentInformationManagement.php

or for Guest orders in

vendor/magento/module-checkout/Model/GuestPaymentInformationManagement.php

Change the function from:

public function savePaymentInformationAndPlaceOrder(
    $cartId,
    $email,
    \Magento\Quote\Api\Data\PaymentInterface $paymentMethod,
    \Magento\Quote\Api\Data\AddressInterface $billingAddress = null
) {
    $this->savePaymentInformation($cartId, $email, $paymentMethod, $billingAddress);
    try {
        $orderId = $this->cartManagement->placeOrder($cartId);
    } catch (\Exception $e) {
        throw new CouldNotSaveException(
            __('An error occurred on the server. Please try to place the order again.'),
            $e
        );
    }
    return $orderId;
}

to:

public function savePaymentInformationAndPlaceOrder(
    $cartId,
    $email,
    \Magento\Quote\Api\Data\PaymentInterface $paymentMethod,
    \Magento\Quote\Api\Data\AddressInterface $billingAddress = null
) {
    $this->savePaymentInformation($cartId, $email, $paymentMethod, $billingAddress);
    try {
        $orderId = $this->cartManagement->placeOrder($cartId);
    } catch (\Exception $e) {
        throw new CouldNotSaveException(
            __($e->getMessage()),
            $e
        );
    }
    return $orderId;
}

Now you get the actual error and you should find the full exception in the exception.log file

Thanks :)

Related Topic