Nous essayons d'intégrer avec l'API SagePay en utilisant un appel AJAX dans un code JQuery. Cette API particulière donne une réponse JSON comme un exemple ci-dessous:SagePay clés de session marchand - AJAX
{
"expiry": "2017-09-06T11:20:25.820+01:00",
"merchantSessionKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
En utilisant le code ci-dessous, nous pouvons authentifier avec succès contre l'API, mais se jeter avec un message sur Access-Control-Allow-Origin
.
XMLHttpRequest ne peut pas charger https://pi-test.sagepay.com/api/v1/merchant-session-keys. La réponse à la demande de contrôle en amont ne passe pas la vérification du contrôle d'accès: aucun en-tête Access-Control-Allow-Origin
n'est présent sur la ressource demandée. L'origine null
n'est donc pas autorisée à accéder.
Quelqu'un a-t-il déjà rencontré ce problème?
var myAPI = "https://pi-test.sagepay.com/api/v1/merchant-session-keys";
var myKey = "xxx";
var myPassword = "xxx";
var myTokenId = "xxx";
$.ajax({
url: myAPI,
headers: {
'content-Type': 'application/json',
'username': myKey,
'password': myPassword,
'authorization': 'Basic ' + myTokenId
},
method: 'POST',
dataType: 'json',
data: {
'vendorName':'xxx'
},
success: function(data){
console.log(data.merchantSessionKey);
console.log(data.expiry);
},
error: function() {
console.log('MSK unsuccessful');
}
});
Juste pour préciser la raison de ceci: votre 'token' est censé être * secrète *. Seul votre serveur sait de quoi il s'agit et l'utilise pour l'authentification de serveur à serveur. Ne le * laissez * jamais * près de votre frontal et renouvelez-le si vous le relâchez accidentellement. Le 'merchantSessionKey' est généré sur le serveur en utilisant votre' token', c'est-à-dire un jeton public à durée de vie limitée et à usage unique, et ne peut pas être utilisé pour émuler votre compte. – Jason