Esempio n. 1
0
 def doDirectPayment(self, params):
     """Call PayPal DoDirectPayment method."""
     defaults = {"method": "DoDirectPayment", "paymentaction": "Sale"}
     required = ["creditcardtype",
                 "acct",
                 "expdate",
                 "cvv2",
                 "ipaddress",
                 "firstname",
                 "lastname",
                 "street",
                 "city",
                 "state",
                 "countrycode",
                 "zip",
                 "amt",
                 ]
     nvp_obj = self._fetch(params, required, defaults)
     if nvp_obj.flag:
         raise PayPalFailure(nvp_obj.flag_info, nvp=nvp_obj)
     payment_was_successful.send(sender=nvp_obj, **params)
     # @@@ Could check cvv2match / avscode are both 'X' or '0'
     # qd = django.http.QueryDict(nvp_obj.response)
     # if qd.get('cvv2match') not in ['X', '0']:
     #   nvp_obj.set_flag("Invalid cvv2match: %s" % qd.get('cvv2match')
     # if qd.get('avscode') not in ['X', '0']:
     #   nvp_obj.set_flag("Invalid avscode: %s" % qd.get('avscode')
     return nvp_obj
Esempio n. 2
0
 def doDirectPayment(self, params):
     """Call PayPal DoDirectPayment method."""
     defaults = {"method": "DoDirectPayment", "paymentaction": "Sale"}
     required = [
         "creditcardtype",
         "acct",
         "expdate",
         "cvv2",
         "ipaddress",
         "firstname",
         "lastname",
         "street",
         "city",
         "state",
         "countrycode",
         "zip",
         "amt",
     ]
     nvp_obj = self._fetch(params, required, defaults)
     if nvp_obj.flag:
         raise PayPalFailure(nvp_obj.flag_info, nvp=nvp_obj)
     payment_was_successful.send(sender=nvp_obj, **params)
     # @@@ Could check cvv2match / avscode are both 'X' or '0'
     # qd = django.http.QueryDict(nvp_obj.response)
     # if qd.get('cvv2match') not in ['X', '0']:
     #   nvp_obj.set_flag("Invalid cvv2match: %s" % qd.get('cvv2match')
     # if qd.get('avscode') not in ['X', '0']:
     #   nvp_obj.set_flag("Invalid avscode: %s" % qd.get('avscode')
     return nvp_obj
    def doExpressCheckoutPayment(self, params):
        """
        Check the dude out:
        """
        if "amt" in params:
            import warnings

            warnings.warn(
                "'amt' has been deprecated. 'paymentrequest_0_amt' "
                "should be used instead.", DeprecationWarning)
            # Make a copy so we don't change things unexpectedly
            params = params.copy()
            params.update({'paymentrequest_0_amt': params['amt']})
            del params['amt']
        defaults = {
            "method": "DoExpressCheckoutPayment",
            "paymentaction": "Sale"
        }
        required = [
            "returnurl", "cancelurl", "paymentrequest_0_amt", "token",
            "payerid"
        ]
        nvp_obj = self._fetch(params, required, defaults)
        if nvp_obj.flag:
            raise PayPalFailure(nvp_obj.flag_info)
        payment_was_successful.send(sender=nvp_obj, **params)
        return nvp_obj
Esempio n. 4
0
 def doExpressCheckoutPayment(self, params):
     """
     Check the dude out:
     """
     defaults = {"method": "DoExpressCheckoutPayment", "paymentaction": "Sale"}
     required = ["returnurl", "cancelurl", "amt", "token", "payerid"]
     nvp_obj = self._fetch(params, required, defaults)
     if nvp_obj.flag:
         raise PayPalFailure(nvp_obj.flag_info)
     payment_was_successful.send(params)
     return nvp_obj
Esempio n. 5
0
    def validate_payment_form(self):
        """Try to validate and then process the DirectPayment form."""
        form = self.payment_form_cls(self.request.POST)        
        if form.is_valid():
            success = form.process(self.request, self.item)
            if success:
                payment_was_successful.send(sender=self.item)
                return HttpResponseRedirect(self.success_url)
            else:
                self.context['errors'] = "There was an error processing your payment. Check your information and try again."

        self.context['form'] = form
        self.context.setdefault("errors", "Please correct the errors below and try again.")
        return render_to_response(self.payment_template, self.context, RequestContext(self.request))
Esempio n. 6
0
    def validate_payment_form(self):
        """Try to validate and then process the DirectPayment form."""
        form = self.payment_form_cls(self.request.POST)        
        if form.is_valid():
            success = form.process(self.request, self.item)
            if success:
                payment_was_successful.send(sender=self.item)
                return HttpResponseRedirect(self.success_url)
            else:
                self.context['errors'] = self.errors['processing']

        self.context[self.form_context_name] = form
        self.context.setdefault("errors", self.errors['form'])
        return render_to_response(self.payment_template, self.context, RequestContext(self.request))
Esempio n. 7
0
    def validate_payment_form(self):
        """Try to validate and then process the DirectPayment form."""
        form = self.payment_form_cls(self.request.POST)        
        if form.is_valid():
            success = form.process(self.request, self.item)
            if success:
                payment_was_successful.send(sender=self.item)
                return HttpResponseRedirect(self.success_url)
            else:
                self.context['errors'] = self.processing_error

        self.context[self.form_context_name] = form
        self.context.setdefault("errors", self.form_error)
        return render_to_response(self.payment_template, self.context, RequestContext(self.request))
Esempio n. 8
0
 def doExpressCheckoutPayment(self, params):
     """
     Check the dude out:
     """
     defaults = {
         "method": "DoExpressCheckoutPayment",
         "paymentaction": "Sale"
     }
     required = ["returnurl", "cancelurl", "amt", "token", "payerid"]
     nvp_obj = self._fetch(params, required, defaults)
     if nvp_obj.flag:
         raise PayPalFailure(nvp_obj.flag_info)
     payment_was_successful.send(params)
     return nvp_obj
Esempio n. 9
0
    def validate_payment_form(self):
        """Try to validate and then process the DirectPayment form."""
        form = self.payment_form_cls(self.request.POST)
        if form.is_valid():
            success = form.process(self.request, self.item)
            if success:
                payment_was_successful.send(sender=self.item)
                return HttpResponseRedirect(self.success_url)
            else:
                self.context[
                    'errors'] = "There was an error processing your payment. Check your information and try again."

        self.context['form'] = form
        self.context.setdefault(
            "errors", "Please correct the errors below and try again.")
        return render_to_response(self.payment_template, self.context,
                                  RequestContext(self.request))
Esempio n. 10
0
    def validate_payment_form(self):
        """
        Try a Direct Payment and if the form validates ask PayPal for the money.
        
        """
        form = self.payment_form_cls(self.request.POST)        
        if form.is_valid():
            success = form.process(self.request, self.item)
            if success:
                payment_was_successful.send(sender=self.item)
                return HttpResponseRedirect(self.success_url)
            else:
                self.context['errors'] = "There was an error processing your payment. Check your information and try again."

        # Failed, render the payment form w/ errors.
        self.context['form'] = form
        self.context.setdefault('errors', 'Please correct the errors below and try again.')
        return render_to_response(self.payment_template, self.context, RequestContext(self.request))
Esempio n. 11
0
    def doExpressCheckoutPayment(self, params):
        """
        Check the dude out:
        """
        if "amt" in params:
            import warnings

            warnings.warn("'amt' has been deprecated. 'paymentrequest_0_amt' "
                          "should be used instead.", DeprecationWarning)
            # Make a copy so we don't change things unexpectedly
            params = params.copy()
            params.update({'paymentrequest_0_amt': params['amt']})
            del params['amt']
        defaults = {"method": "DoExpressCheckoutPayment", "paymentaction": "Sale"}
        required = ["paymentrequest_0_amt", "token", "payerid"]
        nvp_obj = self._fetch(params, required, defaults)
        if nvp_obj.flag:
            raise PayPalFailure(nvp_obj.flag_info, nvp=nvp_obj)
        payment_was_successful.send(sender=nvp_obj, **params)
        return nvp_obj
Esempio n. 12
0
    def validate_confirm_form(self):
        """
        Third and final step of ExpressCheckout. Request has pressed the confirmation but
        and we can send the final confirmation to PayPal using the data from the POST'ed form.
        """
        wpp = PayPalWPP(self.request)
        pp_data = dict(token=self.request.POST['token'], payerid=self.request.POST['PayerID'])
        self.item.update(pp_data)
        
        if self.is_recurring:
            success = wpp.createRecurringPaymentsProfile(self.item)
        else:
            success = wpp.doExpressCheckoutPayment(self.item)

        if success:
            payment_was_successful.send(sender=self.item)
            return HttpResponseRedirect(self.success_url)
        else:
            self.context['errors'] = self.processing_error
            return self.render_payment_form()
Esempio n. 13
0
    def validate_confirm_form(self):
        """
        Final express flow step.
        User has pressed the confirm button and now we send it off to PayPal.
        
        """
        wpp = PayPalWPP(self.request)
        pp_data = dict(token=self.request.POST['token'], payerid=self.request.POST['PayerID'])
        self.item.update(pp_data)
        
        if self.is_recurring:
            success = wpp.createRecurringPaymentsProfile(self.item)
        else:
            success = wpp.doExpressCheckoutPayment(self.item)

        if success:
            payment_was_successful.send(sender=self.item)
            return HttpResponseRedirect(self.success_url)
        else:
            self.context['errors'] = "There was a problem processing the payment. Please check your information and try again."
            return self.render_payment_form()