WooCommerce Checkout Maintenance & Troubleshooting

Job ID: 40127061

Budget: £250 – £750 GBP

Summary:

We need an experienced and skilled WooCommerce+WordPress developer who can help us with some troubleshooting and maintenance on a custom checkout system developed on one of our client sites.

The checkout was built by someone who is no longer available, so the chosen developer will need the ability to identify and map out the code being used for themselves, though we will offer any insight and assistance we can.

The custom checkout works like so:

Step 0:
The customer selects a trip they would like to embark on from the site’s catalogue of tours and treks. On each tour page, there is an array of dates the user can select from, each added as individual Woocommerce products.

When a date is selected via the “Book Now” button, the WooCommerce product is added to the cart and the user is taken to the custom-built multi-step checkout.

Step 1:
In the first step of the checkout process, the user can add their name, contact details, address details, etc. If logged in, a password is added to create a profile where all this information is stored and automatically populated on future purchases.

Also on this step, you can add additional travellers and their details. The minimum deposit for a trip is £200 per person, so for each additional traveller added, the minimum deposit increases by £200.

Step 2:
Once all traveller details are added, you’re taken to the second step in the checkout process. Here, you’re presented with Accommodation, Equipment Rental, and Supplemental products from the WooCommerce products which can be added to your trip.

Custom Meta Fields are available in WooCommerce which allow you to select trips that are relevant to each product, these meta fields are then used to display relevant products for sale in this second step. A category system is used to determine whether a product is Accommodation, Equipment Rental or Supplemental.

Added Trip Extras do not affect the minimum deposit.

Step 3:
Here is where things get a bit tricky. In Step 3, we take payment from the user via Stripe.
There are 3 currency options; GBP, USD, and EUR. Your order total is converted into your selected currency, but the minimum deposit remains the same (£200/$200/€200 per person).

There are 3 payment options; Pay Minimum Deposit (charges the user their minimum deposit), Pay Later (processes the order without taking payment), Pay a Custom Amount (allows the user to pay a custom amount between the minimum deposit and the basket total).
Payment is then taken via Stripe.

Step 4:
The user is taken to the booking confirmation page, customised invoices are generated, and custom emails are sent to both the customer and the site admins.

The user has an account area where they can manage their orders by making additional payments towards their total (again, via stripe). This updates the invoices, order history, and emails accordingly.

Essentially, everything mentioned above works correctly most of the time. The one issue we’re having is that payments are inconsistent. Sometimes, they go through fine and everything gets updated in the back-end as it should. Invoices are sent out, payments are taken, and the money reaches the client’s bank account from the customer’s.

However, for reasons we cannot determine, sometimes this doesn’t work. There is no consistency as to what does or doesn’t work, either. Sometimes an invoice is generated, and the payment goes through fine, but the order history isn’t updated appropriately. Sometimes the order history is updated, but no payment is actually processed.
It seems there’s some work that needs to be put into making the payment system consistent, adding failsafes, proper debug logging, and ensuring that order processing is done consistently and securely with no room for error.

We also noticed that when the user is taken to bank verification and then brought back to the checkout, it doesn’t proceed automatically, they have to click “Place Order” again, which could be a source of issues/confusion. We would like this to be addressed as part of the work.

As it is now a busy time for the client, they are seeing more and more payment errors and there is an urgent need for this work to be completed to a high standard.

There are also various features and upgrades the client would like to make once the payment system is working consistently and with stability, so there will be opportunity for future projects and ongoing work on this site moving forward for the developer who is able to successfully improve the payment system.

You will be given full admin access to the site and a brief breakdown of where the code for the payment system lives once accepted for the task, but as it is a live site, we would ask that you create a development clone of the site where you’re able to test changes before pushing them live.