logo
Welcome to our new AbleCommerce forums. As a guest, you may view the information here. To post to this forum, you must have a registered account with us, either as a new user evaluating AbleCommerce or an existing user of the application. For all questions related to the older version of Gold and earlier, please go to AbleCommerce Gold forum. Please use your AbleCommerce username and password to Login. New Registrations are disabled.

Notification

Icon
Error

Options
Go to last post Go to first unread
pdsteiner8198692  
#1 Posted : Friday, May 31, 2024 2:31:24 AM(UTC)
pdsteiner8198692

Rank: Member

Groups: Authorized User, HelpDesk
Joined: 12/30/2020(UTC)
Posts: 13

We just installed AbleCommerce version 9.0.10.8121 and tested the order placement. We usually do our payments manually, so we went to the Payments tab of the order, click Authorize and then Capture, but nothing shows up, just the scrollbar line at the top. In the error logs I see this error:

An error has occurred at View less
Exception: Object reference not set to an instance of an object. Stack Trace: at AbleCommerce.Code.CheckoutHelper.IsSquarePayment(Payment payment) in AbleCommerce\Source Code\AbleCommerce-9.0.10-b8121-WAP\Website\Code\CheckoutHelper.cs:line 85 at AbleCommerce.Areas.Admin.Controllers.OrdersController.CapturePayment(Int32 paymentId) in \AbleCommerce-9.0.10-b8121-WAP\Website\Areas\Admin\Controllers\OrdersController.cs:line 5671 at lambda_method(Closure , ControllerBase , Object[] ) at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c.<BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult asyncResult, ActionInvocation innerInvokeState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End() at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_0.<InvokeActionMethodFilterAsynchronouslyRecursive>b__0() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass11_2.<InvokeActionMethodFilterAsynchronouslyRecursive>b__2() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass7_0.<BeginInvokeActionMethodWithFilters>b__1(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End() at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_6.<BeginInvokeAction>b__4() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End() at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) at System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End() at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Controller.<>c.<BeginExecute>b__151_2(IAsyncResult asyncResult, Controller controller) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End() at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) at System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End() at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Edited by user Friday, May 31, 2024 1:01:42 PM(UTC)  | Reason: Not specified

Wanna join the discussion?! Login to your AbleCommerce Forums forum account. New Registrations are disabled.

Katie S  
#2 Posted : Friday, May 31, 2024 10:53:40 AM(UTC)
Katie S

Rank: Advanced Member

Groups: System, Administrators, Developers, Registered, HelpDesk
Joined: 10/29/2018(UTC)
Posts: 472

Thanks: 4 times
Was thanked: 34 time(s) in 33 post(s)
Hi there,

What do you have configured for a payment gateway? It looks like Square? Do you have it configured according to the documentation:

https://help.ablecommerc...ys%2FSquare_Payments.htm

Typically, the Authorization takes place in one of 4 places:

1) During checkout, on the payments page
2) From the order payments page, using the Add Payment button and then adding the details for a credit card.
3) From the admin, where you place a new order on behalf of a customer.
4) From the retail side, where the customer can make a payment on an unpaid order.

Once there is an authorization, then you can capture the funds from the location you were testing.

If this has not been helpful, please explain exactly the steps you are taking so I can try to reproduce the error.



Thanks for your support!

Katie
Secure eCommerce Software and Hosting
pdsteiner8198692  
#3 Posted : Friday, May 31, 2024 11:12:40 AM(UTC)
pdsteiner8198692

Rank: Member

Groups: Authorized User, HelpDesk
Joined: 12/30/2020(UTC)
Posts: 13

No payments gateway, as payment methods we have Visa, MasterCard, Discovery. We process the payments manually. My steps to reproduce it are as follows:

1. Click the link to view the order from dashboard
2. Click Payments tab
3. Click Authorize button (an entry is created in the transaction history)
4. Click Capture button, nothing happens, in version 9.0.7 it displays a capture dialog box (probably bootstrap dialog)

Screenshot 2024-05-31 at 19.08.24.png (37kb) downloaded 5 time(s). Screenshot 2024-05-31 at 19.07.47.png (62kb) downloaded 4 time(s).

Edited by user Friday, May 31, 2024 11:17:57 AM(UTC)  | Reason: Not specified

Katie S  
#4 Posted : Friday, May 31, 2024 11:17:26 AM(UTC)
Katie S

Rank: Advanced Member

Groups: System, Administrators, Developers, Registered, HelpDesk
Joined: 10/29/2018(UTC)
Posts: 472

Thanks: 4 times
Was thanked: 34 time(s) in 33 post(s)
Hi,

The Authorize button should probably be hidden. It's not possible to authorize without a payment gateway installed.

Who do you process payments manually through?
Thanks for your support!

Katie
Secure eCommerce Software and Hosting
pdsteiner8198692  
#5 Posted : Friday, May 31, 2024 11:21:08 AM(UTC)
pdsteiner8198692

Rank: Member

Groups: Authorized User, HelpDesk
Joined: 12/30/2020(UTC)
Posts: 13

It's through a different site. Right now, we're in the testing mode and I placed on order with a "dummy" credit card number, Visa 4111111111111111 or one that ends in 4242.

Screenshot 2024-05-31 at 19.23.27.png (77kb) downloaded 8 time(s).

Edited by user Friday, May 31, 2024 11:25:13 AM(UTC)  | Reason: Not specified

Katie S  
#6 Posted : Friday, May 31, 2024 12:08:23 PM(UTC)
Katie S

Rank: Advanced Member

Groups: System, Administrators, Developers, Registered, HelpDesk
Joined: 10/29/2018(UTC)
Posts: 472

Thanks: 4 times
Was thanked: 34 time(s) in 33 post(s)
Hi,

I'm not sure what your goals are, but if you are just looking to test, then you can install the AbleCommerce Test Gateway plugin.

Here is a link to the merchant guide which has installation and configuration instructions:

https://help.ablecommerc...ys/AbleCommerce_Test.htm

I just tried to test the 'Authorize' button with no payment gateway installed, and it did not generate any errors. It shows what you have on your last screenshot. (Manual Authorization Successful)

I asked about the payment service you use offsite because I wanted to see if we supported that as one of our built-in gateways.

Let me know if you have any questions.


Thanks for your support!

Katie
Secure eCommerce Software and Hosting
pdsteiner8198692  
#7 Posted : Friday, May 31, 2024 12:12:25 PM(UTC)
pdsteiner8198692

Rank: Member

Groups: Authorized User, HelpDesk
Joined: 12/30/2020(UTC)
Posts: 13

It's the 'Capture' button causing the problem not 'Authorize'. With version 9.0.7 we haven't had any issues with our configuration (no payment gateways). We've been using this configuration for years since version 7.0.7. With the steps I outlined, can you reproduce it on your side?

Edited by user Friday, May 31, 2024 12:28:23 PM(UTC)  | Reason: Not specified

Katie S  
#8 Posted : Friday, May 31, 2024 12:34:48 PM(UTC)
Katie S

Rank: Advanced Member

Groups: System, Administrators, Developers, Registered, HelpDesk
Joined: 10/29/2018(UTC)
Posts: 472

Thanks: 4 times
Was thanked: 34 time(s) in 33 post(s)
Ok. I see the issue, but I'm not fully understanding why you go through a manual authorize and capture process without a payment gateway installed. Technically, these buttons should not even appear because they are features for a payment gateway.

I'll report the issue, but my guess is that we will do a proper fix.

I'd like to suggest that you try a different approach for taking payments offsite.

From the main Order summary page, there is a button "Receive Payment".

2024-05-31_10-23-22.png (28kb) downloaded 0 time(s).

This will actually save a step as you can enter a note about the transaction (optional) and the order shows Paid in Full (Payment Processed) as soon as you submit.

2024-05-31_10-32-48.png (29kb) downloaded 0 time(s).

The end result is the same, but you have 1 step instead of 2.





Thanks for your support!

Katie
Secure eCommerce Software and Hosting
pdsteiner8198692  
#9 Posted : Friday, May 31, 2024 12:43:49 PM(UTC)
pdsteiner8198692

Rank: Member

Groups: Authorized User, HelpDesk
Joined: 12/30/2020(UTC)
Posts: 13

Well, if there are no changes to the order I can use “Receive Payment”. If I make a change then I Authorize (which is the original amount) and then Capture the new amount. We do have some orders where the amount is changed from the original; so the 'Capture' button is used after the payment is authorised. So we need a functional 'Capture' button for our store configuration (manual order processing, no payment gateways needed due to low volume of sales).

Edited by user Friday, May 31, 2024 12:48:55 PM(UTC)  | Reason: Not specified

Katie S  
#10 Posted : Friday, May 31, 2024 1:05:37 PM(UTC)
Katie S

Rank: Advanced Member

Groups: System, Administrators, Developers, Registered, HelpDesk
Joined: 10/29/2018(UTC)
Posts: 472

Thanks: 4 times
Was thanked: 34 time(s) in 33 post(s)
Please use the feature to record an offline payment.

2024-05-31_11-03-01.png (44kb) downloaded 1 time(s).

Any changes to the order will be reflected in the Amount field.

Change the Status to Completed and it's done.

Again, the Authorize and Capture buttons are features specifically intended to work with a payment gateway.
Thanks for your support!

Katie
Secure eCommerce Software and Hosting
pdsteiner8198692  
#11 Posted : Friday, May 31, 2024 1:24:24 PM(UTC)
pdsteiner8198692

Rank: Member

Groups: Authorized User, HelpDesk
Joined: 12/30/2020(UTC)
Posts: 13

We'll do that and see if it works for version 9.0.10. But back to the capture issue, you guys need to fix it, an error has been logged into the logs, it requires attention because there isn't any problem whatsoever in the earlier version 9.0.7. I understand your point and e-commerce stores need to use a payment gateway, but there are out there some like us with small volume of sales, trying to minimize the transaction fees.

Edited by user Friday, May 31, 2024 1:25:33 PM(UTC)  | Reason: Not specified

Katie S  
#12 Posted : Friday, May 31, 2024 1:56:34 PM(UTC)
Katie S

Rank: Advanced Member

Groups: System, Administrators, Developers, Registered, HelpDesk
Joined: 10/29/2018(UTC)
Posts: 472

Thanks: 4 times
Was thanked: 34 time(s) in 33 post(s)
I reported the issue since it was introduced in 9.0.10 with the new Square payments feature.

For reference, the issue ID is 2267

Thanks for letting us know, and I'm glad we found a workaround for you.
Thanks for your support!

Katie
Secure eCommerce Software and Hosting
pdsteiner8198692  
#13 Posted : Friday, May 31, 2024 2:27:22 PM(UTC)
pdsteiner8198692

Rank: Member

Groups: Authorized User, HelpDesk
Joined: 12/30/2020(UTC)
Posts: 13

Katie, thank you for your help.
Katie S  
#14 Posted : Friday, May 31, 2024 10:48:30 PM(UTC)
Katie S

Rank: Advanced Member

Groups: System, Administrators, Developers, Registered, HelpDesk
Joined: 10/29/2018(UTC)
Posts: 472

Thanks: 4 times
Was thanked: 34 time(s) in 33 post(s)
Absolutely here to help! Thanks for letting us know of the error.
Thanks for your support!

Katie
Secure eCommerce Software and Hosting
nadeem  
#15 Posted : Monday, June 10, 2024 3:30:15 AM(UTC)
nadeem

Rank: Advanced Member

Groups: Administrators, Developers, Registered, HelpDesk, Authorized User, Admin, System
Joined: 10/11/2018(UTC)
Posts: 110

Thanks: 19 times
Was thanked: 18 time(s) in 18 post(s)
Hi,

Here is the simple fix if you want to apply to your website.

Open the Website/Code/CheckoutHelper.cs file,

Find the following line of code inside IsSquarePayment function around line#84

Code:
if (payment.PaymentMethod != null)


and replace with

Code:
if (payment.PaymentMethod != null && payment.PaymentMethod.PaymentGateway != null)


Hope this helps!

Edited by user Monday, June 10, 2024 4:53:05 AM(UTC)  | Reason: Not specified

Users browsing this topic
Guest (11)
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.