Details
-
Type: Bug
-
Status: Done/Fixed
-
Priority: Minor
-
Resolution: Fixed/Completed
-
Affects Version/s: 4.5.4, 4.5.5
-
Fix Version/s: 4.6
-
Component/s: CiviContribute, CiviEvent
-
Labels:None
-
Documentation Required?:None
Description
Regenerate Requirement:
This issue occurs on a very specific case. From the "Find Participant" page's Participant listing, normally if the "View" link is clicked, the popup window will open with the participant details. If instead the "View" link is opened in a separate window/tab (by right clicking or copy pasting the URL), that is when this issue occurs. Also the payment has to be for the full amount that is due, not a partial payment.
Issue Description:
- In the Participant details page when there is balance due, click on the "Record Payment" button.
- Now click on "Submit Credit Card" payment for a live transaction.
- After filling up the full form for a full payment of the due amount and submitting, page shows success message "The payment record has been processed.".
- But immediately following it, an exception is thrown and the full processing does not happen with error message stack showing in console.
- From the error stack, the issue appears on CRM_Contribute_Form_AdditionalPayment::preProcess() line 129.
- The issue seems that the system is trying to reload the Additional Payment form when it should be closing and refreshing the underlying page.
- As there is no "amount_owed" amount or "refund_due", the form is throwing error when trying to load.
- This does not happen if the "Participant View" page is loaded in the popup, OR the additional payment form is loaded in a separate window/tab.
- This also does not happen for offline payment record entry and refund entry.
- Only live credit card payment submission is affected.
- I tested with Authorize.Net processor for this as that is what our client is using.
I have confirmed in the demo site that this issue is also present in the demo site's 4.5.6 version.
It seems this might be some state machine/controller issue where the assumption was that the participant view page would always be loaded in the popup.
I would be very grateful if anyone can point me in the right direction on how to resolve this as I need to patch this for our client. I am at a loss on how to track it as this requires a live transaction which means the operation must be performed on a server, rather than on my machine.