我在我的Django网络应用程序中使用PayPal标准IPN支付解决方案。
<body>
<!-- Set up a container element for the button -->
<div id="paypal-button-container"></div>
<!-- Include the PayPal JavaScript SDK -->
<script src="https://www.paypal.com/sdk/js?client-id=test¤cy=USD"></script>
<script>
// Render the PayPal button into #paypal-button-container
paypal.Buttons({
// Set up the transaction
createOrder: function(data, actions) {
return actions.order.create({
purchase_units: [{
amount: {
value: '88.44'
}
}]
});
},
// Finalize the transaction
onApprove: function(data, actions) {
return actions.order.capture().then(function(orderData) {
// Successful capture! For demo purposes:
console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));
});
}
}).render('#paypal-button-container');
</script>
</body>
一切运行正常,我可以通过js代码中的details变量访问所有数据。
现在,我需要插入细节到Django数据库,没有API,简单的模型。
尝试了很多东西,没有工作.我不喜欢使用django-paypal,因为它没有智能按钮(据我所见),只有“立即购买按钮”的选项,没有信用卡/借记卡.
它是如何做到的?或者是有django-paypal软件包的智能按钮?
谢谢你的帮助!
1条答案
按热度按时间5lhxktic1#
如何获得PayPal客户端信息给Django?
别说了
使用客户端JS函数创建和捕获付款的集成是非常简单的用例。如果您需要对结果执行任何自动化操作,例如将交易结果写入数据库,则绝对不要使用它。
使用v2/checkout/orders API并创建两个路径(url路径),一个用于“创建订单”,另一个用于“捕获订单”。您可以使用Checkout-PHP-SDK来路由对PayPal的API调用,或者您自己的HTTPS实现(首先获取访问令牌,然后执行调用)。(无HTML或文本)。在第二个途径中,当捕获API成功时,您应验证金额是否正确,并将其生成的付款详细信息存储在数据库中(特别是
purchase_units[0].payments.captures[0].id
,即PayPal交易ID)并执行任何必要的业务逻辑(例如预订产品或发送电子邮件)。如果出现错误,请同时转发其JSON详细信息,因为前端必须处理这种情况。将这两个路由与此前端审批流配对:https://developer.paypal.com/demo/checkout/#/pattern/server。(如果需要从客户端向服务器发送任何其他数据,如items数组或选定的选项,请向fetch添加一个
body
参数,其值为JSON字符串或对象)