Magento – Magento 2 – Duplicate Order Issue

checkoutmagento2orderspayment-methods

I am currently running a magento 2 website (ver. 2.2.6). I have been an issue (pretty frequently) where some customers (not all) are reporting that they are commonly receiving an error upon attempting to submit an order. The error that they receive is:

sort order field isnull(expiration_date), expiration_date, transaction_id contains restricted symbols

The customer(s) report that this error appears when they click on submit order, and the website never goes to the checkout success page. Therefore the customer thinks that the website did not receive their order. They then proceed to click on submit order multiple times, subsequently placing multiple orders. I catch these with the payment alerts or the customer sends an email reporting that they just placed 8 orders by mistake. Commonly, the customer reports being on a mobile device, and this happens with both paypal and/or credit card (Stripe processing).

I have also been advised that sometimes they do not get this error, but the site just looks like it does nothing and remains on the checkout page when they click on submit order, also subsequently placing multiple orders.

When I go to the backend of the site, I do see an order placed that matches the payment obtained from the customer, through the payment processor. The problem is, I can not re-create this issue myself so it has been extremely difficult to trouble shoot. As I have paid 2 separate developers to try and resolve this, with no success.

I am looking for some help with this issue, as it is causing many issues, and upsetting many customers. Thanks! Below is an image of the error, provided by a customer.
enter image description here

Best Answer

You should be using Aheadworks_RewardPoints module.

Go to the file /app/code/Aheadworks/RewardPoints/Model/Service/CustomerRewardPointsService.php.

Search for the method private function getCustomerTransactions.

Change ->setField('ISNULL(expiration_date), expiration_date, transaction_id') line

to ->setField('expiration_date').

Related Topic