If you get a transaction ID of zero, it means either 1) your sandbox is set to test mode, or 2) test mode is set to true in the request. When testing in the sandbox, it should be set to live mode and you should NOT set test mode to true. This may be something controlled by the module you are using.
When test mode is true, the gateway will only validate that the credentials are correct and return success. However, it does not actually attempt a transaction and nothing is stored at the gateway, hence the transaction id of zero.
Upon setting the sandbox account to test or live mode the transactions still go through as approved. Also if I set the Chronoforms component to live mode, it give me an error about invalid login and trans key upon submitting the webform page. If I set the mode back to test, the webform can be submitted and is approved whether the Authorize Sandbox is in test or live mode.
Upon looking at the source of the Chronoforms component, setting the mode to test or live only switches reference to a different url. I'm assuming for authentication.
Test mode uses this url: https://test.authorize.net/gateway/transact.dll
Live mode uses this url: https://secure.authorize.net/gateway/transact.dll
I suggest confirming that your sandbox is running in live mode. The next option is to examine the actual request being sent to the gateway from chronoforms to determine if it's setting test mode as true in the request.
I have the sandbox running in live mode and also regenerated the Transaction key with the account in Live Mode. However still when I try to test with the 46282 zipcode to get declined transactions it still goes through as approved.
In the ChronoForms component if I change the setting to Live from Test mode I still get the error "
". If I set it back to Test mode in ChronoForms it goes through as approved.
It seems that the setting in Authorize.net sandbox has no affect. What is interesting about the Sandbox is I noticed that the receipt email's coming from authorize sandbox says TEST MODE in the email whether I set the Sandbox account to Test or Live. Also when the mode is set to Test in the Chronoforms component it adds this to the end of the request "x_test_request=TRUE&"
That last addition by Chronoforms is the culprit. They are correctly pointing to the sandbox endpoint, but they are incorrectly adding x_test_request=TRUE which is forcing the gateway to respond as though it was in test mode.
If they remove test request it will test properly.
Thank you! You must be right. I went ahead and modified the code to not append that on "x_test_request=TRUE" the url and BANG! I'm able to test declined transactions with the 46282 as the zipcode. So my working setup is Authorize.net Sandbox account in Live Mode with Transaction key generated after set to Live mode. ChronoForms set to Test mode. It is now working as expected and I'm seeing the transactions in the Sandbox account.
One more question however, do you know how to test a Held response?
If you want to simulate a HELD response, you must first go into the Sandbox Merchant interface and set an amount filter in the advanced fraud detection options. Set the amount filter to "Do not Auth but HOLD for review" and submit a transaction over the amount.
Thanks for the directions. Let me clarify how I found it by going to Tools > Fraud Detection Suite > Transaction Filters - Amount Filter. I created one and set it to Do not Authorize and Hold for Review. Now I'm able to test HELD Response successfully. Thanks for your help!
Is there a way to generate response code 3 errors? Specifically, the "try again in 5 minutes" error would be very helpful.
I see I can generate response code 3 in the legacy section, but changing the price of products changes the tests and sort of defeats the purpose.
Would really like the errors to be generated based on user input if possible.