提问人:Dan 提问时间:7/29/2017 最后编辑:Dan 更新时间:6/2/2020 访问量:6112
如何使用 PayPal 快速结账集成(客户端 REST)获取交易 ID
How to get the Transaction ID using PayPal Express Checkout Integration (Client-side REST)
问:
我想在PayPal付款成功后获取交易ID。
我正在使用 PayPal 快速结账(客户端 REST)。
请在下面找到我的付款按钮代码。
我的目标是能够更新MySQL数据库以(1)确认订单和(2)在其旁边包含PayPal交易ID。这就是 orderconfirmed.php 文件在被调用后的目标。为此,我需要能够在付款成功时获取 TransactionID 变量
<script>
paypal.Button.render({
env: 'sandbox', // Or 'sandbox'
client: {
sandbox: 'ABCD',
production: 'ABCD'
},
commit: true, // Show a 'Pay Now' button
payment: function(data, actions) {
return actions.payment.create({
payment: {
transactions: [
{
amount: { total: '0.01', currency: 'USD' },
item_list: {
items: [
{
name: 'hat',
description: 'Brown hat',
quantity: '1',
price: '0.01',
currency: 'USD'
}
]
}
}
]
},
});
},
onAuthorize: function(data, actions) {
return actions.payment.execute().then(function(payment) {
document.querySelector('#confirmmessage').innerText = 'Thank you - Your payment has been processed';
document.querySelector('#paypal-button').style.display = 'none';
document.querySelector('#confirmdiv').style.display
= 'block';
window.location.href = 'orderconfirmed.php?transactionID=HOW_TO_GET_THIS_FIELD';
});
}
}, '#paypal-button');
</script>
答:
5赞
Dan
8/1/2017
#1
所以这是我找到的问题的解决方案
1- 要获得 PaymentID,您可以简单地做(正如 inarilo 正确地建议的那样 - 谢谢!
data.paymentID
注意:PaymentID 与 TransactionID 不同:参见 paymentId 和 TRANSACTIONID 的区别
为了获取交易 ID,我使用:
payment.transactions[0].related_resources[0].sale.id
2-然后要使用此信息并通过PHP更新MySQL数据库,我使用AJAX。
所以把代码放在一起看起来像这样:
document.querySelector('#confirmmessage').innerText = payment.transactions[0].related_resources[0].sale.id;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","testajax.php",true);
xmlhttp.send();
document.querySelector('#confirmdiv').style.display = 'block';
评论
0赞
Kareem
6/5/2018
什么是对象支付?你能为这行代码添加这样的上下文吗?谢谢 payment.transactions[0].related_resources[0].sale.id
1赞
Dan
3/30/2019
更新:以上内容对checkout.js有效,对于与SDK的新集成(从2019年2月开始),交易ID可以在...purchase_units[0].payments.captures[0].id
下一个:将文件路径从数组上传到数据库
评论