AuthorizeNet / sdk-java

Java SDK for Authorize.Net API
Other
48 stars 115 forks source link

ApplePay attempt: Unable to decrypt data. #209

Closed mboyersgwg closed 1 year ago

mboyersgwg commented 1 year ago

I work on an application that supports multiple merchants. For one of them, I am getting the following error when trying to process an ApplePay transaction:

There was an error processing the payment data. Unable to decrypt data.

Here is an example of the payload I'm sending:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<createTransactionRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
    <merchantAuthentication>
        <name>XXXREMOVEDXXX</name>
        <transactionKey>XXXREMOVEDXXX</transactionKey>
    </merchantAuthentication>
    <clientId>sdk-java-2.0.3</clientId>
    <transactionRequest>
        <transactionType>authCaptureTransaction</transactionType>
        <payment>
            <opaqueData>
                <dataDescriptor>COMMON.APPLE.INAPP.PAYMENT</dataDescriptor>
                <dataValue>eyJkYXRhIjoiYXhTZnVqTEpPOTYrRTB6aFUrRkI4MWxoWXdPVjJMd3VOS2tWTjd6ZVRDaVpEQVdNTTBObW81S3JMZC9PMW5JU3VhWG5KS0ZkbVJyRmh0U1d3S2NVb1NlVFVYSE9EalBRRWMzc29OVURaNmtyZ2g5YVN1akRwbmp1Vkh1M3lkQ0hyTGhmMUs0azEvcHZ3MEVDcjd4dlp1L0dvdWg0Z0VZYjNHSFZSV2VwbVVrU0M1OWJ0bjNGQWRFeUkwRGVEaG9PSlNMVVhaTEZjU1JqcVlGMnJPcjlveC9TUmRsd2xBZ1RicmZ6UldEV1BKM24vc29tUExrM05aNHAyZzJjRGJUdjk4VVlDUnFHZ0NjNVhSb3RhS29uc3VKSlBvak1IZUVGQXhNbHJldWRELzN4dnJYSVorTUVqZk10OG1SRHdlS01qUGo4a0hiNkx5eUkwOUtKWWpHU25PUUNvclVKeGJmTWNPYVl4LzFKdlVTS0JzQ2FGK3Mvd3VyS3pyUVZ1alFQOWRwVzZQVkhhUU1UQWN3L2p4dEVvQUFvYnlQamtVYTdoazl1VUx3Q01nPT0iLCJzaWduYXR1cmUiOiJNSUFHQ1NxR1NJYjNEUUVIQXFDQU1JQUNBUUV4RFRBTEJnbGdoa2dCWlFNRUFnRXdnQVlKS29aSWh2Y05BUWNCQUFDZ2dEQ0NBK013Z2dPSW9BTUNBUUlDQ0V3d1FVbFJuVlEyTUFvR0NDcUdTTTQ5QkFNQ01Ib3hMakFzQmdOVkJBTU1KVUZ3Y0d4bElFRndjR3hwWTJGMGFXOXVJRWx1ZEdWbmNtRjBhVzl1SUVOQklDMGdSek14SmpBa0JnTlZCQXNNSFVGd2NHeGxJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVNUXN3Q1FZRFZRUUdFd0pWVXpBZUZ3MHhPVEExTVRnd01UTXlOVGRhRncweU5EQTFNVFl3TVRNeU5UZGFNRjh4SlRBakJnTlZCQU1NSEdWall5MXpiWEF0WW5KdmEyVnlMWE5wWjI1ZlZVTTBMVkJTVDBReEZEQVNCZ05WQkFzTUMybFBVeUJUZVhOMFpXMXpNUk13RVFZRFZRUUtEQXBCY0hCc1pTQkpibU11TVFzd0NRWURWUVFHRXdKVlV6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJNSVZkKzNyMXNleUlZOW8zWENRb1NHTng3QzlieXdvUFlSZ2xkbEs5S1ZCRzROQ0R0Z1I4MEIrZ3pNZkhGVEQ5K3N5SU5hNjFkVHY5SktKaVQ1OER4T2pnZ0lSTUlJQ0RUQU1CZ05WSFJNQkFmOEVBakFBTUI4R0ExVWRJd1FZTUJhQUZDUHlTY1JQaytUdkorYkU5aWhzUDZLNy9TNUxNRVVHQ0NzR0FRVUZCd0VCQkRrd056QTFCZ2dyQmdFRkJRY3dBWVlwYUhSMGNEb3ZMMjlqYzNBdVlYQndiR1V1WTI5dEwyOWpjM0F3TkMxaGNIQnNaV0ZwWTJFek1ESXdnZ0VkQmdOVkhTQUVnZ0VVTUlJQkVEQ0NBUXdHQ1NxR1NJYjNZMlFGQVRDQi9qQ0J3d1lJS3dZQkJRVUhBZ0l3Z2JZTWdiTlNaV3hwWVc1alpTQnZiaUIwYUdseklHTmxjblJwWm1sallYUmxJR0o1SUdGdWVTQndZWEowZVNCaGMzTjFiV1Z6SUdGalkyVndkR0Z1WTJVZ2IyWWdkR2hsSUhSb1pXNGdZWEJ3YkdsallXSnNaU0J6ZEdGdVpHRnlaQ0IwWlhKdGN5QmhibVFnWTI5dVpHbDBhVzl1Y3lCdlppQjFjMlVzSUdObGNuUnBabWxqWVhSbElIQnZiR2xqZVNCaGJtUWdZMlZ5ZEdsbWFXTmhkR2x2YmlCd2NtRmpkR2xqWlNCemRHRjBaVzFsYm5SekxqQTJCZ2dyQmdFRkJRY0NBUllxYUhSMGNEb3ZMM2QzZHk1aGNIQnNaUzVqYjIwdlkyVnlkR2xtYVdOaGRHVmhkWFJvYjNKcGRIa3ZNRFFHQTFVZEh3UXRNQ3N3S2FBbm9DV0dJMmgwZEhBNkx5OWpjbXd1WVhCd2JHVXVZMjl0TDJGd2NHeGxZV2xqWVRNdVkzSnNNQjBHQTFVZERnUVdCQlNVVjl0djFYU0Job21KZGk5K1Y0VUg1NXRZSkRBT0JnTlZIUThCQWY4RUJBTUNCNEF3RHdZSktvWklodmRqWkFZZEJBSUZBREFLQmdncWhrak9QUVFEQWdOSkFEQkdBaUVBdmdsWEgrY2VIbk5iVmVXdnJMVEhMK3RFWHpBWVVpTEhKUkFDdGg2OWIxVUNJUURSaXpVS1hkYmRickYwWURXeEhyTE9oOCtqNXE5c3ZZT0FpUTNJTE4ycVl6Q0NBdTR3Z2dKMW9BTUNBUUlDQ0VsdEw3ODZtTnFYTUFvR0NDcUdTTTQ5QkFNQ01HY3hHekFaQmdOVkJBTU1Fa0Z3Y0d4bElGSnZiM1FnUTBFZ0xTQkhNekVtTUNRR0ExVUVDd3dkUVhCd2JHVWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhreEV6QVJCZ05WQkFvTUNrRndjR3hsSUVsdVl5NHhDekFKQmdOVkJBWVRBbFZUTUI0WERURTBNRFV3TmpJek5EWXpNRm9YRFRJNU1EVXdOakl6TkRZek1Gb3dlakV1TUN3R0ExVUVBd3dsUVhCd2JHVWdRWEJ3YkdsallYUnBiMjRnU1c1MFpXZHlZWFJwYjI0Z1EwRWdMU0JITXpFbU1DUUdBMVVFQ3d3ZFFYQndiR1VnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3hFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRThCY1JoQm5YWklYVkdsNGxnUWQyNklDaTc5NTdyazNnamZ4TGsrRXpWdFZtV3pXdUl0Q1hkZzBpVG51NkNQMTJGODZJeTNhN1puQyt5T2dwaFA5VVJhT0I5ekNCOURCR0JnZ3JCZ0VGQlFjQkFRUTZNRGd3TmdZSUt3WUJCUVVITUFHR0ttaDBkSEE2THk5dlkzTndMbUZ3Y0d4bExtTnZiUzl2WTNOd01EUXRZWEJ3YkdWeWIyOTBZMkZuTXpBZEJnTlZIUTRFRmdRVUkvSkp4RStUNU84bjVzVDJLR3cvb3J2OUxrc3dEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWZCZ05WSFNNRUdEQVdnQlM3c042aFdET0ltcVNLbWQ2K3ZldXYyc3NrcXpBM0JnTlZIUjhFTURBdU1DeWdLcUFvaGlab2RIUndPaTh2WTNKc0xtRndjR3hsTG1OdmJTOWhjSEJzWlhKdmIzUmpZV2N6TG1OeWJEQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VBWUtLb1pJaHZkalpBWUNEZ1FDQlFBd0NnWUlLb1pJemowRUF3SURad0F3WkFJd09zOXlnMUVXbWJHRyt6WERWc3Bpdi9RWDdka1BkVTJpanI3eG5JRmVRcmVKK0pqM20xbWZtTlZCRFkrZDZjTCtBakF5TGRWRUliQ2pCWGRzWGZNNE81Qm4vUmQ4TENGdGxrL0djbW1DRW05VStIcDlHNW5MbXdtSklXRUdtUThKa2gwQUFER0NBWWd3Z2dHRUFnRUJNSUdHTUhveExqQXNCZ05WQkFNTUpVRndjR3hsSUVGd2NHeHBZMkYwYVc5dUlFbHVkR1ZuY21GMGFXOXVJRU5CSUMwZ1J6TXhKakFrQmdOVkJBc01IVUZ3Y0d4bElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1Rc3dDUVlEVlFRR0V3SlZVd0lJVERCQlNWR2RWRFl3Q3dZSllJWklBV1VEQkFJQm9JR1RNQmdHQ1NxR1NJYjNEUUVKQXpFTEJna3Foa2lHOXcwQkJ3RXdIQVlKS29aSWh2Y05BUWtGTVE4WERUSXpNRE15TURFMU1Ea3lOMW93S0FZSktvWklodmNOQVFrME1Sc3dHVEFMQmdsZ2hrZ0JaUU1FQWdHaENnWUlLb1pJemowRUF3SXdMd1lKS29aSWh2Y05BUWtFTVNJRUlHNUVTTk93NTFXOHR1OUhDOHFVRDkrVjMrL1lzZi8yWjhGeWVTaXdWdU0vTUFvR0NDcUdTTTQ5QkFNQ0JFY3dSUUloQUpXNVlWaWZlQVRmak5RcVNBTE8vNTd3TWJiNktVNXRIbWxMa1djb2NwdGxBaUJickNMK3Jub1FCd2V3K3hsSHNXYys4ZGhFd3p0enVkZkZOU2poZGtVSDVnQUFBQUFBQUE9PSIsImhlYWRlciI6eyJwdWJsaWNLZXlIYXNoIjoibjhOTENzdEJmUzJHSVpuTFNuU2YxQmZaaHZFci9xMy8vYlV6ZW5aUW1zMD0iLCJlcGhlbWVyYWxQdWJsaWNLZXkiOiJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVIcngwM2JpRVgrRGlOZkkvRlRGZHhoamo4b2hGakM3S24rQzgwSXZHa3QrR1R0aXlweDZ1UjM1bkcrOWhzWWpJU25Cd09VdDd2eksvNGhpWCsrSEZ0QT09IiwidHJhbnNhY3Rpb25JZCI6IjFlZmRhZmUyOWU5OGZiYzk2YmQ5NDg5ZGE0OWU4OWQ0Yzg5MmRkODI1NjgzOGUxOTUwNjljMzRlNWJjZmY0YzgifSwidmVyc2lvbiI6IkVDX3YxIn0=</dataValue>
            </opaqueData>
        </payment>
    </transactionRequest>
</createTransactionRequest>

And here is the response:

<?xml version="1.0" encoding="UTF-8"?>
<createTransactionResponse xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <messages>
      <resultCode>Error</resultCode>
      <message>
         <code>E00027</code>
         <text>The transaction was unsuccessful.</text>
      </message>
   </messages>
   <transactionResponse>
      <responseCode>3</responseCode>
      <authCode />
      <avsResultCode>P</avsResultCode>
      <cvvResultCode />
      <cavvResultCode />
      <transId>0</transId>
      <refTransID />
      <transHash />
      <testRequest>0</testRequest>
      <accountNumber />
      <accountType />
      <errors>
         <error>
            <errorCode>153</errorCode>
            <errorText>There was an error processing the payment data. Unable to decrypt data.</errorText>
         </error>
      </errors>
      <transHashSha2 />
   </transactionResponse>
</createTransactionResponse>

In the request, I've verified that I can successfully base 64 decode the contents of dataValue without issue.

I am not sure how to proceed here.

mboyersgwg commented 1 year ago

In doing more testing, it looks like this can happen if the merchant id that is used in the Authorize.net account does not match the merchant id set up for them in their Apple account.

I have been able to reproduce this in with a sandbox environment, I will respond here again after working with the owner of the Authorize.net account.

mboyersgwg commented 1 year ago

I've verified that there was an issue with the CSR that the owner of the authorize.net account sent me. They likely typed in their merchant id incorrectly. I will close this issue.