Problems at checkout with Authorize.net


https://forum.kartris.com/Topic2346.aspx
Print Topic | Close Window

By stringerbell - Sun 8 Sep 2013
We've tried to configure the two available options for checking out with Authorize.net and we've had problem with both.

Our first approach was using AuthorizeNetAIM, but we got the following error thrown by Kartris:



-----------------------------------------------------------------------------
>> Version:2.5003
>> URL:https://www.ourdomain.com/Checkout.aspx
>> Page:
-----------------------------------------------------------------------------
>> 9/7/2013 9:28:58 PM
>> XX.XX.XX.XX
>> DESCRIPTION:
System.MissingMethodException: Method not found: 'Int64 CreditCard.get_CardNumber()'.
at Kartris.AuthorizeNetAIM.ValidateCardOrder(String xmlOrder, String strBasketXML)
at _Checkout.btnProceed_Click(Object sender, EventArgs e) in C:\projects\shop\checkout.aspx.vb:line 1549
at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


We can't find a way to fix this because it's being generated from inside the plugin AuthorizeNetAIM.dll and we don't have access to the source.

Is there any way to gain access to the Plugins' source code?



Next, our second approach was using AuthorizeNetSIM and in this case we successfully get to the gateway, but when it gets to the Callback.aspx page it shows the following message:

------------------------------
An error occurred while trying to report this transaction to the merchant. An e-mail has been sent to the merchant informing them of the error. The following is the result of the attempt to charge your credit card.


This transaction has been approved.


It is advisable for you to contact the merchant to verify that you will receive the product or service.




------------------------------

However, when we check the error log, we find out the gateway gets to the Callback.aspx page but is unable to show nothing:

-----------------------------------------------------------------------------
>> Version:2.5003
>> URL:https://www.ourdomain.com/callback.aspx?g=authorizenetsim
>> Page:
-----------------------------------------------------------------------------
>> 9/7/2013 11:04:06 PM
>> XX.XX.XX.XX
>> DESCRIPTION:
Successful Callback Log (frontend.payment.debugmode.enabled=y):
FF: x_response_code=1&x_response_reason_code=1&x_response_reason_text=(TESTMODE)+This+transaction+has+been+approved.&x_avs_code=P&x_auth_code=000000&x_trans_id=0&x_method=CC&x_card_type=Visa&x_account_number=......(redacted)
QS: g=authorizenetsim


==================================================


In this second case we make sure everything is correctly setup at Authorize.net's side, but still can make it work on our side.

I found this article from Authorize.net that explains the problem and the possible solutions, but I wasn't able to successfully apply any of them to solve ours.

http://community.developer.authorize.net/t5/The-Authorize-Net-Developer-Blog/Relay-Response-Basics-and-Troubleshooting/ba-p/9536

Please help!!!!.

Thank you
By Medz - Sun 8 Sep 2013
Hi, can you confirm that you've completed the setup in Authorize.NET as describe in the Kartris User Guide (http://userguide.kartris.com/Default.aspx?headID=261)? Investigating the AuthorizeNetAIM issue you've reported. Will get back to you on that one shortly.
By stringerbell - Sun 8 Sep 2013
Thank you Medz for your quick response.

Yes, we completed the setup exactly as stated in Kartris User Guide, but still couldn't get it working.

However, because we really needed to use AuthorizeNetAIM instead of AuthorizeNetSIM, and because the source code for the plugins is not longer available, we were forced to decompile AuthorizeNetAIM.dll and build a new copy of it, but changing the calls to the object properties of objOrder, by removing the "get_" prefix in all of them.


Now instead of using, for example:
.....
dictionary2.Add("x_description", includes.AIMSafe(objOrder.get_Description()))
dictionary2.Add("x_invoice_num", Conversions.ToString(objOrder.get_ID()))
dictionary2.Add("x_cust_id", Conversions.ToString(objOrder.get_CustomerID()))
dictionary2.Add("x_phone", includes.AIMSafe(objOrder.Billing.get_Phone()))
dictionary2.Add("x_email", includes.AIMSafe(objOrder.get_CustomerEmail()))
.....

We get the properties as:
.....
dictionary2.Add("x_description", includes.AIMSafe(objOrder.Description()))
dictionary2.Add("x_invoice_num", Conversions.ToString(objOrder.ID()))
dictionary2.Add("x_cust_id", Conversions.ToString(objOrder.CustomerID()))
dictionary2.Add("x_phone", includes.AIMSafe(objOrder.Billing.Phone()))
dictionary2.Add("x_email", includes.AIMSafe(objOrder.CustomerEmail()))
.....

This resolved the problem and now we are back on track as planned. Also, by creating our own version of the plugin, we were able to include some other fields we needed to pass to the Authorize.net's gateway.


As a side note, do you have plans to create a type of product or process for handling periodical subscriptions?. We need to charge our customers for certain products in a monthly basis and so we need to develop such feature very soon. However, if you guys had plans for doing it would be great.


Thank you very much, you guys have made an impressive job with Kartris.


By Medz - Tue 10 Sep 2013
I can't seem to find any reference that includes the "get_" prefix in the original code. I'm not sure if it was just generated from your decompiler? Are you using a modified DLL decompiled from the stock one? Along with the source code, we're preparing an SDK for the payment plugins. Hopefully once released it'll make life a bit easier for other developers who want to tinker with the code.

Re: subcriptions -> We've talked about this when we were still planning the anonymous checkout implementation. We thought we can make it similar to downloadable products but with a start and an end period properties. Its certainly in the roadmap but I can't tell yet when it'll be implemented. At the moment we have our eyes set on other features such as the Web API, additional product sort/filter options in the frontend, etc.