Example #1
0
		def get_paypal_settings(self, request, obj, amount):
			ct = ContentType.objects.get_for_model(obj)
			hash_args = [ct.app_label, ct.model, unicode(obj.id), unicode(request.user.id)]
			hash = payment_hash(*hash_args)
			custom = ':'.join(hash_args)
			site = Site.objects.get_current()
			return {
				'notify_url': 'http://%s%s' % (site.domain, reverse('paypal-ipn')),
				'cancel_return': 'http://%s%s' % (site.domain, reverse('%s_%s_payment_cancelled' % (self.admin_site.url_prefix, self.slug), kwargs={'object_id': obj.id})),
				'return_url': 'http://%s%s' % (site.domain, reverse('%s_%s_payment_complete' % (self.admin_site.url_prefix, self.slug), kwargs={'object_id': obj.id})),
				'item_number': hash,
				'custom': custom,
				'item_name': unicode(obj),
				'amount': amount
			}
Example #2
0
		def payment_complete_view(self, request, object_id):
			try:
				hash_args = request.POST['custom'].split(':')
				hash = payment_hash(*hash_args)
				if hash != request.POST['item_number']:
					messages.add_message(request, messages.ERROR, 'The security data on this post was tampered with, but your payment may have been processed. Check back!')
				else:
					try:
						Payment.objects.get(ipn__txn_id=request.POST['txn_id'])
					except Payment.DoesNotExist:
						messages.add_message(request, messages.SUCCESS, "Paypal has processed your payment, but it hasn't quite reached our system yet. Check back!")
					else:
						messages.add_message(request, messages.SUCCESS, "We've received your payment. Thanks and we'll see you there!")
			except:
				pass
			
			return HttpResponseRedirect(reverse("%s_%s_payment" % (self.admin_site.url_prefix, self.slug), kwargs={'object_id': object_id}))