cancel
Showing results for 
Search instead for 
Did you mean: 

Create ARB Subscription via Opaque Data (from Accept.js)

So our application is a website that is built on ASP.NET.


The front end is JavaScript and the back end is C#.

 

We are using Accept.js on the front end to create two nonce tokens (1 for the ARB sub, 1 for the 1 time transaction).  I realize this might not be the best way to do this with two separate transactions but it is what we have for now.  This was actually working yesterday until after around 5pm.  Then we started getting the E00114 Invalid OTS Token error message every time we tried to create the ARB sub.  The 1 time transaction would work just fine.

 

So we tried flipping the nonce values in case the one we were trying to use for the ARB sub was wrong but even after swapping them to use the other one the 1 time transaction worked but the ARB sub did not.  This validated that the nonce values appear to be working fine.  We talked to Authorize.net support and they informed us that the error message E00114 could also be returned if the data sent to create the ARB sub was not valid even if the token was valid.

 

Can anyone help me diagnose or validate the ARB create transaction we are sending to Authorize.net?  I have read some people reference the ability to capture the XML being sent to Authorize.net via the SDK but since I am using the nuget package (v1.9.1) I'm not sure how to turn this option on.

 

Any help would be greatly appreciated.

pmgower
Member
27 REPLIES 27

Re: logging

 

I don't know for a fact that the built in logging in the .NET SDK even does log the full request XML. I'm just assuming it does based on the way the other SDKs work. I know we need to improve the logging in .NET specifically, but if it's not even logging the request, it needs more improvement than I thought.

Hello @Aaron,

 

You describe setting up a customer profile as part of the transaction. When we did our initial development of Accept.js that was not a supported option. Has this changed recently? When I would send a request in like you describe it would either throw an unsupported error, or it would ignore the create customer flag.

 

No resolution to my ticket yet, but I will update this forum when I hear something from your support group.

 

Tim

And to clarify my detail about the same nonce value for both nonces, the ARB subscription nonce still comes back invalid regardless if the nonce values match. Don't want that to get lost in all the confusion :)

 

Tim

Thanks Tim, that was my understanding of your message. However, even if the ARB request was working correctly 100% of the time, it's never going to work for a nonce that has already been used.

steve074 wrote: 

You describe setting up a customer profile as part of the transaction. When we did our initial development of Accept.js that was not a supported option. Has this changed recently? When I would send a request in like you describe it would either throw an unsupported error, or it would ignore the create customer flag.

 


 

I don't know when that might have changed, but I tested it myself earlier just to verify that I wasn't misremembering things.

 

One problem is that in our API Reference, there's not a specific section on "Charge a Card Using An Accept Nonce AND Make A Profile At The Same Time." You'd have to look at the relevant fields for the profile creation on the "Charge a Credit Card" section, and couple those with the relevant fields for the nonce from the "Create an Accept Payment Transaction" section. Both of those describe uses of the createTransactionRequest API call, but neither of them are the full list of every parameter that can be sent with that call. Even when you find all of the parameters from the two sections, you still have to get them in correct order to match the schema that we're checking against. That's harder when we never show an example of a complete request to do the thing that you want to do.

 

So, without having experienced it myself, I can't tell whether it was really unsupported at one time, or if we just didn't have clear enough help for you to get a request formatted correctly. Either way, it definitely works now.

 

(Of course, I'll work on getting this documented more specfically.)

 

 

Hello @Aaron

 

I added the createCustomerProfile flag and set it to true. Against the sandbox, the transaction succeeds, but the profile creation does not. It returns error E00103, "Customer profile creation failed. This payment method does not support profile creation."

 

In other news, we did successfully add a three second band aid delay that allows the second nonce to work in production. I will leave our support ticket open until the real problem is fixed and I'll update this thread when it is.

 

Tim

New update regarding nonce values. We changed our call center payment page to include the 3 second timeout and ran a donation through. Unfortunately, even with three seconds the nonce values returned were identical. We increased the value to 10 seconds, got unique nonces, and the subscription was set up successfully.

 

So, I may have been incorrect about non-unique values still failing, and the timeout period needs to be longer than three seconds.

 

Tim

New update. We changed our timeout value to five seconds and still got the same nonce values. Our management has determined that any longer is too long for our donor experience, so we have removed our subscription functionality from production until this is resolved.

 

I am attempting to escalate my ticket to a production down status, but the link to managing existing tickets is returning an ERR_CONNECTION_RESET error.

 

This problem is now at a critical level and we would like an escalation.

 

Thank you,

 

Tim


@steve074 wrote:

 

I added the createCustomerProfile flag and set it to true. Against the sandbox, the transaction succeeds, but the profile creation does not. It returns error E00103, "Customer profile creation failed. This payment method does not support profile creation."

 


 

Nooooo! I tested it myself! I talked about with teammates yesterday, and we all agreed that it should work. I made up a quick test and tried it. It worked. So, I went ahead and posted it. Looking back over the logs of my test system, I realize now that I didn't save my modifications to my test script at the right time, and I was running transactions with regular <creditCard> elements.

 

An embarrassing mistake, and I deeply apologize for any time wasted.

 

I ran some more tests, and verified that a couple of other scenarios do work. For example:

  1. Get a nonce.
  2. Run the one-time transaction using that nonce in place of the creditCard data.
  3. Create a profile from that transaction.
  4. Create a subscription from that profile.

Or, alternatively:

  1. Get a nonce.
  2. Create a customer profile using that nonce in place of the creditCard data.
  3. Charge the customer profile for the one time transaction.
  4. Create a subscription from the profile.

Both of these are just one more API call than what I previously suggested. This second one isn't ideal, though, because you create the profile before you've seen whether the first transaction is good or not, so you'd end up with extra profiles for customers that aren't proceeding to the subscription phase.

 

This doesn't explain why I can create a profile directly using a nonce, but can't create it at transaction time with the createCustomerProfile flag. We've got to fix that, because clearly the system can handle it.


@steve074 wrote:

I am attempting to escalate my ticket to a production down status, but the link to managing existing tickets is returning an ERR_CONNECTION_RESET error.

 

This problem is now at a critical level and we would like an escalation.

 


I don't know what might be going on with the ticket management page. That's unfortunate. However, I reached out to the support specialist assigned to the case, and she's escalating it to the production team for investigation right now.