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 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
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
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))
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))
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))
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
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))
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))
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
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()
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()