I believe I have accept.js working for credit card processing, at least that is how it appears in the java console, and I think I am close to having it working for ach/echeck, but I must be missing something.
For testing I am loading accept.js like this:
<!-- Authorize.NET libraries --> <!-- SANDBOX --> <script type="text/javascript" src="https://jstest.authorize.net/v2/Accept.js" charset="utf-8"></script> <!-- Integrated -->
and then when a user hits our form they can choose to process the transaction with either a credit card or bank account. Transmitting to Authorize.Net is done using this code:
function sendPaymentDataToAnet() {
console.log("sending data start");
var authData = {};
authData.clientKey = "xxxyyyyclientkeyishere";
authData.apiLoginID = "zzzzloginIDishere";
// check for what pay method was selected card or bank and populate appropriately
var list = document.getElementById("rbnlistPayType"); //Client ID of the radiolist
var inputs = list.getElementsByTagName("input");
var selected;
var secureData = {};
secureData.authData = authData;
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].checked) {
selected = inputs[i];
break;
}
}
if (selected) {
alert(selected.value.trim());
if (selected.value.trim() === "Bank Account") {
alert(selected.value);
var bankData = {};
bankData.accountNumber = parseInt(document.getElementById('txtAcctNumber').value);
bankData.routingNumber = parseInt(document.getElementById('txtRouteNumber').value);
bankData.nameOnAccount = document.getElementById('txtAcctName').value;
bankData.accountType = document.getElementById('txtAcctType').value;
console.log(bankData.accountNumber);
console.log(bankData.routingNumber);
console.log(bankData.nameOnAccount);
console.log(bankData.accountType);
console.log("sending bank data");
secureData.bankData = bankData;
} else {
alert('Card Data');
var cardData = {};
cardData.cardNumber = document.getElementById('tbxCardNumber').value;
cardData.month = document.getElementById('txtExpMnth').value;
cardData.year = document.getElementById('txtExpYr').value;
cardData.cardCode = document.getElementById('txtCVV').value;
console.log(cardData.cardNumber);
console.log(cardData.month);
console.log(cardData.year);
console.log(cardData.cardCode);
console.log("sending card data");
secureData.cardData = cardData;
}
}
// var secureData = {};
// secureData.authData = authData;
//secureData.cardData = cardData;
//If using banking information instead of card information,
//send the bankData object instead of the cardData object.
Accept.dispatchData(secureData, responseHandler);
}
function responseHandler(response) {
try {
console.log(response.messages.resultCode);
if (response.messages.resultCode === "Error") {
console.log('in error handler')
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
console.log('normal processing');
console.log(response.messages.resultCode);
} catch (error) {
console.log(error);
}
}
When I run the code with a test credit card I get the following in my browser console log:
09:08:20.994 sending data start
09:08:24.353 370000000000002
09:08:24.354 11
09:08:24.354 22
09:08:24.354 123
09:08:24.354 sending card data
09:08:25.868 Ok
09:08:25.868 normal processing
09:08:25.868 Ok
When I use a bank account I get:
09:06:45.783 sending data start
09:06:48.595 1234567890123456
09:06:48.595 273976369
09:06:48.595 Test Test
09:06:48.595 checking
09:06:48.596 sending bank data
09:06:49.597 Error
09:06:49.597 in error handler
09:06:49.597 E_WC_04: Please provide mandatory field to library.
09:06:49.597 Error
I'm not sure what mandatory field I am supposed to send. What am I missing? Anyone have any ideas?
05-27-2021 07:30 AM