我正在尝试将Paypal Express Checkout集成到简单的购物车中。有不同的方法可以做到这一点。 Paypal建议在基本或高级集成和checkout.js 4.0版(使用REST API)之间进行选择。到现在为止还挺好。 我在Paypal帐户中创建了Paypal App以获取凭据并开始测试。 测试没问题,但这里有一些误解。 Checkout.js通过REST API(以及我的凭据)将金额(1.00)和货币(EUR)发送到Paypal服务器。如果付款完成,则会触发回调函数onAuthorize,并且有两个带响应的参数(数据和操作)。好吧,我在这里调用自己的AJAX函数在我的数据库中编写事务响应数据。但是......我这里只收到付款交易的PaymentID和PayerID?!!如果我想稍后搜索到paypal.com的网络界面 - 没有PaymentID这样的东西。只有TransactionID ???如何在onAutorize回调函数中获取响应中的其他事务详细信息?如何在此处获取TransactionID以在我的数据库中写下来?可能在这里我要打电话给Paypal API,还是要实施Paypal IPN(即时付款通知)?但是如果我没有TransactionID那么如何调用IPN API:)
<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>
答案 0 :(得分:2)
要从您需要调用的事务中读取信息并在数据库中保存数据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);
}
});
});