diff options
Diffstat (limited to 'StoneIsland/platforms/android/assets/www/js/lib/cart/CartPayment.js')
| -rwxr-xr-x | StoneIsland/platforms/android/assets/www/js/lib/cart/CartPayment.js | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartPayment.js b/StoneIsland/platforms/android/assets/www/js/lib/cart/CartPayment.js new file mode 100755 index 00000000..f3c54d55 --- /dev/null +++ b/StoneIsland/platforms/android/assets/www/js/lib/cart/CartPayment.js @@ -0,0 +1,185 @@ +var CartPayment = FormView.extend({ + + el: "#cart_payment", + + address_template: $("#cart_payment .address_row_template").html(), + cc_template: $("#cart_payment .cc_template").html(), + + action: sdk.cart.set_credit_card, + + address_list_mode: false, + cc_list_mode: false, + data: {}, + + events: { + "change [name=SameAsShipping]": "toggle_shipping", + "click .address_dropdown": "toggle_address", + "click .cc_dropdown": "toggle_cc", + }, + + initialize: function(opt){ + this.parent = opt.parent + this.$form = this.$("form") + this.$msg = this.$(".msg") + this.$same_as_shipping = this.$("[name=SameAsShipping]") + this.$billing_address_rapper = this.$(".billing_address_rapper") + this.$address_list = this.$(".address_list") + this.$address_form = this.$(".address") + this.$address_dropdown = this.$(".address_dropdown") + 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 }) + this.scroller = new IScroll('#cart_payment', app.iscroll_options) + this.address.disabled = true + this.cc.disabled = true + }, + + show: function(){ + document.body.className = "cart" + app.cart.el.className = "payment" + app.footer.show("CONFIRM >", "CANCEL") + window.location.hash = "#/cart/payment" + + this.populate() + this.deferScrollToTop() + }, + + toggle_shipping: function(){ + setTimeout(function(){ + var state = this.$same_as_shipping.prop("checked") + this.$billing_address_rapper.toggle( ! state ) + this.address.disabled = state + }.bind(this)) + }, + + toggle_address: function(state){ + if (! app.account.ccs.length) { + state = false + } + // this.$address_dropdown.toggle( !! app.account.ccs.length ) + + this.address_list_mode = typeof state == "boolean" ? state : ! this.list_mode + this.address.disabled = this.address_list_mode + this.$address_form.toggle(! this.address_list_mode) + this.$address_list.toggle(this.address_list_mode) + }, + + toggle_cc: function(state){ + if (! app.account.ccs.length) { + state = false + } + // this.$cc_dropdown.toggle( !! app.account.ccs.length ) + + this.cc_list_mode = typeof state == "boolean" ? state : ! this.cc_list_mode + 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(){ + this.$(".save_as_default").show() + this.$address_list.empty() + this.$cc_list.empty() + this.toggle_address( !! app.account.ccs.length ) + this.toggle_cc( !! app.account.ccs.length ) + + app.account.ccs.forEach(function(cc){ + var address_t = this.address_template.replace(/{{id}}/g, cc.Id) + .replace(/{{checked}}/g, cc.IsDefault ? "checked" : "") + .replace(/{{name}}/g, (cc.Name + " " + cc.Surname).toUpperCase()) + .replace(/{{address}}/g, cc.Address.replace(/\n$/,"").replace("\n", ", ")) + .replace(/{{city}}/g, cc.City) + .replace(/{{state}}/g, cc.Province) + .replace(/{{zip}}/g, cc.ZipCode) + + var cc_t = this.cc_template.replace(/{{id}}/g, cc.Id) + .replace(/{{checked}}/g, cc.IsDefault ? "checked" : "") + .replace(/{{number}}/g, cc['Number']) + .replace(/{{type}}/g, cc.Type.toUpperCase()) + .replace(/{{exp}}/g, cc.ExpirationMonth + "/" + cc.ExpirationYear) + + this.$address_list.append(address_t) + this.$cc_list.append(cc_t) + }.bind(this)) + }, + + finalize: function(data){ + 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.$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 ] + } + else { + address_data = data + } + + if (this.cc_list_mode) { + 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") + console.log(data) + }.bind(this)) + + return + } + else { + cc_data = data + } + + var credit_info = { + "HolderName": address_data.Name, + "HolderSurname": address_data.Surname, + "HolderAddress": address_data.Address || address_data.StreetWithNumber, + "HolderCity": address_data.City, + "HolderProvince": address_data.Province, + "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.substr(2,3), + "Cvv": cc_data.Cvv, + } + + console.log( credit_info ) + + return credit_info + }, + + success: function(){ + app.router.go('cart/confirm') + }, + + error: function(data){ + console.log(data) + app.cart.payment.show_errors([["Number","There was a problem with your credit card."]]) + }, + + cancel: function(){ + app.router.go('cart/shipping') + }, + + +})
\ No newline at end of file |
