当脚本在HTML / javascript页面中调用创建订单时,我遇到了问题。
在控制台中,出现一个错误“期望将一个字符串订单ID传递给createOrder的承诺”。
我给我的代码HTMl / javascript
<html >
<body>
<div id="bouton-paypal"></div>
<script src="https://www.paypal.com/sdk/js?client-id=monid"></script>
<script>
paypal.Buttons({
// Set up the transaction
createOrder: function() {
var SETEC_URL = 'http://localhost/paypalphp/paypalcreatepayment.php';
return fetch(SETEC_URL, {
method: 'post',
headers: {
'content-type': 'application/json'
}
}).then(function(res) {
return res.json();
}).then(function(data) {
return data.token;
});
}
}).render('#bouton-paypal');
答案 0 :(得分:0)
我假设您正在遵循Setting Up A Transaction on the Server的PayPal指南,并且已经测试过服务器正在返回有效的交易。
您收到的错误表明return data.token;
行未返回有效的订单ID字符串(很可能返回未定义)。
我已将console.log(data)
添加到您的代码中。请运行此命令,以便我们检查从您的服务器返回的JSON。
<html>
<body>
<div id="bouton-paypal"></div>
<script src="https://www.paypal.com/sdk/js?client-id=monid"></script>
<script>
paypal.Buttons({
// Set up the transaction
createOrder: function() {
var SETEC_URL = 'http://localhost/paypalphp/paypalcreatepayment.php';
return fetch(SETEC_URL, {
method: 'post',
headers: {
'content-type': 'application/json'
}
}).then(function(res) {
return res.json();
}).then(function(data) {
console.log(data)
return data.token;
});
}
}).render('#bouton-paypal');
</script>
答案 1 :(得分:0)
感谢您的回复。我为这个问题找到了解决方法
<script>
paypal.Buttons({
style: {
layout: 'vertical',
color: 'blue',
shape: 'rect',
label: 'paypal'
},
// Set up the transaction
createOrder: function() {
var SETEC_URL = 'http://localhost/paypalphp/paypalcreatepayment.php';
return fetch(SETEC_URL, {
method: 'post',
headers: {
'content-type': 'application/json'
}
}).then(function(res) {
return res.json();
}).then(function(data) {
let token;
token = data.paypal_response.links[1].href.match(/EC-\w+/)[0];
console.log(token);
return token;
});
},
// Finalize the transaction
onApprove: function(data) { // On indique le chemin vers notre script PHP qui se chargera d'exécuter le paiement (appelé après approbation de l'utilisateur côté client).
var EXECUTE_URL = 'http://localhost/paypalphp/paypalexecutepayment2.php?payerID='+data.payerID+'&paymentID='+data.paymentID;
/*var data = {
paymentID: data.paymentID,
payerID: data.payerID
};*/
console.log(data);
return fetch(EXECUTE_URL, {
method: 'post',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
token: data.orderID,
payerID: data.payerID,
paymentID: data.paymentID
})
});
},
onCancel: function(data, actions) {
alert("Paiement annulé : vous avez fermé la fenêtre de paiement.");
},
onError: function(err) {
alert("Paiement annulé : une erreur est survenue. Merci de bien vouloir réessayer ultérieurement.");
}
}).render('#bouton-paypal');
</script>