django-оскар 3.0 с оплатой PayPal

#django #paypal #checkout #django-oscar

Вопрос:

Я довольно новичок в Django, а также в Djnago-oscar, до сих пор у меня есть настройка магазина django-oscar, и я пытаюсь интегрироваться с paypal, но из-за того, что я запускаю django.oscar 3.x «django-oscar-paypal» не работает для меня, и недостаточно документации о том, как осуществлять платежи.

Мой процесс оформления заказа:

  1. Добавление товаров в корзину
  2. Пользователь вводит данные, включая доставку и т. Д
  3. Выберите способ оплаты, просмотрите перенаправление на Paypal, чтобы дополнить платеж
  4. Перенаправьте обратно на сайт и подтвердите заказ

На 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.