javascript - Javascript数据库问题
问题描述
所以我已经成功地在我的页面上实施了贝宝,但我需要知道如何检查付款是否被批准(我有),然后在我的数据库中更改他们的付款状态。
payed = 0 : 用户没有购买服务
payed = 1 : 用户已购买服务
<div id="smart-button-container"> <div style="text-align: center;"> <div id="paypal-button-container"></div> </div> </div> <script src="https://www.paypal.com/sdk/js?client-id=myid¤cy=EUR" data-sdk-integration-source="button-factory"></script> <script> var payment_valid; function initPayPalButton() { paypal.Buttons({ style: { shape: 'rect', color: 'black', layout: 'vertical', label: 'paypal', }, createOrder: function(data, actions) { return actions.order.create({ purchase_units: [{"description":"Premium","amount":{"currency_code":"EUR","value":0.1}}] }); }, //Need to insert something here into my database onApprove: function(data, actions) { return actions.order.capture().then(function(details) { alert('Transaction completed by ' + details.payer.name.given_name + '!' + ' data:' + data); }); }, onError: function(err) { console.log(err); } }).render('#paypal-button-container'); } initPayPalButton(); </script>
解决方案
要在您的数据库中记录付款状态,请通过 API 从您的服务器捕获以获取成功状态。不要在客户端使用,因为如果这样做,无法保证能够在服务器上记录成功的捕获。actions.order.capture()
因此,为了进行适当的服务器集成,请创建两条路由——一条用于“创建订单”,一条用于“捕获订单”,如此处所述。您的路线应该返回/输出 JSON(并且只有 JSON)。捕获路由应在调用 PayPal 后检查是否成功,并在将 JSON 返回到客户端之前进行任何数据库写入。
将您的两条路线与以下批准流程配对:https ://developer.paypal.com/demo/checkout/#/pattern/server