sdk.cart = (function(){ var cart = {} cart.id = "" cart.token = "" // https://gist.github.com/fanfare/9a50c524aea417d0bf3e cart.initialize = function(opt){ return $.ajax({ method: "POST", url: sdk.path("Cart.API/1.6", "carts.json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-device": auth.device, }, data: "{}", // data: opt.data, success: function(data){ cart.id = data["CartSession"]["CartId"] cart.token = data["CartSession"]["CartToken"] auth.set_cart( cart.id, cart.token ) opt.success(data) }, error: opt.error, }) } cart.set_user = function(opt){ return $.ajax({ method: "PUT", url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/user.json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-cart-token": cart.token, }, data: JSON.stringify({ "UserId": auth.user_id, "UserToken": auth.access_token, }), success: function(data){ opt.success(data) }, error: opt.error, }) } // Code10, Size, Section cart.add_item = function(opt){ return $.ajax({ method: "POST", url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/items.json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-cart-token": cart.token, }, data: JSON.stringify( opt.data ), success: function(data){ // console.log(data) opt.success(data) }, error: opt.error, }) } cart.delete_item = function(opt){ return $.ajax({ method: "DELETE", url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/items/" + opt.data.Code10 + "/" + opt.data.Size + ".json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-cart-token": cart.token, }, data: "{}", success: function(data){ // console.log(data) opt.success(data) }, error: opt.error, }) } cart.get_status = function(opt){ if (! cart.id) { return opt.error({ error: "no cart" }) } return $.ajax({ method: "GET", url: sdk.path("Cart.API/1.6", "carts/" + cart.id + ".json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-cart-token": cart.token, "x-yoox-device": auth.device, }, success: function(data){ if (data['Error']) { opt.error && opt.error(data) } else { opt.success(data) } }, error: opt.error, }) } cart.set_shipping_address = function(opt){ return $.ajax({ method: "PUT", url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/receiver.json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-cart-token": cart.token, }, data: JSON.stringify(opt.data), success: function(data){ // console.log(data) opt.success(data) }, error: opt.error, }) } // NB: Payment type may simply be 1 (credit card) cart.set_payment_type = function(opt){ return $.ajax({ method: "PUT", url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/paymentType.json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-cart-token": cart.token, }, data: JSON.stringify( opt.data ), success: function(data){ // console.log(data) opt.success(data) }, error: opt.error, }) } cart.get_card_types = function(opt){ return $.ajax({ method: "GET", url: sdk.path("Cart.API/1.6", "cardTypes.json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-cart-token": cart.token, }, data: "", success: function(data){ opt.success(data) }, error: opt.error, }) } // use with full CC data if not storing it in wallet cart.set_credit_card = function(opt){ return $.ajax({ method: "PUT", url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/creditCard.json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-cart-token": cart.token, }, data: JSON.stringify( opt.data ), success: function(data){ // console.log(data) opt.success(data) }, error: opt.error, }) } // use with a stored GUID // NB: if "verification number" is 1, use CVV/CID/CVC security code // if "verification number" is 2, use "Issue Number" cart.use_stored_credit_card = function(opt){ var data = { "Guid": opt.data.guid, "UserId": auth.user_id, "AccessToken": auth.access_token, } if (opt.data.cvv) { data["Cvv"] = opt.data.cvv } if (opt.data.issue) { data["Issue"] = opt.data.issue } return $.ajax({ method: "PUT", url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/userCreditCard.json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-cart-token": cart.token, }, data: JSON.stringify(data), success: function(data){ // console.log(data) opt.success(data) }, error: opt.error, }) } cart.secure_finalize = function(opt){ return $.ajax({ method: "POST", url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/secureFinalizer.json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-cart-token": cart.token, "x-yoox-device": auth.device, }, data: JSON.stringify( opt.data || {} ), success: function(data){ console.log(data) // order number is: // "Info": "2905Y07FA13020" opt.success(data) }, error: opt.error, }) } cart.finalize = function(opt){ return $.ajax({ method: "POST", url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/finalizer.json"), headers: { "x-yoox-appname": auth.appname, "x-yoox-cart-token": cart.token, }, data: JSON.stringify( opt.data || {} ), success: function(data){ console.log(data) // order number is: // "Info": "2905Y07FA13020" opt.success(data) }, error: opt.error, }) } return cart })()