我正在嘗試將Paypal Express Checkout集成到簡單的購物車中。有不同的方法來做到這一點。 Paypal建議在基本或高級集成和checkout.js的4.0版本(使用REST API)之間進行選擇。到現在爲止還挺好。 我在我的Paypal帳戶中創建了Paypal應用程序以獲取憑證並開始測試。 測試還行,但這裏有一些誤解。 Checkout.js通過REST API(連同我的憑證)向PayPal服務器發送金額(1.00)和貨幣(EUR)。如果付款完成OK - onAuthorize上的回調函數被觸發,並且有兩個響應參數(數據和操作)。那麼,我在這裏調用我自己的AJAX函數在我的數據庫中寫入事務響應數據。但是...我只在這裏得到付款交易的PaymentID和PayerID?!!如果我想稍後搜索到paypal.com的Web界面 - 沒有PaymentID這樣的事情。只有TransactionID?如何在onAutorize回調函數中得到其他交易細節?我怎樣才能在這裏得到TransactionID來寫入我的數據庫?可能在這裏我必須致電Paypal API,或者必須實施Paypal IPN(即時付款通知)?但如何調用API IPN,如果我沒有TransactionID的:)與PayPal Express Checkout集成(基本集成checkout.js版本4.0.0)卡住
<div style="width: 906px; text-align: right; height: 100px;
margin-top: 50px;">
<div id="paypal-button"></div>
</div>
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
paypal.Button.render({
env: 'production', // Optional: specify 'sandbox' environment
style: {
size: 'medium',
shape: 'rect'
},
client: {
sandbox: 'xxx-my-credentials-xxx',
production: 'xxx-my-credentials-xxx'
},
payment: function() {
var env = this.props.env;
var client = this.props.client;
return paypal.rest.payment.create(env, client, {
transactions: [
{
amount: { total: '1.00', currency: 'EUR' }
}
]
});
},
commit: true, // Optional: show a 'Pay Now' button in the checkout flow
onAuthorize: function(data, actions) {
// Optional: display a confirmation page here
var EXECUTE_PAYMENT_URL = 'payment-process.php';
paypal.request.post(EXECUTE_PAYMENT_URL, { paymentID: data.paymentID, payerID: data.payerID, transactionID: data.transactionID, data: data }) .then(function(data) { }) .catch(function(err) { });
return actions.payment.execute().then(function() {
// Show a success page to the buyer
});
}
}, '#paypal-button');
</script>
不過是數據交易的信息。確認交易或付款ID?我發現這些是不同的 –
data.id是事務ID。 – Imran