Problem on Visa Direct api consuming

ErickOrtiz
New Contributor

Problem on Visa Direct api consuming

I'm testing sandbox visaDirect Apis and configure my project with TwoWaySSL,

 

considering code below, I'm getting succeful on vpd/helloworld, but this error on every single other api (AFT; OCT; QUERY)

 

Visa API Error: 400 {
responseStatus: {
status: 400,
code: '9125',
severity: 'ERROR',
message: 'Expected input credential was not present',
info: ''
}
}

 

What could I've missing?

 



const express = require('express');
const fs = require('fs');
var https = require('https');
const axios = require('axios');
const request = require('request');
const app = express();
const bodyParser = require('body-parser')
var path = require('path');

app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.json());
app.use(express.json());
app.use(bodyParser.urlencoded({extended: true}));

var username = 'xxxx';
var password = 'yyyy';
const keyPath = path.join(__dirname, 'certs', 'key.pem');
const certPath = path.join(__dirname, 'certs', 'cert.pem');
const caPath = path.join(__dirname, 'certs', 'SBX-2024-Prod-Root.pem');


app.get('/', async (req, res) => {

try{
const agent = new https.Agent({
key: fs.readFileSync(keyPath),
cert: fs.readFileSync(certPath),
//ca: fs.readFileSync(caFile),
//rejectUnauthorized: true
});

const response = await axios.get('https://sandbox.api.visa.com/vdp/helloworld', {
httpsAgent: agent,
auth: {
username,
password
},
headers: {
'Accept': 'application/json'
}
});
console.log(`Status: ${response.status}`);
console.log(response.data);

res.json(response.data);
}catch(error){
console.error('Error:', error.message);
res.status(500).json({ error: error.message });
}
 

/*
request.get(options, (err, res, body) => {
if (err) {
return console.log(err);
}
console.log(`Status: ${res.statusCode}`);
console.log(body);
});
res.send('Hello World');*/
});

app.get('/query', async (req, res) => {
 

try{
const agent = new https.Agent({
key: fs.readFileSync(keyPath),
cert: fs.readFileSync(certPath),
//ca: fs.readFileSync(caFile),
//rejectUnauthorized: true
});

httpsAgent: agent,
auth: {
username,
password
},
headers: {
'Accept': 'application/json'
}
});
console.log(`Status: ${response.status}`);
console.log(response.data);

res.json(response.data);
}catch(error){
if (error.response) {
console.error('Visa API Error:', error.response.status, error.response.data);
} else {
console.error('Request Error:', error.message);
}
res.status(500).json({ error: error.message });
}
});


app.get('/create', async (req, res) => {
 

try{
const agent = new https.Agent({
key: fs.readFileSync(keyPath),
cert: fs.readFileSync(certPath),
ca: fs.readFileSync(caPath),
rejectUnauthorized: false
});

const requestBody = {
amount: "100.00", // Monto en la moneda indicada
currencyCode: "840", // Código de moneda (USD = 840)
transactionIdentifier: "381228649430015", // Número único de transacción
sourceAccountNumber: "4005520000011126", // Tarjeta de origen (debe ser válida en sandbox)
sourceCountryCode: "USA",
senderName: "John Doe",
senderAddress: "123 Main Street",
senderCity: "San Francisco",
senderStateCode: "CA",
senderPostalCode: "94105",
senderCountryCode: "USA",
senderReference: "Ref123456",
recipientName: "Jane Doe",
recipientPrimaryAccountNumber: "4957030420210496", // Tarjeta de destino
acquiringBin: "408999",
acquirerCountryCode: "840",
retrievalReferenceNumber: "330000550000", // RRN único (debe ser válido)
systemsTraceAuditNumber: "451000", // Identificador único para Visa
businessApplicationId: "PP", // "PP" para pagos, "FD" para transferencias a débito
transactionCurrencyCode: "840",
merchantCategoryCode: "6012",
senderAccountNumber: "4005520000011126", // Tarjeta de origen
senderPhoneNumber: "6504320000"
};

const options = {
method: 'post',
httpsAgent: agent,
auth: {
username,
password
},
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
data: requestBody
};
 

const response = await axios(options);
console.log(`Status: ${response.status}`);
console.log(response.data);

res.json(response.data);
}catch(error){
if (error.response) {
console.error('Visa API Error:', error.response.status, error.response.data);
} else {
console.error('Request Error:', error.message);
}
res.status(500).json({ error: error.message });
}
});


app.listen(3050, function () {
console.log('Example app listening on port 3050.');
})
2 REPLIES 2
SyedSa
Community Moderator

Re: Problem on Visa Direct api consuming

Hi @ErickOrtiz, Thank you for reaching out. An agent will get back to you soon. Until then, if any community member knows a solution, feel free to reply in this thread.

ErickOrtiz
New Contributor

Re: Problem on Visa Direct api consuming

Thank you, the problem persists