Как получить информацию о papypal на стороне клиента в django?
Я использую стандартное платежное решение PayPal IPN на стороне клиента в моем веб-приложении Django.
<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>
все работает нормально и я могу получить доступ ко всем данным через переменную details в js коде .
Теперь мне нужно вставить детали в django db, как это можно сделать? Нет api, простая модель.
Пробовал много вещей, ни одна не сработала, и я предпочитаю не использовать django-paypal.
Спасибо за помощь!
Как получить информацию о PayPal на стороне клиента в Django?
Не надо.
Интеграция, которая создает и фиксирует платежи с помощью JS-функций на стороне клиента, предназначена для очень простых случаев использования. Ее никогда не следует использовать, если вам нужно сделать что-то автоматизированное с результатом, например, записать результаты транзакции в базу данных.
Вместо этого существуют интеграции на основе API именно для этого случая использования. Используйте API v2/checkout/orders и создайте два маршрута (пути url) на вашем сервере, один для 'Create Order' и один для 'Capture Order'. Вы можете использовать Checkout-PHP-SDK для API вызовов маршрутов к PayPal, или вашу собственную реализацию HTTPS, сначала получающую токен доступа, а затем выполняющую вызов. Оба этих маршрута должны возвращать/выводить только JSON данные (без HTML или текста). Внутри второго маршрута, когда API захват успешен, вы должны убедиться, что сумма была правильной, и сохранить полученные платежные данные в вашей базе данных (в частности purchase_units[0].payments.captures[0].id
, который является идентификатором транзакции PayPal) и выполнить любую необходимую бизнес-логику (например, зарезервировать продукт или отправить электронное письмо) непосредственно перед пересылкой возвращаемого JSON фронтенду. В случае ошибки также передайте детали JSON, так как фронтенд должен обрабатывать такие случаи.
Сопрягите эти 2 маршрута с этим фронтенд-потоком утверждения: https://developer.paypal.com/demo/checkout/#/pattern/server . (Если вам нужно отправить какие-либо дополнительные данные с клиента на сервер, например, массив элементов или выбранные опции, добавьте body
параметр в fetch со значением, которое является строкой JSON или объектом)