卡住了 Paypal Express Checkout 的集成(基本集成 checkout.js 版本 4.0.0)
Posted
技术标签:
【中文标题】卡住了 Paypal Express Checkout 的集成(基本集成 checkout.js 版本 4.0.0)【英文标题】:Stuck with integration of Paypal Express Checkout ( Basic integration checkout.js version 4.0.0) 【发布时间】:2017-05-31 05:37:45 【问题描述】:我正在尝试将 Paypal Express Checkout 集成到简单的购物车中。有不同的方法可以做到这一点。 Paypal 建议在基本或高级集成和 checkout.js 4.0 版(使用 REST API)之间进行选择。到目前为止,一切都很好。 我在我的 Paypal 帐户中创建了 Paypal 应用程序以获取凭据并开始测试它。 测试没问题,但是这里有一些误解。 Checkout.js 通过 REST API(连同我的凭据)将金额 ( 1.00 ) 和货币 ( EUR ) 发送到 Paypal 服务器。如果付款完成,则触发回调函数 onAuthorize,并且有两个带有响应的参数(数据和操作)。好吧,这里我调用我自己的AJAX函数来在我的数据库中写入事务响应数据。但是......我在这里只有支付交易的PaymentID和PayerID?!如果我想稍后搜索到 paypal.com 的 Web 界面 - 没有 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>
【问题讨论】:
【参考方案1】:要从事务中读取信息,您需要调用并将数据 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);
);
);
【讨论】:
但是 data.id 是交易还是支付 id ?我发现这些是不同的 data.id 是交易ID。 是data.state还是data.status? 它是 data.state。它的付款状态。以上是关于卡住了 Paypal Express Checkout 的集成(基本集成 checkout.js 版本 4.0.0)的主要内容,如果未能解决你的问题,请参考以下文章
paypal express checkout set paypal费用另加