コード例 #1
0
ファイル: views.py プロジェクト: nav/django-oscar-paypal
    def post(self, request, *args, **kwargs):
        """
        Place an order.

        We fetch the txn details again and then proceed with oscar's standard
        payment details view for placing the order.
        """
        error_msg = _(
            "A problem occurred communicating with PayPal "
            "- please try again later"
        )
        try:
            self.payer_id = request.POST['payer_id']
            self.token = request.POST['token']
        except KeyError:
            # Probably suspicious manipulation if we get here
            messages.error(self.request, error_msg)
            return HttpResponseRedirect(reverse('basket:summary'))

        try:
            self.txn = fetch_transaction_details(self.token)
        except PayPalError:
            # Unable to fetch txn details from PayPal - we have to bail out
            messages.error(self.request, error_msg)
            return HttpResponseRedirect(reverse('basket:summary'))

        # Reload frozen basket which is specified in the URL
        basket = self.load_frozen_basket(kwargs['basket_id'])
        if not basket:
            messages.error(self.request, error_msg)
            return HttpResponseRedirect(reverse('basket:summary'))

        submission = self.build_submission(basket=basket)
        return self.submit(**submission)
コード例 #2
0
    def post(self, request, *args, **kwargs):
        """
        Place an order.

        We fetch the txn details again and then proceed with oscar's standard
        payment details view for placing the order.
        """
        if buyer_pays_on_paypal():
            return HttpResponseBadRequest(
            )  # we don't expect any user here if we let users buy on PayPal

        try:
            self.payer_id = request.POST['payer_id']
            self.token = request.POST['token']
        except KeyError:
            # Probably suspicious manipulation if we get here
            messages.error(self.request, self.error_message)
            return redirect('basket:summary')

        try:
            self.txn = fetch_transaction_details(self.token)
        except PayPalError:
            # Unable to fetch txn details from PayPal - we have to bail out
            messages.error(self.request, self.error_message)
            return redirect('basket:summary')

        # Reload frozen basket which is specified in the URL
        basket = self.load_frozen_basket(kwargs['basket_id'])
        if not basket:
            messages.error(self.request, self.error_message)
            return redirect('basket:summary')

        submission = self.build_submission(basket=basket)
        return self.submit(**submission)
コード例 #3
0
ファイル: views.py プロジェクト: riverfor/django-oscar-paypal
    def get(self, request, *args, **kwargs):
        """
        Fetch details about the successful transaction from PayPal.  We use
        these details to show a preview of the order with a 'submit' button to
        place it.
        """
        try:
            self.payer_id = request.GET["PayerID"]
            self.token = request.GET["token"]
        except KeyError:
            # Manipulation - redirect to basket page with warning message
            logger.warning("Missing GET params on success response page")
            messages.error(self.request, _("Unable to determine PayPal transaction details"))
            return HttpResponseRedirect(reverse("basket:summary"))

        try:
            self.txn = fetch_transaction_details(self.token)
        except PayPalError as e:
            logger.warning("Unable to fetch transaction details for token %s: %s", self.token, e)
            messages.error(self.request, _("A problem occurred communicating with PayPal - please try again later"))
            return HttpResponseRedirect(reverse("basket:summary"))

        # Reload frozen basket which is specified in the URL
        kwargs["basket"] = self.load_frozen_basket(kwargs["basket_id"])
        if not kwargs["basket"]:
            logger.warning("Unable to load frozen basket with ID %s", kwargs["basket_id"])
            messages.error(self.request, _("No basket was found that corresponds to your " "PayPal transaction"))
            return HttpResponseRedirect(reverse("basket:summary"))

        logger.info(
            "Basket #%s - showing preview with payer ID %s and token %s", kwargs["basket"].id, self.payer_id, self.token
        )

        return super(SuccessResponseView, self).get(request, *args, **kwargs)
コード例 #4
0
    def post(self, request, *args, **kwargs):
        """
        Place an order.
        We fetch the txn details again and then proceed with oscar's standard
        payment details view for placing the order.
        """
        error_msg = _(
            "Swamahani! on a eu un petit problème avec notre banque. Donc, nous n'avons rien pris sur votre compte bancaire. "
            "Essaie une autre fois car on règle ce problème avec notre Banque"
        )
        try:
            self.payer_id = request.POST['payer_id']
            self.token = request.POST['token']
        except KeyError:
            # Probably suspicious manipulation if we get here
            messages.error(self.request, error_msg)
            return HttpResponseRedirect(reverse('basket:summary'))

        try:
            self.txn = fetch_transaction_details(self.token)
        except PayPalError:
            # Unable to fetch txn details from PayPal - we have to bail out
            messages.error(self.request, error_msg)
            return HttpResponseRedirect(reverse('basket:summary'))

        # Reload frozen basket which is specified in the URL
        basket = self.load_frozen_basket(kwargs['basket_id'])
        if not basket:
            messages.error(self.request, error_msg)
            return HttpResponseRedirect(reverse('basket:summary'))

        submission = self.build_submission(basket=basket)
        return self.submit(**submission)
コード例 #5
0
ファイル: views.py プロジェクト: amenedem/django-oscar-paypal
    def get(self, request, *args, **kwargs):
        """
        Fetch details about the successful transaction from PayPal.  We use
        these details to show a preview of the order with a 'submit' button to
        place it.
        """
        try:
            self.payer_id = request.GET['PayerID']
            self.token = request.GET['token']
        except KeyError:
            # Manipulation - redirect to basket page with warning message
            logger.warning("Missing GET params on success response page")
            messages.error(
                self.request,
                _("Unable to determine PayPal transaction details"))
            return HttpResponseRedirect(reverse('basket:summary'))

        try:
            self.txn = fetch_transaction_details(self.token)
        except PayPalError, e:
            logger.warning(
                "Unable to fetch transaction details for token %s: %s",
                self.token, e)
            messages.error(
                self.request, _("A problem occurred communicating with PayPal - please try again later"))
            return HttpResponseRedirect(reverse('basket:summary'))
コード例 #6
0
ファイル: views.py プロジェクト: andrea00/django-oscar-paypal
    def get(self, request, *args, **kwargs):
        """
        Fetch details about the successful transaction from PayPal.  We use
        these details to show a preview of the order with a 'submit' button to
        place it.
        """
        try:
            self.payer_id = request.GET['PayerID']
            self.token = request.GET['token']
        except KeyError:
            # Manipulation - redirect to basket page with warning message
            logger.warning("Missing GET params on success response page")
            messages.error(self.request,
                           _("Unable to determine PayPal transaction details"))
            return HttpResponseRedirect(reverse('basket:summary'))

        try:
            self.txn = fetch_transaction_details(self.token)
        except PayPalError as e:
            logger.warning(
                "Unable to fetch transaction details for token %s: %s",
                self.token, e)
            messages.error(
                self.request,
                _("A problem occurred communicating with PayPal - please try again later"
                  ))
            return HttpResponseRedirect(reverse('basket:summary'))

        # Reload frozen basket which is specified in the URL
        kwargs['basket'] = self.load_frozen_basket(kwargs['basket_id'])
        if not kwargs['basket']:
            logger.warning("Unable to load frozen basket with ID %s",
                           kwargs['basket_id'])
            messages.error(
                self.request,
                _("No basket was found that corresponds to your "
                  "PayPal transaction"))
            return HttpResponseRedirect(reverse('basket:summary'))

        logger.info(
            "Basket #%s - showing preview with payer ID %s and token %s",
            kwargs['basket'].id, self.payer_id, self.token)

        basket = self.load_frozen_basket(kwargs['basket_id'])
        if not basket:
            messages.error(self.request, error_msg)
            return HttpResponseRedirect(reverse('basket:summary'))

        submission = self.build_submission(basket=basket)
        return self.submit(**submission)
コード例 #7
0
    def get(self, request, *args, **kwargs):
        """
        Fetch details about the successful transaction from PayPal.
        We use these details to show a preview of the order with a 'submit' button to place it.
        The preview step can be skipped with `PAYPAL_BUYER_PAYS_ON_PAYPAL=True` inside settings.
        """
        try:
            self.payer_id = request.GET['PayerID']
            self.token = request.GET['token']
        except KeyError:
            # Manipulation - redirect to basket page with warning message
            logger.warning("Missing GET params on success response page")
            messages.error(self.request,
                           _("Unable to determine PayPal transaction details"))
            return redirect('basket:summary')

        try:
            self.txn = fetch_transaction_details(self.token)
        except PayPalError as e:
            logger.warning(
                "Unable to fetch transaction details for token %s: %s",
                self.token, e)
            messages.error(self.request, self.error_message)
            return redirect('basket:summary')

        # Reload frozen basket which is specified in the URL
        kwargs['basket'] = self.load_frozen_basket(kwargs['basket_id'])
        if not kwargs['basket']:
            logger.warning("Unable to load frozen basket with ID %s",
                           kwargs['basket_id'])
            messages.error(
                self.request,
                _("No basket was found that corresponds to your PayPal transaction"
                  ))
            return redirect('basket:summary')

        if buyer_pays_on_paypal():
            return self.submit(**self.build_submission(
                basket=kwargs['basket']))

        logger.info(
            "Basket #%s - showing preview with payer ID %s and token %s",
            kwargs['basket'].id, self.payer_id, self.token)

        return super(SuccessResponseView, self).get(request, *args, **kwargs)
コード例 #8
0
 def fetch_paypal_data(self, payer_id, token):
     self.payer_id = payer_id
     self.token = token
     self.txn = fetch_transaction_details(token)
コード例 #9
0
 def perform_action(self):
     self.txn = fetch_transaction_details(self.token)
コード例 #10
0
ファイル: views.py プロジェクト: makielab/django-oscar-paypal
 def fetch_paypal_data(self, payer_id, token):
     self.payer_id = payer_id
     self.token = token
     self.txn = fetch_transaction_details(token)
コード例 #11
0
    def get(self, request, *args, **kwargs):
        """
        Fetch details about the successful transaction from PayPal.  We use
        these details to show a preview of the order with a 'submit' button to
        place it.
        """
        # wir pruefen ob schon eine Order mit der basket_id gibt, wenn ja
        # ist dies ein Hinweis auf einen PayPal Error (10486)
        try:
            order = Order.objects.get(basket_id=kwargs["basket_id"])
        except Order.DoesNotExist:
            order = None
        try:
            self.payer_id = request.GET['PayerID']
            self.token = request.GET['token']
        except KeyError:
            # Manipulation - redirect to basket page with warning message
            logger.warning("Missing GET params on success response page")
            messages.error(self.request,
                           _("Unable to determine PayPal transaction details"))
            return HttpResponseRedirect(reverse('basket:summary'))

        try:
            self.txn = fetch_transaction_details(self.token)
        except PayPalError as e:
            logger.warning(
                "Unable to fetch transaction details for token %s: %s",
                self.token, e)
            messages.error(
                self.request,
                _("A problem occurred communicating with PayPal - please try again later"
                  ))

            if not order:
                # keine Order -> Basket
                return HttpResponseRedirect(reverse('basket:summary'))
            else:
                # order -> Order
                return HttpResponseRedirect(
                    reverse('customer:order',
                            kwargs={"order_number": order.number}))

        if order:
            # redirect to handle_paypal_payment
            return HttpResponseRedirect(
                reverse('paypal-handle-payment',
                        kwargs={
                            "order_number": order.number,
                            "payer_id": self.payer_id,
                            "token": self.token,
                            "amount": self.txn.amount,
                            "currency": self.txn.currency,
                        }))

        # Reload frozen basket which is specified in the URL
        kwargs['basket'] = self.load_frozen_basket(kwargs['basket_id'])
        if not kwargs['basket']:
            logger.warning("Unable to load frozen basket with ID %s",
                           kwargs['basket_id'])
            messages.error(
                self.request,
                _("No basket was found that corresponds to your "
                  "PayPal transaction"))
            return HttpResponseRedirect(reverse('basket:summary'))

        logger.info(
            "Basket #%s - showing preview with payer ID %s and token %s",
            kwargs['basket'].id, self.payer_id, self.token)

        return super(SuccessResponseView, self).get(request, *args, **kwargs)
コード例 #12
0
 def perform_action(self):
     self.txn = fetch_transaction_details(self.token)
コード例 #13
0
 def fetch_paypal_data(self, payer_id, token):
     self.payer_id = payer_id
     self.token = token
     self.txn = fetch_transaction_details(token, **self.get_gateway_kwargs())