From 848730bdbc1e1b2c81274385d85fd385422323d8 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 30 Nov 2015 23:51:15 -0500 Subject: use_stored_credit_card --- StoneIsland/www/js/lib/cart/CartPayment.js | 56 +++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 17 deletions(-) (limited to 'StoneIsland/www/js/lib/cart/CartPayment.js') diff --git a/StoneIsland/www/js/lib/cart/CartPayment.js b/StoneIsland/www/js/lib/cart/CartPayment.js index fec5e1d1..222e2ac9 100644 --- a/StoneIsland/www/js/lib/cart/CartPayment.js +++ b/StoneIsland/www/js/lib/cart/CartPayment.js @@ -9,6 +9,7 @@ var CartPayment = FormView.extend({ address_list_mode: false, cc_list_mode: false, + data: {}, events: { "change [name=SameAsShipping]": "toggle_shipping", @@ -28,6 +29,7 @@ var CartPayment = FormView.extend({ this.$cc_list = this.$(".cc_list") this.$cc_form = this.$(".cc") this.$cc_dropdown = this.$(".cc_dropdown") + this.$cc_confirm = this.$(".cc_confirm") this.address = new AddressView ({ parent: this, checkPhone: false }) this.cc = new CreditCardView ({ parent: this }) @@ -75,6 +77,7 @@ var CartPayment = FormView.extend({ this.cc.disabled = this.cc_list_mode this.$cc_form.toggle(! this.cc_list_mode) this.$cc_list.toggle(this.cc_list_mode) + this.$cc_confirm.toggle(this.cc_list_mode) }, populate: function(){ @@ -107,37 +110,56 @@ var CartPayment = FormView.extend({ }, finalize: function(data){ - var shipping_info = {}, address_data, address_id, cc_info = {}, cc_data, cc_id + var shipping_info = {}, address_data, address_id, cc_info = {}, cc_data, cc_id var shipping_type = $("[name=ShippingType]").filter(function(){ return $(this).prop("checked") }).val() - if (this.list_mode) { - address_id = $("[name=AddressId]").filter(function(){ return $(this).prop("checked") }).val() + if (this.address_list_mode) { + address_id = this.$("[name=AddressId]").filter(function(){ return $(this).prop("checked") }).val() address_data = app.account.addressLookup[ address_id ] } else { address_data = data } + if (this.cc_list_mode) { - cc_id = $("[name=CCId]").filter(function(){ return $(this).prop("checked") }).val() + cc_id = this.$("[name=CCId]").filter(function(){ return $(this).prop("checked") }).val() cc_data = app.account.ccLookup[ cc_id ] + + var card_on_file = { + "guid": cc_data.Guid, + "cvv": this.$("[name=CvvConfirm]"), + } + app.curtain.show("loading") + promise(sdk.cart.use_stored_credit_card, { data: card_on_file }).then(function(data){ + app.curtain.hide("loading") + this.success() + }.bind(this)).error(function(data){ + app.curtain.hide("loading") + }.bind(this)) + + return } else { cc_data = data } - shipping_info.Name = address_data.Name - shipping_info.Surname = address_data.Surname - shipping_info.Email = auth.user.Email - shipping_info.Phone = address_data.Phone - shipping_info.Mobile = address_data.Phone - shipping_info.StreetWithNumber = address_data.Address - shipping_info.PostalCode = address_data.ZipCode - shipping_info.City = address_data.City - shipping_info.Province = address_data.Province - shipping_info.Region = address_data.Province - shipping_info.CountryCode = "US" - - return shipping_info + var credit_info = { + "HolderName": address_data.Name, + "HolderSurname": address_data.Surname, + "HolderAddress": address_data.Adress, + "HolderCity": address_data.City, + "HolderProvince": address_data.Province, + "HolderZip": address_data.ZipCode, + "HolderISOCountry": CANADIAN_LOOKUP[ address_data.Province ] ? "CA" : "US", + "HolderEmail": auth.user.Email, + "CardNumber": "", + "Type": cc_data.Type, + "ExpirationMonth": cc_data.ExpirationMonth, + "ExpirationYear": cc_data.ExpirationYear, + "Cvv": cc_data.Cvv, + } + + return credit_info }, success: function(){ -- cgit v1.2.3-70-g09d2 From 881c5de5b7709d06e88fdf554a021b8f1eddb9ed Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 30 Nov 2015 23:58:19 -0500 Subject: more cart --- StoneIsland/www/css/nav.css | 5 +++++ StoneIsland/www/js/lib/cart/CartPayment.js | 9 ++++++++- StoneIsland/www/js/lib/cart/CartSummary.js | 2 +- StoneIsland/www/js/lib/nav/CreditCardView.js | 1 + StoneIsland/www/js/lib/view/Serializable.js | 8 +++++--- 5 files changed, 20 insertions(+), 5 deletions(-) (limited to 'StoneIsland/www/js/lib/cart/CartPayment.js') diff --git a/StoneIsland/www/css/nav.css b/StoneIsland/www/css/nav.css index 61834f8b..814a8c3f 100644 --- a/StoneIsland/www/css/nav.css +++ b/StoneIsland/www/css/nav.css @@ -334,3 +334,8 @@ h1 { letter-spacing: 1px; font-weight: bold; } + +.msg { + padding: 20px; + display: inline-block; +} diff --git a/StoneIsland/www/js/lib/cart/CartPayment.js b/StoneIsland/www/js/lib/cart/CartPayment.js index 222e2ac9..e65c7e8e 100644 --- a/StoneIsland/www/js/lib/cart/CartPayment.js +++ b/StoneIsland/www/js/lib/cart/CartPayment.js @@ -52,6 +52,7 @@ var CartPayment = FormView.extend({ setTimeout(function(){ var state = this.$same_as_shipping.prop("checked") this.$billing_address_rapper.toggle( ! state ) + this.address.disabled = state }.bind(this)) }, @@ -113,7 +114,10 @@ var CartPayment = FormView.extend({ var shipping_info = {}, address_data, address_id, cc_info = {}, cc_data, cc_id var shipping_type = $("[name=ShippingType]").filter(function(){ return $(this).prop("checked") }).val() - if (this.address_list_mode) { + if (this.$same_as_shipping.prop("checked")) { + address_data = app.cart.shipping.data + } + else if (this.address_list_mode) { address_id = this.$("[name=AddressId]").filter(function(){ return $(this).prop("checked") }).val() address_data = app.account.addressLookup[ address_id ] } @@ -129,6 +133,9 @@ var CartPayment = FormView.extend({ "guid": cc_data.Guid, "cvv": this.$("[name=CvvConfirm]"), } + + console.log("got card on file") + app.curtain.show("loading") promise(sdk.cart.use_stored_credit_card, { data: card_on_file }).then(function(data){ app.curtain.hide("loading") diff --git a/StoneIsland/www/js/lib/cart/CartSummary.js b/StoneIsland/www/js/lib/cart/CartSummary.js index 72c44405..cfd34bd7 100644 --- a/StoneIsland/www/js/lib/cart/CartSummary.js +++ b/StoneIsland/www/js/lib/cart/CartSummary.js @@ -133,7 +133,7 @@ var CartSummary = ScrollableView.extend({ updateTotals: function(){ var subtotal = this.data.Cart.Totals.TotalWithoutPromotions var shipping_cost = this.data.Cart.DeliveryMethod.Selected.Amount.Total - var tax = 0 + var tax = this.data.Cart.Totals.TotalSalesTax var total = this.data.Cart.Totals.TotalToPay this.$subtotal.html( as_cash(subtotal) ) diff --git a/StoneIsland/www/js/lib/nav/CreditCardView.js b/StoneIsland/www/js/lib/nav/CreditCardView.js index ba3ac54a..63784618 100644 --- a/StoneIsland/www/js/lib/nav/CreditCardView.js +++ b/StoneIsland/www/js/lib/nav/CreditCardView.js @@ -40,6 +40,7 @@ var CreditCardView = SerializableView.extend({ }, validate_fields: function(data, errors){ + if (this.disabled) { return } var card = this.$number.validateCreditCard(this.cardOptions) if (! card.valid) { errors.push([ "Number", "Your card number is invalid." ]) } if (! data.ExpirationMonth || data.ExpirationMonth == "NONE") { errors.push([ "ExpirationMonth", "Please enter the expiration month." ]) } diff --git a/StoneIsland/www/js/lib/view/Serializable.js b/StoneIsland/www/js/lib/view/Serializable.js index b1e095d3..6ef8eda3 100644 --- a/StoneIsland/www/js/lib/view/Serializable.js +++ b/StoneIsland/www/js/lib/view/Serializable.js @@ -68,9 +68,11 @@ var SerializableView = View.extend({ var data = data || this.serialize() var errors = errors || [] var presence_msgs = this.validate_presence || {} - Object.keys(presence_msgs).forEach(function(k){ - if (! data[k]) errors.push( [ k, presence_msgs[k] ] ) - }) + if (! this.disabled) { + Object.keys(presence_msgs).forEach(function(k){ + if (! data[k]) errors.push( [ k, presence_msgs[k] ] ) + }) + } this.validate_fields && this.validate_fields(data, errors) this.cc && this.cc.validate(data, errors) this.address && this.address.validate(data, errors) -- cgit v1.2.3-70-g09d2 From 7b14d7a87af7d0bb9563672b5880c2a4042509d2 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 1 Dec 2015 00:35:28 -0500 Subject: load cart shipping from api --- StoneIsland/www/js/lib/cart/CartConfirm.js | 4 ++++ StoneIsland/www/js/lib/cart/CartPayment.js | 4 +--- StoneIsland/www/js/lib/cart/CartShipping.js | 15 +++++++++++++++ StoneIsland/www/js/lib/cart/CartSummary.js | 4 ++++ 4 files changed, 24 insertions(+), 3 deletions(-) (limited to 'StoneIsland/www/js/lib/cart/CartPayment.js') diff --git a/StoneIsland/www/js/lib/cart/CartConfirm.js b/StoneIsland/www/js/lib/cart/CartConfirm.js index aa6ec9e4..8a6b3c0e 100644 --- a/StoneIsland/www/js/lib/cart/CartConfirm.js +++ b/StoneIsland/www/js/lib/cart/CartConfirm.js @@ -16,9 +16,13 @@ var CartConfirm = FormView.extend({ app.footer.show("PLACE ORDER", "CANCEL") window.location.hash = "#/cart/confirm" this.deferScrollToTop() + + app.curtain.show("loading") + promise(sdk.cart.get_status).then( this.populate.bind(this) ) }, populate: function(){ + app.curtain.hide("loading") }, save: function(){ diff --git a/StoneIsland/www/js/lib/cart/CartPayment.js b/StoneIsland/www/js/lib/cart/CartPayment.js index e65c7e8e..749594bc 100644 --- a/StoneIsland/www/js/lib/cart/CartPayment.js +++ b/StoneIsland/www/js/lib/cart/CartPayment.js @@ -134,8 +134,6 @@ var CartPayment = FormView.extend({ "cvv": this.$("[name=CvvConfirm]"), } - console.log("got card on file") - app.curtain.show("loading") promise(sdk.cart.use_stored_credit_card, { data: card_on_file }).then(function(data){ app.curtain.hide("loading") @@ -159,7 +157,7 @@ var CartPayment = FormView.extend({ "HolderZip": address_data.ZipCode, "HolderISOCountry": CANADIAN_LOOKUP[ address_data.Province ] ? "CA" : "US", "HolderEmail": auth.user.Email, - "CardNumber": "", + "CardNumber": cc_data['Number'], "Type": cc_data.Type, "ExpirationMonth": cc_data.ExpirationMonth, "ExpirationYear": cc_data.ExpirationYear, diff --git a/StoneIsland/www/js/lib/cart/CartShipping.js b/StoneIsland/www/js/lib/cart/CartShipping.js index ec9394da..dfc5cb3a 100644 --- a/StoneIsland/www/js/lib/cart/CartShipping.js +++ b/StoneIsland/www/js/lib/cart/CartShipping.js @@ -54,6 +54,21 @@ var CartShipping = FormView.extend({ }.bind(this)) }, + load_form: function(cart_data){ + var data = cart_data.Cart.Receiver + var addy = data.StreetWithNumber.split("\n") + data.Address1 = addy[0] || "" + data.Address2 = addy[1] || "" + data.ZipCode = data.PostalCode + data.Province = data.Region + this.load_data(data) + + if (cart_data.DeliveryMethod.Selected && cart_data.DeliveryMethod.Type) { + $("#standard-shipping").prop("checked", cart_data.DeliveryMethod.Type == 1) + $("#express-shipping").prop("checked", cart_data.DeliveryMethod.Type == 2) + } + }, + toggle_dropdown: function(state){ if (! app.account.addresses.length) { state = false diff --git a/StoneIsland/www/js/lib/cart/CartSummary.js b/StoneIsland/www/js/lib/cart/CartSummary.js index cfd34bd7..0ad57020 100644 --- a/StoneIsland/www/js/lib/cart/CartSummary.js +++ b/StoneIsland/www/js/lib/cart/CartSummary.js @@ -119,6 +119,10 @@ var CartSummary = ScrollableView.extend({ }.bind(this)) }.bind(this)) + if (data.Cart.Receiver && data.Cart.Receiver.City) { + app.cart.shipping.load_form( data ) + } + this.updateTotals() this.el.className = "full" -- cgit v1.2.3-70-g09d2 From 3078a4c252135f7e8e15389522b0d5c79fc3bd8e Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Tue, 1 Dec 2015 00:41:20 -0500 Subject: advance to confirm page --- StoneIsland/www/js/lib/cart/CartPayment.js | 8 +++++--- StoneIsland/www/js/lib/cart/CartShipping.js | 7 ++++--- 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'StoneIsland/www/js/lib/cart/CartPayment.js') diff --git a/StoneIsland/www/js/lib/cart/CartPayment.js b/StoneIsland/www/js/lib/cart/CartPayment.js index 749594bc..11d6cddf 100644 --- a/StoneIsland/www/js/lib/cart/CartPayment.js +++ b/StoneIsland/www/js/lib/cart/CartPayment.js @@ -151,18 +151,20 @@ var CartPayment = FormView.extend({ var credit_info = { "HolderName": address_data.Name, "HolderSurname": address_data.Surname, - "HolderAddress": address_data.Adress, + "HolderAddress": address_data.Address || address_data.StreetWithNumber, "HolderCity": address_data.City, "HolderProvince": address_data.Province, - "HolderZip": address_data.ZipCode, + "HolderZip": address_data.PostalCode || address_data.ZipCode, "HolderISOCountry": CANADIAN_LOOKUP[ address_data.Province ] ? "CA" : "US", "HolderEmail": auth.user.Email, "CardNumber": cc_data['Number'], "Type": cc_data.Type, "ExpirationMonth": cc_data.ExpirationMonth, - "ExpirationYear": cc_data.ExpirationYear, + "ExpirationYear": cc_data.ExpirationYear.substr(2,3), "Cvv": cc_data.Cvv, } + + console.log( credit_info ) return credit_info }, diff --git a/StoneIsland/www/js/lib/cart/CartShipping.js b/StoneIsland/www/js/lib/cart/CartShipping.js index dfc5cb3a..ef906804 100644 --- a/StoneIsland/www/js/lib/cart/CartShipping.js +++ b/StoneIsland/www/js/lib/cart/CartShipping.js @@ -63,9 +63,10 @@ var CartShipping = FormView.extend({ data.Province = data.Region this.load_data(data) - if (cart_data.DeliveryMethod.Selected && cart_data.DeliveryMethod.Type) { - $("#standard-shipping").prop("checked", cart_data.DeliveryMethod.Type == 1) - $("#express-shipping").prop("checked", cart_data.DeliveryMethod.Type == 2) + this.data = data + if (cart_data.Cart.DeliveryMethod && cart_data.Cart.DeliveryMethod.Selected && cart_data.Cart.DeliveryMethod.Type) { + $("#standard-shipping").prop("checked", cart_data.Cart.DeliveryMethod.Type == 1) + $("#express-shipping").prop("checked", cart_data.Cart.DeliveryMethod.Type == 2) } }, -- cgit v1.2.3-70-g09d2