def recurring(self, money, creditcard, options = None): if not options: options = {} params = {} params['profilestartdate'] = options.get('startdate') or datetime.datetime.now().strftime("%Y-%m-%dT00:00:00Z") params['startdate'] = options.get('startdate') or datetime.datetime.now().strftime("%m%Y") params['billingperiod'] = options.get('billingperiod') or 'Month' params['billingfrequency'] = options.get('billingfrequency') or '1' params['amt'] = money params['desc'] = 'description of the billing' params['creditcardtype'] = creditcard.card_type.card_name params['acct'] = creditcard.number params['expdate'] = '%02d%04d' % (creditcard.month, creditcard.year) params['firstname'] = creditcard.first_name params['lastname'] = creditcard.last_name wpp = PayPalWPP(options.get('request', {})) try: response = wpp.createRecurringPaymentsProfile(params, direct=True) transaction_was_successful.send(sender=self, type="purchase", response=response) except PayPalFailure, e: transaction_was_unsuccessful.send(sender=self, type="purchase", response=e) # Slight skewness because of the way django-paypal # is implemented. return {"status": "FAILURE", "response": e}
def process(self, request, item): """Process a PayPal direct payment.""" from paypal.pro.helpers import PayPalWPP wpp = PayPalWPP(request) params = self.cleaned_data params['creditcardtype'] = self.fields['acct'].card_type params['expdate'] = self.cleaned_data['expdate'].strftime("%m%Y") params['ipaddress'] = request.META.get("REMOTE_ADDR", "") params.update(item) try: # Create single payment: if 'billingperiod' not in params: nvp_obj = wpp.doDirectPayment(params) # Create recurring payment: else: if 'profileid' in params: # Updating a payment profile. nvp_obj = wpp.updateRecurringPaymentsProfile(params, direct=True) else: # Creating a payment profile. nvp_obj = wpp.createRecurringPaymentsProfile(params, direct=True) except PayPalFailure: return False return True
def process(self, request, item): """Process a PayPal direct payment.""" from paypal.pro.helpers import PayPalWPP wpp = PayPalWPP(request) params = self.cleaned_data params['creditcardtype'] = self.fields['acct'].card_type params['expdate'] = self.cleaned_data['expdate'].strftime("%m%Y") try: params['ipaddress'] = request.META["REMOTE_ADDR"] except KeyError: params['ipaddress'] = request.META.get("HTTP_X_FORWARDED_FOR", "0:0:0:0:0:0") params.update(item) try: # Create single payment: if 'billingperiod' not in params: nvp_obj = wpp.doDirectPayment(params) # Create recurring payment: else: nvp_obj = wpp.createRecurringPaymentsProfile(params, direct=True) except PayPalFailure: return False return True
def recurring(self, money, creditcard, options={}): # raise NotImplementedError params = {} params['profilestartdate'] = options.get( 'startdate') or datetime.datetime.now().strftime( "%Y-%m-%dT00:00:00Z") params['startdate'] = options.get( 'startdate') or datetime.datetime.now().strftime("%m%Y") params['billingperiod'] = options.get('billingperiod') or 'Month' params['billingfrequency'] = options.get('billingfrequency') or '1' params['amt'] = money params['desc'] = 'description of the billing' params['creditcardtype'] = creditcard.card_type.card_name params['acct'] = creditcard.number params['expdate'] = '%02d%04d' % (creditcard.month, creditcard.year) params['firstname'] = creditcard.first_name params['lastname'] = creditcard.last_name wpp = PayPalWPP(options.get('request', {})) try: response = wpp.createRecurringPaymentsProfile(params, direct=True) transaction_was_successful.send(sender=self, type="purchase", response=response) except PayPalFailure, e: transaction_was_unsuccessful.send(sender=self, type="purchase", response=e) # Slight skewness because of the way django-paypal # is implemented. return {"status": "FAILURE", "response": e}
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) # @@@ This check and call could be moved into PayPalWPP. try: if self.is_recurring(): wpp.createRecurringPaymentsProfile(self.item) else: wpp.doExpressCheckoutPayment(self.item) except PayPalFailure: self.context['errors'] = self.errors['processing'] return self.render_payment_form() else: return HttpResponseRedirect(self.success_url)
def process(self, request, item): """Process a PayPal direct payment.""" warn_untested() from paypal.pro.helpers import PayPalWPP wpp = PayPalWPP(request) params = self.cleaned_data params["creditcardtype"] = self.fields["acct"].card_type params["expdate"] = self.cleaned_data["expdate"].strftime("%m%Y") params["ipaddress"] = request.META.get("REMOTE_ADDR", "") params.update(item) try: # Create single payment: if "billingperiod" not in params: wpp.doDirectPayment(params) # Create recurring payment: else: wpp.createRecurringPaymentsProfile(params, direct=True) except PayPalFailure: return False return True
def process(self, request, item): """Process a PayPal direct payment.""" warn_untested() from paypal.pro.helpers import PayPalWPP from django.conf import settings import pdb; pdb.set_trace() wpp = PayPalWPP(request) params = self.cleaned_data params['creditcardtype'] = self.fields['acct'].card_type params['expdate'] = self.cleaned_data['expdate'].strftime("%m%Y") # params['ipaddress'] = 'https://%s' % settings.ALLOWED_HOSTS[0] params['ipaddress'] = request.META.get("REMOTE_ADDR", settings.ALLOWED_HOSTS[0]) params.update(item) try: # Create single payment: if 'billingperiod' not in params: wpp.doDirectPayment(params) # Create recurring payment: else: wpp.createRecurringPaymentsProfile(params, direct=True) except PayPalFailure: return False return True
def process(self, ipaddress, user, item): """Process a PayPal ExpressCheckout payment.""" from paypal.pro.helpers import PayPalWPP wpp = PayPalWPP(ipaddress, user) params = self.cleaned_data params.update(item) try: # Create single payment: if 'billingperiod' not in params: nvp_obj = wpp.doExpressCheckoutPayment(params) # Create recurring payment: else: nvp_obj = wpp.createRecurringPaymentsProfile(params) except PayPalFailure: return None return nvp_obj
def process(self, request, item): """Do a direct payment.""" from paypal.pro.helpers import PayPalWPP wpp = PayPalWPP(request) # Change the model information into a dict that PayPal can understand. params = model_to_dict(self, exclude=self.ADMIN_FIELDS) params['acct'] = self.acct params['creditcardtype'] = self.creditcardtype params['expdate'] = self.expdate params['cvv2'] = self.cvv2 params.update(item) # Create recurring payment: if 'billingperiod' in params: return wpp.createRecurringPaymentsProfile(params, direct=True) # Create single payment: else: return wpp.doDirectPayment(params)
def process(self, request, item): """Process a PayPal direct payment.""" from paypal.pro.helpers import PayPalWPP wpp = PayPalWPP(request) params = self.cleaned_data params['creditcardtype'] = self.fields['acct'].card_type params['expdate'] = self.cleaned_data['expdate'].strftime("%m%Y") params['ipaddress'] = request.META.get("REMOTE_ADDR", "") params.update(item) # Create single payment: if 'billingperiod' not in params: response = wpp.doDirectPayment(params) # Create recurring payment: else: response = wpp.createRecurringPaymentsProfile(params, direct=True) return response
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 process(self, ipaddress, user, item): """Process a PayPal direct payment.""" from paypal.pro.helpers import PayPalWPP wpp = PayPalWPP(ipaddress, user) params = self.cleaned_data params['creditcardtype'] = self.fields['acct'].card_type params['expdate'] = self.cleaned_data['expdate'].strftime("%m%Y") params['ipaddress'] = ipaddress params.update(item) try: # Create single payment: if 'billingperiod' not in params: nvp_obj = wpp.doDirectPayment(params) # Create recurring payment: else: nvp_obj = wpp.createRecurringPaymentsProfile(params, direct=True) except PayPalFailure: return None return nvp_obj
def process(self, request, item): """Do a direct payment.""" from paypal.pro.helpers import PayPalWPP wpp = PayPalWPP(request) # Change the model information into a dict that PayPal can understand. params = model_to_dict(self, exclude=self.ADMIN_FIELDS) params["ACCT"] = self.acct params["CREDITCARDTYPE"] = self.creditcardtype params["EXPDATE"] = self.expdate params["CVV2"] = self.cvv2 params.update(item) # Create recurring payment: if "BILLINGPERIOD" in params: return wpp.createRecurringPaymentsProfile(params, direct=True) # Create single payment: else: return wpp.doDirectPayment(params)
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()
def process(self, request, item): """ Do a direct payment. """ from paypal.pro.helpers import PayPalWPP wpp = PayPalWPP(request) params = self.cleaned_data params["creditcardtype"] = self.fields["acct"].card_type params["expdate"] = self.cleaned_data["expdate"].strftime("%m%Y") params["ipaddress"] = request.META.get("REMOTE_ADDR", "") params.update(item) # Create single payment: if "billingperiod" not in params: response = wpp.doDirectPayment(params) # Create recurring payment: else: response = wpp.createRecurringPaymentsProfile(params, direct=True) return response