Как получить идентификатор транзакции с помощью интеграции PayPal Express Checkout (REST на стороне клиента)

Я хотел бы получить идентификатор транзакции, как только платеж Paypal будет успешным.

я использую Paypal Express Checkout (клиентская REST).

Пожалуйста, найдите ниже мой код для кнопки оплаты.

Моя цель состоит в том, чтобы иметь возможность обновлять базу данных MySQL, чтобы (1) подтвердить заказ и (2) включить идентификатор транзакции Paypal рядом с ним. Это то, к чему будет стремиться сделать файл 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>

1

Решение

Итак, вот решение, которое я нашел для моих проблем

1- чтобы получить PaymentID, который вы можете просто сделать (как справедливо предложено inarilo — спасибо!)

data.paymentID

Примечание: идентификатор платежа отличается от идентификатора транзакции: см. Разница между paymentId и TRANSACTIONID

Чтобы получить идентификатор транзакции, я использую:

payment.transactions[0].related_resources[0].sale.id

2- затем, чтобы использовать эту информацию и обновить базу данных MySQL через PHP, я использую 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';
3

Другие решения

Других решений пока нет …