The past year I have been working a lot with EPiServer in a number of different ways, ranging from creating integration packages, to simply adding additional features for some specific customer requirements. However, out of everything the most troubling was when I was trying to add PayEx integration.
About a month ago my client asked for me to add
PayEx integration to an existing project they had, and they were all very skeptical of doing this as it took some people months to do, whilst others managed it in a number of weeks. The biggest concern is that there was no standard amount of time to add this feature, and unfortunately all the people who had done this previously were contractors who had since moved on to new clients and were not available to explain everything they had done. So the challenge was set upon me to add this feature, but lucky for me, Karoline Klever had written and published an OpenSource PayEx library for EPiServer!
Unfortunately the documentation for the library relied on you using the standard workflows in EPiServer to get everything done, but my client’s project was doing their own bespoke methods for almost everything. In a later blog post I will cover a step by step guide to help others in the future with this, but in this post we will be covering a certain difficulty I had faced with
ExtendedPrice on the
LineItem object you are free to add whatever you want into the
ExtendedPrice field, there is no standard of what is the correct thing to put in there, but the most common thing that people put in there is the total price for that specific line item, taking into account all discounts for quantity, and any other promotions that may be going on. The one thing that most people do NOT keep consistant however is if this should include or exclude VAT. Now I had no idea about this when I had originally started working on the project, I had assumed that everything would be calculated at the point of time that it was needed. None the less, after I got
PayEx up and running, taking payment from the checkout process was extremely simple, but after you are redirected back to the checkout, you need to call a
PayEx and find out if the payment was successful, and if so, complete the order process for that shopping cart. Each time I queried, I was given the error
AmountNotEqualOrderLinesTotal. I checked the amount, I added up the totals, and everything seemed correct to me, I had no idea what was going on. After a little digging around, I eventually found that the English on the payment process of
PayEx was what was causing the problem. They are a Norwegian company, and they do speak great English up there, but unfortunately they made a big mistake here.
Where it says
Including VAT, it should be saying
Of which is VAT. Basically, the amount in the
Price column should be the product total including VAT whilst the column to the right should be how much VAT is included in that. The total of the
Price column needs to match the
Amount at the top left. If this does not match, the transaction will fail with the
AmountNotEqualOrderLinesTotal error! After knowing this, I then discovered that my client was storing the total value excluding VAT inside of the
ExtendedPrice field. I had to make a quick hack NuGet Package to solve this, which I plan on marking as
invalid once I send a pull request to
PayEx with a better fix to allow for both
Excluding VAT options to their library.