def checkout_manual_payment(request): from payments.models import ManualPaymentShopSettings id = request.POST.get("manual_payment_id", None) payment = get_object_or_404(ManualPaymentShopSettings, pk=id) if request.method == "POST": cart = request.cart #### Verify Products Availability if not cart.is_available(): request.flash['message'] = 'Items not longer available: ' for item in cart.items_not_availables(): request.flash['message'] += item.product.title cart.remove_not_available_items() return HttpResponseRedirect(reverse('my_shopping')) sell = cart.close(payment_method="%s - %s" % ('Manual Payment', payment.name)) return HttpResponse(my_render(request, {'instructions': payment.instructions, 'page_title': 'Manual payment', 'page_description': 'Manual payment' }, 'manual_payment'))
def checkout_manual_payment(request): from payments.models import ManualPaymentShopSettings id = request.POST.get("manual_payment_id", None) payment = get_object_or_404(ManualPaymentShopSettings, pk=id) if request.method == "POST": cart = request.cart #### Verify Products Availability if not cart.is_available(): request.flash['message'] = 'Items not longer available: ' for item in cart.items_not_availables(): request.flash['message'] += item.product.title cart.remove_not_available_items() return HttpResponseRedirect(reverse('my_shopping')) sell = cart.close(payment_method="%s - %s" % ('Manual Payment', payment.name)) return HttpResponse( my_render( request, { 'instructions': payment.instructions, 'page_title': 'Manual payment', 'page_description': 'Manual payment' }, 'manual_payment'))
def checkout_shipping(request): from sell.forms import ShippingDataForm if request.method == 'POST': shipping_form = ShippingDataForm(data=request.POST) if shipping_form.is_valid(): #profile = request.user.get_profile() cart = request.cart try: oldshipping = cart.shippingdata cart.shippingdata = None cart.save() oldshipping.delete() except: pass shipping = shipping_form.save(commit=False) shipping.save() cart.shippingdata = shipping cart.save() return HttpResponseRedirect(reverse("myshopping_checkout_confirm")) else: #initial = {'street_address': '13444 Main Street', 'city': 'Springfield', 'state' : 'Maryland', 'zip': '20104', 'country' : 'USA' } shipping_form = ShippingDataForm() return HttpResponse(my_render(request, {'form_shipping': shipping_form.as_p(), 'page_title': 'Shipping', 'page_description': 'Shipping', 'url_home' : reverse("home"), }, 'shipping'))
def register(request): #TODO: transaction form = BidderForm(request, request.POST or None) if form.is_valid(): #Generate user user = User.objects.create_user(form.cleaned_data["username"], form.cleaned_data["email"], form.cleaned_data["password1"]) # user.first_name = form.cleaned_data["first_name"] # user.last_name = form.cleaned_data["last_name"] # user.is_active = False user.save() # """ Set cart """ # cart = Cart(bidder=user) # cart.save() """ Set profile """ profile = Profile(user=user) # profile.street_address = form.cleaned_data["street_address"] # profile.city = form.cleaned_data["city"] # profile.state = form.cleaned_data["state"] # profile.zip = form.cleaned_data["zip"] # profile.country = form.cleaned_data["country"] # profile.phone = form.cleaned_data["phone"] # profile.photo = form.cleaned_data["photo"] # profile.birth = datetime.date( # int(form.cleaned_data['year']), # int(form.cleaned_data['month']), # int(form.cleaned_data['day']), # ) profile.save() """ Send mail to confirm account """ email_verify = EmailVerify(user=user, user_activation=True) code = email_verify.generate_code() email_verify.save() #send_mail_account_confirmation(user, email_verify.code, request.shop.name_shop(), request.get_host()) return HttpResponseRedirect(reverse('confirmemail', args=[code])) #return HttpResponseRedirect(reverse('welcome')) print form.errors t = loader.get_template('users/blocks/register.html') c = RequestContext(request, {'form': form}) block_register = (t.render(c)) return HttpResponse(my_render(request, {'register': block_register, 'page_title': 'Register', 'page_description': 'Register' }, 'register'))
def welcome(request): #def welcome(request, template_name='users/welcome.html'): # t = loader.get_template('users/blocks/welcome.html') # c = RequestContext(request, {}) # block_welcome = (t.render(c)) return HttpResponse(my_render(request, {'name_shop': request.shop.name_shop, 'page_title': 'Welcome', 'page_description': 'Welcome', }, 'welcome'))
def register(request): #TODO: transaction form = BidderForm(request, request.POST or None) if form.is_valid(): #Generate user user = User.objects.create_user(form.cleaned_data["username"], form.cleaned_data["email"], form.cleaned_data["password1"]) # user.first_name = form.cleaned_data["first_name"] # user.last_name = form.cleaned_data["last_name"] # user.is_active = False user.save() # """ Set cart """ # cart = Cart(bidder=user) # cart.save() """ Set profile """ profile = Profile(user=user) # profile.street_address = form.cleaned_data["street_address"] # profile.city = form.cleaned_data["city"] # profile.state = form.cleaned_data["state"] # profile.zip = form.cleaned_data["zip"] # profile.country = form.cleaned_data["country"] # profile.phone = form.cleaned_data["phone"] # profile.photo = form.cleaned_data["photo"] # profile.birth = datetime.date( # int(form.cleaned_data['year']), # int(form.cleaned_data['month']), # int(form.cleaned_data['day']), # ) profile.save() """ Send mail to confirm account """ email_verify = EmailVerify(user=user, user_activation=True) code = email_verify.generate_code() email_verify.save() #send_mail_account_confirmation(user, email_verify.code, request.shop.name_shop(), request.get_host()) return HttpResponseRedirect(reverse('confirmemail', args=[code])) #return HttpResponseRedirect(reverse('welcome')) print form.errors t = loader.get_template('users/blocks/register.html') c = RequestContext(request, {'form': form}) block_register = (t.render(c)) return HttpResponse( my_render( request, { 'register': block_register, 'page_title': 'Register', 'page_description': 'Register' }, 'register'))
def welcome(request): #def welcome(request, template_name='users/welcome.html'): # t = loader.get_template('users/blocks/welcome.html') # c = RequestContext(request, {}) # block_welcome = (t.render(c)) return HttpResponse( my_render( request, { 'name_shop': request.shop.name_shop, 'page_title': 'Welcome', 'page_description': 'Welcome', }, 'welcome'))
def my_shopping(request): my_cart = request.cart my_orders = Sell.objects.filter(shop=request.shop, bidder=request.user) cart_list = [] for item in my_cart.cartitem_set.all(): # the product could be removed by the admin if item.product == None: my_cart.remove(item) continue if item.product.type() == "Item": #url = reverse('bidding_view_item', args=[item.product.id]) url_remove = reverse('remove_from_cart', args=[item.id]) else: #url = reverse('bidding_view_lot', args=[item.product.id]) url_remove = '' image = item.product.image() cart_list.append({ 'url': item.product.get_bidding_url(), 'title': item.product.title, #'image': item.product.image().image.url_100x100 if item.product.image() else None, 'price': money_format(item.price, request.shop), 'qty': item.qty, 'sub_total': money_format(item.sub_total(), request.shop), 'can_remove': (item.product.type() == "Item"), 'url_remove': url_remove, 'image': { 'original': image.image.url if image else None, 'small': image.image.url_100x100 if image else None, 'medium': image.image.url_400x400 if image else None, } }) param = { 'cart_items': cart_list, 'total_cart': money_format(my_cart.total(), request.shop), 'total': money_format(my_cart.total(), request.shop), 'page_title': 'My Shopping', 'page_description': 'My Shopping', 'url_checkout': reverse('myshopping_checkout_shipping'), 'clean_cart_url': reverse('clean_cart'), } return HttpResponse(my_render(request, param, 'my_shopping'))
def checkout_shipping(request): from sell.forms import ShippingDataForm cart = request.cart if request.method == 'POST': shipping_form = ShippingDataForm(data=request.POST) if shipping_form.is_valid(): profile = request.user.profile try: oldshipping = cart.shippingdata cart.shippingdata = None cart.save() if shipping_form.save_shipping(): profile.update_shipping_info(shipping_form) oldshipping.delete() except: pass profile.update_user_info(shipping_form) shipping = shipping_form.save(commit=False) shipping.save() cart.shippingdata = shipping cart.save() return HttpResponseRedirect(reverse("myshopping_checkout_confirm")) else: initial = { 'first_name': cart.bidder.first_name, 'last_name': cart.bidder.last_name, 'street_address': cart.bidder.profile.street_address, 'city': cart.bidder.profile.city, 'state': cart.bidder.profile.state, 'zip': cart.bidder.profile.zip, 'country': cart.bidder.profile.country } shipping_form = ShippingDataForm(initial=initial) return HttpResponse( my_render( request, { 'form_shipping': shipping_form.as_p(), 'page_title': 'Shipping', 'page_description': 'Shipping', 'url_home': reverse("home"), }, 'shipping'))
def checkout_manual_payment(request): from payments.models import ManualPaymentShopSettings id = request.POST.get("manual_payment_id", None) payment = get_object_or_404(ManualPaymentShopSettings, pk=id) if request.method == "POST": cart = request.cart sell = cart.close(payment_method="%s - %s" % ('Manual Payment', payment.name)) return HttpResponse(my_render(request, {'instructions': payment.instructions, 'page_title': 'Manual payment', 'page_description': 'Manual payment' }, 'manual_payment'))
def checkout_shipping(request): from sell.forms import ShippingDataForm cart = request.cart if request.method == 'POST': shipping_form = ShippingDataForm(data=request.POST) if shipping_form.is_valid(): profile = request.user.profile try: oldshipping = cart.shippingdata cart.shippingdata = None cart.save() if shipping_form.save_shipping(): profile.update_shipping_info(shipping_form) oldshipping.delete() except: pass profile.update_user_info(shipping_form) shipping = shipping_form.save(commit=False) shipping.save() cart.shippingdata = shipping cart.save() return HttpResponseRedirect(reverse("myshopping_checkout_confirm")) else: initial = {'first_name': cart.bidder.first_name, 'last_name': cart.bidder.last_name, 'street_address': cart.bidder.profile.street_address, 'city': cart.bidder.profile.city, 'state' : cart.bidder.profile.state, 'zip': cart.bidder.profile.zip, 'country' : cart.bidder.profile.country } shipping_form = ShippingDataForm(initial=initial) return HttpResponse(my_render(request, {'form_shipping': shipping_form.as_p(), 'page_title': 'Shipping', 'page_description': 'Shipping', 'url_home' : reverse("home"), }, 'shipping'))
def my_shopping(request): my_cart = request.cart my_orders = Sell.objects.filter(shop=request.shop, bidder=request.user) cart_list = [] for item in my_cart.cartitem_set.all(): # the product could be removed by the admin if item.product == None: my_cart.remove(item) continue if item.product.type() == "Item": #url = reverse('bidding_view_item', args=[item.product.id]) url_remove = reverse('remove_from_cart', args=[item.id]) else: #url = reverse('bidding_view_lot', args=[item.product.id]) url_remove = '' image = item.product.image() cart_list.append({'url': item.product.get_bidding_url(), 'title': item.product.title, #'image': item.product.image().image.url_100x100 if item.product.image() else None, 'price': money_format(item.price, request.shop), 'qty': item.qty, 'sub_total': money_format(item.sub_total(), request.shop), 'can_remove': (item.product.type() == "Item"), 'url_remove': url_remove, 'image': {'original': image.image.url if image else None, 'small': image.image.url_100x100 if image else None, 'medium': image.image.url_400x400 if image else None, } }) param = { 'cart_items': cart_list, 'total_cart': money_format(my_cart.total(), request.shop), 'total': money_format(my_cart.total(), request.shop), 'page_title': 'My Shopping', 'page_description': 'My Shopping', 'url_checkout': reverse('myshopping_checkout_shipping'), 'clean_cart_url': reverse('clean_cart'), } return HttpResponse(my_render(request, param, 'my_shopping'))
def login(request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME): "Displays the login form and handles the login action." redirect_to = request.REQUEST.get(redirect_field_name, '') if request.method == "POST": form = AuthenticationForm(request=request, data=request.POST) if form.is_valid(): # Light security check -- make sure redirect_to isn't garbage. if not redirect_to or '//' in redirect_to or ' ' in redirect_to: redirect_to = settings.LOGIN_REDIRECT_URL #from django.contrib.auth import login from auth import login login(request, form.get_user()) if request.session.test_cookie_worked(): request.session.delete_test_cookie() return HttpResponseRedirect(redirect_to) else: form = AuthenticationForm(request) request.session.set_test_cookie() if Site._meta.installed: current_site = Site.objects.get_current() else: current_site = RequestSite(request) from django.template import loader from bidding.views import my_render t = loader.get_template(template_name) c = RequestContext( request, { 'form': form, redirect_field_name: redirect_to, 'site': current_site, 'site_name': current_site.name, }) block_login = (t.render(c)) return HttpResponse( my_render( request, { 'form_login': block_login, 'page_title': 'Login', 'page_description': 'Login' }, 'login'))
def login(request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME): "Displays the login form and handles the login action." redirect_to = request.REQUEST.get(redirect_field_name, '') if request.method == "POST": form = AuthenticationForm(request=request, data=request.POST) if form.is_valid(): # Light security check -- make sure redirect_to isn't garbage. if not redirect_to or '//' in redirect_to or ' ' in redirect_to: redirect_to = settings.LOGIN_REDIRECT_URL #from django.contrib.auth import login from auth import login login(request, form.get_user()) if request.session.test_cookie_worked(): request.session.delete_test_cookie() return HttpResponseRedirect(redirect_to) else: form = AuthenticationForm(request) request.session.set_test_cookie() if Site._meta.installed: current_site = Site.objects.get_current() else: current_site = RequestSite(request) from django.template import loader from bidding.views import my_render t = loader.get_template(template_name) c = RequestContext(request, { 'form': form, redirect_field_name: redirect_to, 'site': current_site, 'site_name': current_site.name, }) block_login = (t.render(c)) return HttpResponse(my_render(request, {'form_login': block_login, 'page_title': 'Login', 'page_description': 'Login' }, 'login'))
def success(request): from payments.gateways.paypal import PayPalGateway from payments.models import PayPalShopSettings, PayPalToken, PayPalTransaction from preferences.models import Preference from sell.templatetags.sell_tags import money_format cart = request.cart #### Verify Products Availability if not cart.is_available(): request.flash['message'] = 'Items not longer available: ' for item in cart.items_not_availables(): request.flash['message'] += item.product.title cart.remove_not_available_items() return HttpResponseRedirect(reverse('my_shopping')) if request.method == 'GET': payerid = request.GET.get('PayerID', None) token = request.GET.get('token', None) else: payerid = request.POST.get('PayerID', None) token = request.POST.get('token', None) if None in (token, payerid): request.flash['message'] = unicode(_("Payment failed, try other method.")) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) shop = request.shop paypal_settings = PayPalShopSettings.objects.filter(shop = shop).get() try: paypaltoken = PayPalToken.objects.filter(token=token).get() except PayPalToken.DoesNotExist: request.flash['message'] = unicode(_("Payment failed, try other method.")) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) if paypaltoken.confirmed == True: request.flash['message'] = unicode(_("Payment is already confirmed!")) request.flash['severity'] = "notice" return HttpResponseRedirect(reverse('my_shopping')) cart = paypaltoken.cart #currency = Preference.get_preference(shop).checkout_currency total_amount = "%0.2f" % cart.total_with_taxes() if request.method != 'POST': t = loader.get_template('payments/payment_paypal_confirm.html') c = RequestContext(request, { 'payerid': payerid, 'token': token, #'api_signature': settings.PAYPAL_SIGNATURE, #'api_user': settings.PAYPAL_USERNAME, #'api_password': settings.PAYPAL_PASSWORD }) block = (t.render(c)) param = {'total_amount': money_format(total_amount, shop), 'paypaltoken': paypaltoken, 'cart': cart, 'cancel_url': reverse('payments_cancel'), 'form_paypal_confirm': block, } return HttpResponse(my_render(request, param, 'payment_paypal_confirm')) action = request.POST.get('action', 'cancel').lower() if action == 'confirm': paypal_gw = PayPalGateway(username=settings.PAYPAL_USERNAME, password=settings.PAYPAL_PASSWORD, sign=settings.PAYPAL_SIGNATURE, debug=settings.PAYPAL_DEBUG) #return_url = request.build_absolute_uri(reverse("paypal_success")) #cancel_url = request.build_absolute_uri(reverse("paypal_cancel")) is_token_data = paypal_gw.GetExpressCheckoutDetails(paypaltoken.token, subject=paypal_settings.email) if not is_token_data: logging.critical("Error found when trying to do a GetExpressCheckoutDetails api call on Paypal. RESPONSE: %s" % paypal_gw.api_response) request.flash['message'] = unicode(_("Could not get transaction data from PayPal. Please contact admin to complete your purchase!")) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) ack = paypal_gw.api_response['ACK'][0] if ack != "Success": logging.critical("Paypal Api Response Failure. RESPONSE: %s" % paypal_gw.api_response) request.flash['message'] = unicode(_("There was an error when trying to get data from PayPal. Please contact admin to complete your purchase!")) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) try: amount = decimal.Decimal(paypal_gw.api_response['PAYMENTREQUEST_0_AMT'][0]) except KeyError: logging.critical("Fail when trying to read the payment amount. The API response don't have an AMT key. RESPONSE: %s" % paypal_gw.api_response) request.flash['message'] = unicode(_("We have found an error when trying to validate your purchase!")) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) if amount != cart.total_with_taxes(): request.flash['message'] = unicode(_("You have authorized us to charge you just $%s, but you want buy $%s! Please contact admin if you think this is a mistake!" % (amount, cart.total_with_taxes()))) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) payment_request = { 'PAYMENTREQUEST_0_PAYMENTACTION': 'Sale', 'PAYMENTREQUEST_0_AMT': "%0.2f" % cart.total_with_taxes(), #'PAYMENTREQUEST_0_TAXAMT': "%0.2f" % cart.taxes(), #'PAYMENTREQUEST_n_SHIPPINGAMT': "%0.2f" % cart.shipping_charge(), #'PAYMENTREQUEST_0_ITEMAMT': "%0.2f" % cart.total(), 'PAYMENTREQUEST_0_CURRENCYCODE': Preference.get_preference(shop).checkout_currency, 'PAYMENTREQUEST_0_NOTIFYURL': request.build_absolute_uri(reverse("payments_paypal_ipn")), 'SUBJECT': paypal_settings.email } success = paypal_gw.DoExpressCheckoutPayment(payment_request, paypaltoken.token, payerid) if success: #Close and clean the cart sell = cart.close("PayPal") #Set the sell payments as paid sell.payment.pay() paypaltoken.confirmed = True paypaltoken.save() # {'PAYMENTINFO_0_TRANSACTIONTYPE': 'expresscheckout', 'ACK': 'Success', 'PAYMENTINFO_0_PAYMENTTYPE': 'instant', 'PAYMENTINFO_0_REASONCODE': 'None', 'SHIPPINGOPTIONISDEFAULT': 'false', 'INSURANCEOPTIONSELECTED': 'false', 'CORRELATIONID': '8d20dfd3e3575', 'PAYMENTINFO_0_TAXAMT': '0.00', 'PAYMENTINFO_0_TRANSACTIONID': '6MH53467HE876651A', 'PAYMENTINFO_0_PENDINGREASON': 'None', 'PAYMENTINFO_0_AMT': '57.00', 'PAYMENTINFO_0_PROTECTIONELIGIBILITY': 'Ineligible', 'PAYMENTINFO_0_ERRORCODE': '0', 'TOKEN': 'EC-7MR99474WD5992801', 'VERSION': '63.0', 'SUCCESSPAGEREDIRECTREQUESTED': 'false', 'BUILD': '1482946', 'PAYMENTINFO_0_CURRENCYCODE': 'USD', 'PAYMENTINFO_0_FEEAMT': '1.95', 'TIMESTAMP': '2010-09-08T18:03:24Z', 'PAYMENTINFO_0_ACK': 'Success', 'PAYMENTINFO_0_ORDERTIME': '2010-09-08T18:03:23Z', 'PAYMENTINFO_0_PAYMENTSTATUS': 'Completed'} txn_id = paypal_gw.api_response['PAYMENTINFO_0_TRANSACTIONID'] transaction = PayPalTransaction() transaction.transaction_id = txn_id transaction.sell = sell transaction.save() return HttpResponseRedirect(reverse('payments_success')) else: request.flash['message'] = unicode(_("Payment Failed!")) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) else: paypaltoken.delete() request.flash['message'] = unicode(_("Payment cancel!")) request.flash['severity'] = "notice" return HttpResponseRedirect(reverse('my_shopping'))
def my_orders(request): my_orders = Sell.objects.filter(shop=request.shop, bidder=request.user) inner_q = BidHistory.objects.filter( bidder=request.user, lot__state='A').values_list('lot').distinct().query lots_in_auctions = Lot.objects.filter(pk__in=inner_q) bids_list = [] for lot in lots_in_auctions: history = [] for bid in lot.history(): history.append({ 'bidder_username': bid.bidder.username, 'bid_amount': money_format(bid.bid_amount, request.shop), 'bid_time': date(bid.bid_time, 'r'), }) image = lot.image() bids_list.append({ 'url': reverse('bidding_view_lot', args=[lot.id]), #'image': lot.image().image.url_100x100 if lot.image() else None, 'title': lot.title, 'is_active': lot.is_active(), 'count_bids': lot.count_bids(), 'current_bid': lot.current_bid(), 'time_left': lot.time_left(), 'history': history, 'image': { 'original': image.image.url if image else None, 'small': image.image.url_100x100 if image else None, 'medium': image.image.url_400x400 if image else None, } }) my_orders_list = [] for sell in my_orders: items = [] for item in sell.sellitem_set.all(): image = item.product.image() items.append({ #'image': item.product.image().image.url_100x100 if item.product.image() else None, 'url': item.product.get_bidding_url(), 'title': item.product.title, 'price': money_format(item.price, request.shop), 'image': { 'original': image.image.url if image else None, 'small': image.image.url_100x100 if image else None, 'medium': image.image.url_400x400 if image else None, } }) payment_history = [] for payment in sell.payment.paymenthistory_set.all(): payment_history.append({ 'date_time': date(payment.date_time, 'r'), 'state': payment.get_state_display(), }) shipping_history = [] for shipping in sell.shipping.shippinghistory_set.all(): shipping_history.append({ 'date_time': date(shipping.date_time, 'r'), 'state': shipping.get_state_display(), }) my_orders_list.append({ 'id': sell.id, 'date_time': date(sell.date_time, 'r'), 'total': money_format(sell.total, request.shop), 'payment_history': payment_history, 'shipping_history': shipping_history, 'item_set': items, }) param = { 'bids': bids_list, 'my_orders': my_orders_list, 'page_title': 'My Orders', 'page_description': 'My Orders', } return HttpResponse(my_render(request, param, 'my_orders'))
def success(request): from payments.gateways.paypal import PayPalGateway from payments.models import PayPalShopSettings, PayPalToken, PayPalTransaction from preferences.models import Preference from sell.templatetags.sell_tags import money_format if request.method == 'GET': payerid = request.GET.get('PayerID', None) token = request.GET.get('token', None) else: payerid = request.POST.get('PayerID', None) token = request.POST.get('token', None) if None in (token, payerid): request.flash['message'] = unicode(_("Payment failed, try other method.")) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) shop = request.shop paypal_settings = PayPalShopSettings.objects.filter(shop = shop).get() profile = request.user.get_profile() try: paypaltoken = PayPalToken.objects.filter(token=token).get() except PayPalToken.DoesNotExist: request.flash['message'] = unicode(_("Payment failed, try other method.")) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) if paypaltoken.confirmed == True: request.flash['message'] = unicode(_("Payment is already confirmed!")) request.flash['severity'] = "notice" return HttpResponseRedirect(reverse('my_shopping')) cart = paypaltoken.cart #currency = Preference.get_preference(shop).checkout_currency total_amount = "%0.2f" % cart.total_with_taxes() if request.method != 'POST': t = loader.get_template('payments/payment_paypal_confirm.html') c = RequestContext(request, { 'payerid': payerid, 'token': token, }) block = (t.render(c)) param = {'total_amount': money_format(total_amount, shop), 'paypaltoken': paypaltoken, 'cart': cart, 'cancel_url': reverse('payments_cancel'), 'form_paypal_confirm': block, } return HttpResponse(my_render(request, param, 'payment_paypal_confirm')) action = request.POST.get('action', 'cancel').lower() if action == 'confirm': paypal_gw = PayPalGateway(username=settings.PAYPAL_USERNAME, password=settings.PAYPAL_PASSWORD, sign=settings.PAYPAL_SIGNATURE, debug=settings.PAYPAL_DEBUG) token_data = paypal_gw.GetExpressCheckoutDetails("http://www.google.com", "http://www.google.com", paypaltoken.token) ack = paypal_gw.api_response['ACK'][0] try: amount = decimal.Decimal(paypal_gw.api_response['AMT'][0]) except KeyError: logging.critical("Fail when trying to read the payment amount. The API response don't have an AMT key. RESPONSE: %s" % paypal_gw.api_response) request.flash['message'] = unicode(_("We have found an error when trying to validate your purchase!")) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) if ack != "Success": request.flash['message'] = unicode(_("Fail when trying to validate your PayPal Token. Please contact admin to complete your purchase!")) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) if amount != cart.total_with_taxes(): request.flash['message'] = unicode(_("You have authorized us to charge you just $%s, but you want buy $%s! Please contact admin if you think this is a mistake!" % (amount, cart.total_with_taxes()))) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) payment_request = { 'PAYMENTREQUEST_0_PAYMENTACTION': 'Sale', 'PAYMENTREQUEST_0_AMT': "%0.2f" % cart.total_with_taxes(), #'PAYMENTREQUEST_0_TAXAMT': "%0.2f" % cart.taxes(), #'PAYMENTREQUEST_n_SHIPPINGAMT': "%0.2f" % cart.shipping_charge(), #'PAYMENTREQUEST_0_ITEMAMT': "%0.2f" % cart.total(), 'PAYMENTREQUEST_0_CURRENCYCODE': Preference.get_preference(shop).checkout_currency, 'PAYMENTREQUEST_0_NOTIFYURL': request.build_absolute_uri(reverse("payments_paypal_ipn")), 'SUBJECT': paypal_settings.email } success = paypal_gw.DoExpressCheckoutPayment(payment_request, paypaltoken.token, payerid) if success: #Close and clean the cart sell = cart.close("PayPal") #Set the sell payments as paid sell.payment.pay() paypaltoken.confirmed = True paypaltoken.save() # {'PAYMENTINFO_0_TRANSACTIONTYPE': 'expresscheckout', 'ACK': 'Success', 'PAYMENTINFO_0_PAYMENTTYPE': 'instant', 'PAYMENTINFO_0_REASONCODE': 'None', 'SHIPPINGOPTIONISDEFAULT': 'false', 'INSURANCEOPTIONSELECTED': 'false', 'CORRELATIONID': '8d20dfd3e3575', 'PAYMENTINFO_0_TAXAMT': '0.00', 'PAYMENTINFO_0_TRANSACTIONID': '6MH53467HE876651A', 'PAYMENTINFO_0_PENDINGREASON': 'None', 'PAYMENTINFO_0_AMT': '57.00', 'PAYMENTINFO_0_PROTECTIONELIGIBILITY': 'Ineligible', 'PAYMENTINFO_0_ERRORCODE': '0', 'TOKEN': 'EC-7MR99474WD5992801', 'VERSION': '63.0', 'SUCCESSPAGEREDIRECTREQUESTED': 'false', 'BUILD': '1482946', 'PAYMENTINFO_0_CURRENCYCODE': 'USD', 'PAYMENTINFO_0_FEEAMT': '1.95', 'TIMESTAMP': '2010-09-08T18:03:24Z', 'PAYMENTINFO_0_ACK': 'Success', 'PAYMENTINFO_0_ORDERTIME': '2010-09-08T18:03:23Z', 'PAYMENTINFO_0_PAYMENTSTATUS': 'Completed'} txn_id = paypal_gw.api_response['PAYMENTINFO_0_TRANSACTIONID'] transaction = PayPalTransaction() transaction.transaction_id = txn_id transaction.sell = sell transaction.save() return HttpResponseRedirect(reverse('payments_success')) else: request.flash['message'] = unicode(_("Payment Failed!")) request.flash['severity'] = "error" return HttpResponseRedirect(reverse('my_shopping')) else: paypaltoken.delete() request.flash['message'] = unicode(_("Payment cancel!")) request.flash['severity'] = "notice" return HttpResponseRedirect(reverse('my_shopping'))
def success(request): return HttpResponse(my_render(request, {}, 'payment_success'))
def my_orders(request): my_orders = Sell.objects.filter(shop=request.shop, bidder=request.user) inner_q = BidHistory.objects.filter(bidder=request.user, lot__state='A').values_list('lot').distinct().query lots_in_auctions = Lot.objects.filter(pk__in=inner_q) bids_list = [] for lot in lots_in_auctions: history = [] for bid in lot.history(): history.append({'bidder_username': bid.bidder.username, 'bid_amount': money_format(bid.bid_amount, request.shop), 'bid_time': date(bid.bid_time, 'r'), }) image = lot.image() bids_list.append({'url': reverse('bidding_view_lot', args=[lot.id]), #'image': lot.image().image.url_100x100 if lot.image() else None, 'title': lot.title, 'is_active': lot.is_active(), 'count_bids': lot.count_bids(), 'current_bid': lot.current_bid(), 'time_left': lot.time_left(), 'history': history, 'image': { 'original': image.image.url if image else None, 'small': image.image.url_100x100 if image else None, 'medium': image.image.url_400x400 if image else None, } }) my_orders_list = [] for sell in my_orders: items = [] for item in sell.sellitem_set.all(): image = item.product.image() items.append({ #'image': item.product.image().image.url_100x100 if item.product.image() else None, 'url': item.product.get_bidding_url(), 'title': item.product.title, 'price': money_format(item.price, request.shop), 'image': { 'original': image.image.url if image else None, 'small': image.image.url_100x100 if image else None, 'medium': image.image.url_400x400 if image else None, } }) payment_history = [] for payment in sell.payment.paymenthistory_set.all(): payment_history.append({ 'date_time': date(payment.date_time, 'r'), 'state': payment.get_state_display(), }) shipping_history = [] for shipping in sell.shipping.shippinghistory_set.all(): shipping_history.append({ 'date_time': date(shipping.date_time, 'r'), 'state': shipping.get_state_display(), }) my_orders_list.append({'id': sell.id, 'date_time': date(sell.date_time, 'r'), 'total': money_format(sell.total, request.shop), 'payment_history': payment_history, 'shipping_history': shipping_history, 'item_set': items, }) param = { 'bids': bids_list, 'my_orders': my_orders_list, 'page_title': 'My Orders', 'page_description': 'My Orders', } return HttpResponse(my_render(request, param, 'my_orders'))
def cancel(request): return HttpResponse(my_render(request, {}, 'payment_cancel'))
'zip': cart.shippingdata.zip, 'country': cart.shippingdata.country.upper(), }) cart_dic = {'cart_items': items, 'shippingdata': shippingdata, 'total': money_format(cart.total(), shop), 'taxes': money_format(cart.taxes(), shop), 'shipping_charge': money_format(cart.shipping_charge(), shop), 'total_with_taxes': money_format(cart.total_with_taxes(), shop), } return HttpResponse(my_render(request, {'cart': cart_dic, 'payment_buttons': payment_buttons, 'page_title': 'Confirm', 'page_description': 'Confirm', 'admin_email': shop.admin.email, }, 'confirm')) @shop_required def remove_from_cart(request, id): cartitem = get_object_or_404(CartItem, pk=id) cart = request.cart #cart.remove(cartitem) cart.remove_one(cartitem) request.flash['message'] = unicode(_("Product removed from your cart"))
}) cart_dic = { 'cart_items': items, 'shippingdata': shippingdata, 'total': money_format(cart.total(), shop), 'taxes': money_format(cart.taxes(), shop), 'shipping_charge': money_format(cart.shipping_charge(), shop), 'total_with_taxes': money_format(cart.total_with_taxes(), shop), } return HttpResponse( my_render( request, { 'cart': cart_dic, 'payment_buttons': payment_buttons, 'page_title': 'Confirm', 'page_description': 'Confirm', 'admin_email': shop.admin.email, }, 'confirm')) @shop_required def remove_from_cart(request, id): cartitem = get_object_or_404(CartItem, pk=id) cart = request.cart #cart.remove(cartitem) cart.remove_one(cartitem) request.flash['message'] = unicode(_("Product removed from your cart"))