与PayPal Express Checkout集成(基本集成checkout.js版本4.0.0)卡住
问题描述:
我正在尝试将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>
答
来读取你需要调用和存储数据的JSON数据库
return actions.payment.execute().then(function() {
actions.payment.get().then(function(data) {
if(data.state === 'approved'){
console.log(data);
var transactionId = data.id;
alert("Transaction ID: "+ transactionId + " \n State: " +data.state);
}else{
console.log(data);
}
});
});
不过是数据交易的信息。确认交易或付款ID?我发现这些是不同的 –
data.id是事务ID。 – Imran