Les Mizzell
Les Mizzell

Reputation: 43

accept.js in sandbox - E_WC_21: User authentication failed

Trying to work out accept.js to replace a depreciated method for authorize.net payments. Not doing anything gcomplicated, but can't get past the authentication failed message when using the sandbox

Logging into the sandbox account to generate keys … they're named slightly differently than the code samples. So I MAY BE AN IDIOT.

OK, apiLoginID - obvious … Code below calls for data-clientKey. Not 100% sure which of the two below that actually is. I've tried both. Same error with both.

API Login ID : 4CLLpD------

Transaction Key : 9628s6xCSh------

Key : ------A4D932A4AFED546DE55E4D04C16CA66549915AFDC4FBA3A1665E271A2FB48A7A34394843A47BC170FFB4A5B99EDD17B75D99942E4E7F7133C2E1------

<script type="text/javascript"
    src="https://jstest.authorize.net/v3/AcceptUI.js"
    charset="utf-8">
</script>

<form id="paymentForm"
    method="POST"
    action="mysite.com/beta-account/order-receipt.php" >
    <input type="hidden" name="dataValue" id="dataValue" />
    <input type="hidden" name="dataDescriptor" id="dataDescriptor" />
    <button type="button"
        class="AcceptUI btn-success btn-lg"
        data-billingAddressOptions='{"show":true, "required":false}' 
        data-apiLoginID="4CLLpDX----" 
        data-clientKey="9628s6xCShc-----"
        data-acceptUIFormBtnTxt="Submit" 
        data-acceptUIFormHeaderTxt="Card Information" 
        data-responseHandler="responseHandler">Pay
    </button>
</form>

<script type="text/javascript">

function responseHandler(response) {
    if (response.messages.resultCode === "Error") {
        var i = 0;
        while (i < response.messages.message.length) {
            console.log(
                response.messages.message[i].code + ": " +
                response.messages.message[i].text
            );
            i = i + 1;
        }
    } else {
        paymentFormUpdate(response.opaqueData);
    }
}

function paymentFormUpdate(opaqueData) {
    document.getElementById("dataDescriptor").value = opaqueData.dataDescriptor;
    document.getElementById("dataValue").value = opaqueData.dataValue;
    document.getElementById("paymentForm").submit();
}
</script>

Right now, there's not really anything on the order-receipt.php page. I'm just trying to get the post to make it that far and show me a dump of everything that post to the page, so even once I get this working, I've still got a ways to go.

When I go to the payment page, hit the "Pay" button, fill out the credit card form, hit "submit" … it doesn't go anywhere at all. It stays on the page and the console reports: "E_WC_21: User authentication failed due to invalid authentication values."

This has turned into one more frustrating thing after pulling over half my hair out over authorize.net's documentation of what I need to do about the MD5 end-of-life … of which I never could get anything to work to replace the SIM relay-response method that was being used. response.js seems fairly simple as a replacement, and I'm stuck here too.

What do I try next?

Upvotes: 0

Views: 2094

Answers (2)

Umar
Umar

Reputation: 17

For getting the data-clientKey, you should go to this place. Please see the attach screenshot.

Screenshot

Upvotes: 1

Les Mizzell
Les Mizzell

Reputation: 43

OK, I think I found the problem … There's a difference between the API Login ID, the Transaction Key, and the Client Key. That's not immediately obvious in some of the docs ….

Upvotes: 1

Related Questions