我试图将数据发送到另一个php文件,在onApprove
完成后,我可以在该文件中检查数据并将数据保存到数据库中:
<script>
// Render the PayPal button into #paypal-button-container
function loadAsync(url, callback) {
var s = document.createElement('script');
s.setAttribute('src', url); s.onload = callback;
document.head.insertBefore(s, document.head.firstElementChild);
}
// Usage -- callback is inlined here, but could be a named function
loadAsync('https://www.paypal.com/sdk/js?client-id=test¤cy=USD&disable-funding=card', function() {
paypal.Buttons({
// Set up the transaction
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: <?echo $cart->getCartTotal(true)?>
}
}]
});
},
// Finalize the transaction
onApprove: function(data, actions) {
// show loader on screen whilst wating to redirect
$('.checkout-loader').addClass('active');
// excute php script
var EXECUTE_URL = 'https://example.com/TESTS.php?success='+success;
// Authorize the transaction
actions.order.capture().then(function(details) {
// Call your server to validate and capture the transaction
return fetch(EXECUTE_URL, {
method: 'post',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify({
orderID : data.orderID,
success : "okaysuc"
})
}).then(function(response){
// redirect to the completed page if paid
window.location.href = '/success/' + data.orderID;
});
});
}
}).render('#paypal-button-container');
});
</script>
我的TESTS.php
:
<?php
$retour = $_POST['success']; //I have tried json_decode() also, didnt work....
$db->query("INSERT INTO mydbname(order_id) VALUES ('$retour')"); //empty data is added to databse
$cart = new Cart();
if($retour == 'okaysuc'){
//my code goes here.. But not works because data is empty. it is not sent.
}
?>
除了POST
编辑变量之外,一切都正常工作。我不知道如何将数据发送到另一个php文件。有人知道哪里有错误吗?我几乎所有的尝试都尝试过,但没有成功。谢谢。
发布于 2022-03-23 00:51:19
不使用actions.order.create() / actions.order.capture()在客户端创建/捕获订单,只在客户端事件完成后才向服务器发送数据。
相反,切换到适当的客户机-服务器集成。遵循PayPal校验集成指南,在服务器上创建两条路线,一条用于“创建订单”,另一条用于“捕获顺序”(参见“添加和修改代码”中的可选步骤5)。这两条路线都应该只返回JSON数据(不返回HTML或文本)。在第二条路由中,当捕获API成功时,您应该将其结果的支付细节存储在数据库中(特别是purchase_units[0].payments.captures[0].id
,即PayPal事务ID),并在将返回JSON转发给前端调用方之前执行任何必要的业务逻辑(例如发送确认电子邮件或保留产品)。
将这2条路由与前端审批流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server
应该扩展到create或capture端点的fetch,以包含一个body
param和您希望发送的任何其他数据,这些数据可以在该操作在服务器上继续运行之前得到验证,并且只有在捕获响应成功的情况下才能存储。
https://stackoverflow.com/questions/71580559
复制相似问题