cancel
Showing results for 
Search instead for 
Did you mean: 

Create an Android Pay Transaction api returns error 153

When using the live console and the provided sample encrypted nonce we get error 153 (unable to decrypt data). This happens in both live and test mode(using the sandbox account). This is the exact same error we get when we attempt to pass in our own encrypted token. Any help will be much appreciated.

 

maryrAuthNet
Member
8 REPLIES 8

Has anybody out there gotten this API to work?

maryrAuthNet
Member
Did you get your key from google? I think you have to get your key through their API.

Hi @Renaissance 

Thanks for your response. Do you mean the public key that needs to be generated in the admin panel? In this case, yes. I have followed these steps to obtain the public Key

To generate an Android Pay public key:

Step 1. Log in to the Merchant Interface.

Step 2. Navigate to Account > Digital Payment Solutions > Android Pay.

Step 3. In the Manage Your Android Pay Keys section, click Generate Public Key.

Step 4. After the key generates, you can download it as a text file by clicking Download.

 

This is well documented at https://developer.authorize.net/api/reference/features/in-app.html

 

The api live console is giving that error when I use my sandbox account in both live and test mode. Have you been able to make it to work?

Thanks again

I have no use for that product at the moment but yes, I could get it to work if I wanted to, if the past is any indicator. There are a few extra steps for Android. They are referenced in that link and start with text like this-

GOOGLE-SPECIFIC INTEGRATION STEPS
Before submitting an Android Pay transaction using the Authorize.Net API, follow these steps to integrate Google's Android Pay SDK. For the most part, it is the same as Google's Android Pay integration tutorial. However, there are a few differences, explained below.

Step 1. When you request a token, follow the instructions to request a "network token".

Step 2. The token can be retrieved as a JSON string by using:

You have to scroll down. But it looks like you have to get your key from google, which would explain why the data cannot be decrypted. You are not passing the appropriate key to be used for decryption.

@RichardH could you or another admin notify someone that the link to google on the android section of the mobile app sdk needs updated? I just clicked it and it no longer has instructions.

@Renaissance

Thank you so much for taking care of this issue. I implemented that part as well and I used the public key hash I got in the generated Certificate, this file looks like this:

[

KeyID: maryrAuthNet23

PublicKey: my_public_key

PublicKeyHash: my_public_key_hash

CreateTimeUTC: 2018-12-03T15:13:52.76

]

I have to mention I am not actually using Android Pay, as you mention, the link provided is not working, and I found Google has a new version called Google Pay. I used the documentation at https://developers.google.com/pay/api/web/guides/tutorial and the DIRECT method in this section https://developers.google.com/pay/api/web/guides/tutorial#tokenization because Authorize.Net was not in the list of supported gateways. I received a token by Google and I followed the steps to encrypt the data and send the resulting nonce to the api(using the public key hash). Hope this helps to understand my problem. Thanks

@maryrAuthNet

I think your issue is the commingling of encryption methods. I think what you need to do is install the authorize.net android sdk, build your files using its dependencies, and call for the payment data inside your application. Looking at this a little more, the sample code and text for those additional steps I referenced are not actually asking you to get anything directly from google in the manner you are.

I think you would just use the code on that API reference page. The “similar to google” just means that it works kind of like googles method. Not telling you to go anywhere else.

@Renaissance  Thanks again, you are really taking care of it, and I deeply appreciate it.

About your idea of using the authorize.net android sdk(the Accept Mobile SDK) is that I am in a Xamarin project and I couldn't find a similar. Instead, I am using the Google's native SDK. If you see in the documentation https://developer.authorize.net/api/reference/features/in-app.html when the process is explained, the Step 1 can either be by using the Accept Mobile SDK or directly using Apple or Google's native SDK. We decided to use the second option in this first step.

 

 

Step 1.

The Accept Mobile SDK sends payment and authentication information to Authorize.Net, which returns a payment nonce.

Apple Pay and Android Pay: Send a request using Apple or Google's native SDK to retrieve an encrypted BLOB (Binary Large Object), which identifies the customer's payment information.

 

 

We didn't find any documentation for integrating Android Pay and we used Google Pay, that seems to be an upgrade. If you go to the documentation

https://developers.google.com/pay/api/android/guides/tutorial#tokenization

In this section there are two methods, but given the fact that Authorize.net is not listed in the supported payment gateways we used the DIRECT method, but perhaps this is what is causing the fail. Could you please provide a link to Android Pay integration, I could integrate it instead of keeping trying Google Pay. Thank you!!

 

 

 

https://github.com/AuthorizeNet/accept-sdk-android

I think this may be a much better option. I see what you are saying about native SDKs and google pay. It looks like google pay may have PCI implications.

And you are welcome. Today has been a waste for me bc I’ve been fighting with shady web biz people all day. Glad that I have accomplished something for someone. This scuffle today has put me behind where I wanted to be on a project, so I may have to abandon the forum for a few days. I’ll be looking for your results when I get back on. I’ll drop you one more post with what I find out about GP and PCI scope. You’ve got me curious.