#django #paypal #checkout #django-oscar
Вопрос:
Я довольно новичок в Django, а также в Djnago-oscar, до сих пор у меня есть настройка магазина django-oscar, и я пытаюсь интегрироваться с paypal, но из-за того, что я запускаю django.oscar 3.x «django-oscar-paypal» не работает для меня, и недостаточно документации о том, как осуществлять платежи.
Мой процесс оформления заказа:
- Добавление товаров в корзину
- Пользователь вводит данные, включая доставку и т. Д
- Выберите способ оплаты, просмотрите перенаправление на Paypal, чтобы дополнить платеж
- Перенаправьте обратно на сайт и подтвердите заказ
На paymentMethodeView
я создал форму для получения способа оплаты, и на paymentDetailsView
я handle_payment
def handle_payment(self, order_number, order_total, **kwargs):
method = self.checkout_session.payment_method()
if method == 'pt': #payment terms admin manually invoice
return self.handle_pt_payment(order_number, order_total, **kwargs)
elif method == 'paypal_payment':
return self.handle_paypal_payment(order_number, order_total, **kwargs)
else:
raise PaymentError(_('Bad payment method in handle_payment!'))
И на handle_paypal_payment
работе я не уверен, как действовать дальше.
Любая помощь была бы очень признательна
Ответ №1:
Перенаправление с вашего сайта-это старый способ обработки платежей. Не делайте этого; не должно быть никакого перенаправления.
Вместо этого создайте два маршрута на своем сервере, один для «Создания заказа» и один для «Заказа на захват», задокументированный здесь; вы можете использовать пакет SDK для проверки Python. Эти маршруты должны возвращать только данные JSON (без HTML или текста). Система захвата должна (в случае успеха) сохранить платежные данные в вашей базе данных до того , как она вернет их (в частности purchase_units[0].payments.captures[0].id
, идентификатор транзакции PayPal).
Соедините эти два маршрута со следующим потоком утверждения, который не предполагает перенаправлений: https://developer.paypal.com/demo/checkout/#/pattern/server
Если в разделе «Успех» этого кода вы хотите перенаправить куда-либо еще на своем сайте после обработки транзакции (например, на странице «Спасибо» и «подтверждение»), сделайте это с помощью JavaScript.