PageSourceSearch

https://www.jbl.com.sg/on/demandware.static/Sites-JB-APAC-NCOM-Sit…/js/app/108_samsungpay_minicart.js

js jbl.com.sg collected 2026-09-28 06:47:10 UTC 11,333 bytes, 305 lines download raw bytes

1(function (app, $) {
2	var $cache = {};
3	
4
5	
6	
7	samsungpayCheckout = function(){
8	
9	  $(document).on('click','#checkout-samsungpay-button-minicart',function(){
10		
11		  var lOrderTotal= "0";
12		  var shippingDiscount= "0";
13		  var orderDiscountTotal= "0";
14		  var tax= "0";
15		  var shipping="0";
16		  var orderSummaryURl = app.util.appendParamsToUrl(app.urls.serializeOrderSummary);
17		  var parameter = {type: "POST", dataType: "json", async :false, returnObject: "OrderSummary,Basket" };
18             
19		 $.ajax({
20			url: orderSummaryURl,
21			data: parameter,
22			async: false,
23			
24			success : function (data) {
25				var orderSummary=data.response.orderSummary;
26					if(orderSummary.subTotal && orderSummary.subTotal!=null){
27					  lOrderTotal =orderSummary.subTotal;
28				    }
29					if(orderSummary.shippingDiscount && orderSummary.shippingDiscount!=null){
30					  shippingDiscount= orderSummary.shippingDiscount;
31					}
32					if(orderSummary.orderDiscountTotal && orderSummary.orderDiscountTotal!=null){
33						orderDiscountTotal= orderSummary.orderDiscountTotal;
34					    lOrderTotal=lOrderTotal+orderDiscountTotal;
35					}
36				   if(orderSummary.taxTotal && orderSummary.taxTotal!=null){
37						tax= orderSummary.taxTotal;
38					}
39					if(orderSummary.shippingTotal && orderSummary.shippingTotal!=null){
40					  shipping= orderSummary.shippingTotal;
41				   }
42			   }, error: function(jq,status,message){
43				console.log('error');
44			 }
45 		 });
46		
47		 var shippingOptions = new Array();
48		 if (!window.PaymentRequest) {
49          // PaymentRequest API is not available - forwarding to legacy form based experience.
50          location.href = '/checkout';
51         }
52		 
53	     var samsung_marchant_name=  $('#samsung_merchant_name_minicart').val(); 
54	     var samsung_productId=  $('#samsung_productId_minicart').val();     
55	     var samsung_supportedMethods=  $('#samsung_supportedMethods').val();     
56	  
57	     
58	     var supportedInstruments = [{
59    	   supportedMethods: [ 'https://spay.samsung.com' ], // 'https://spay.samsung.com'
60           data: {
61        	     "version": "1",
62	             "productId": samsung_productId, //Service id from partner portal
63	             "allowedCardNetworks": ['mastercard','visa','amex'],    
64	             "merchantName": samsung_marchant_name, //Merchant name in partner portal
65	             "billingAddressRequired": true,
66           },
67           "isRecurring": false,
68          "paymentProtocol": "PROTOCOL_3DS"
69           }];
70               
71               
72         var details = {
73         displayItems: [
74               {
75               label: 'ITEM SUB TOTAL',
76               amount: { currency: 'USD', value: lOrderTotal }
77               },
78               {
79	               label: 'SHIPPING',
80	               amount: { currency: 'USD', value: shipping }
81	           },
82	           
83	           {
84	        	   label: 'ORDER DISCOUNT',
85	        	   amount: { currency: 'USD', value: orderDiscountTotal }
86	           },
87    		           
88	           {
89               label: 'SHIPPING DISCOUNT',
90               amount: { currency: 'USD', value: shippingDiscount }
91               },
92               {
93	               label: 'TAX',
94	               amount: { currency: 'USD', value: tax }
95	           }
96	          ],
97		          
98		      shippingOptions:[  ],
99	              total: {
100	               label: 'Total:',
101	               amount: { currency: 'USD', value : lOrderTotal }
102	              }
103		       };
104           
105            var options = {
106              requestShipping: true,
107              requestPayerEmail: true,
108              requestPayerPhone: true,
109              requestPayerName: true
110            };
111             
112           var request = new PaymentRequest(supportedInstruments, details, options);
113                        
114           if (request.canMakePayment) {                   
115                 request.canMakePayment().then(function(result) {
116              });
117            } else {
118            	 console.log( "This browser does not support ");
119             }
120                 
121               request.addEventListener('shippingaddresschange', function(e) {
122		           e.updateWith((function(details, addr) {
123					var shippingOption = {
124					   id: '',
125					   label: '',
126					   amount: { currency: 'USD', value: '0.00' }, selected: true};
127					
128					   if (addr.country === 'US') {
129					   var url = app.util.appendParamsToUrl(app.urls.retrieveShippingMethods);
130					   var address;
131				       address = {};
132				       address.stateCode = addr.region;
133	          		   address.postalCode = addr.postalCode;
134					   var params = {type: "POST", dataType: "json",async :false, address: JSON.stringify( address ),returnObject: "ShippingOptions,OrderSummary" };
135					     
136					   $.ajax({
137		  	  			 url: url,
138						 data: params,
139						 async: false,
140					 		
141						success : function (data) {
142							var shippingOptions = new Array();
143							if(data && data!=null && data.response !=null) {
144								var methods=data.response.shippingMethods.list;
145								var cartModelJsonObjTest=JSON.stringify(data.response);
146								
147								for( var i = 0; i < methods.length; i++ ) {
148									id = methods[i].ID;
149									description = methods[i].description;
150									displayName = methods[i].displayName;
151									cost = methods[i].cost;
152									upsDescription = methods[i].upsDescription;
153						
154								 var shippingMethodObj= {
155                                       id: id,
156                                       label: displayName,
157                                       amount: { currency: "USD", value: cost },
158                                       selected: methods[i].selected,
159	                             }
160								 shippingOptions.push(shippingMethodObj);
161								}
162							
163							var orderSummary=data.response.orderSummary;
164							var displayItemsObj=[
165								 {
166		    		               label: 'ITEM SUB TOTAL',
167		    		               amount: { currency: 'USD', value: orderSummary.subTotal }
168		    		               },
169		    		               {
170			    		               label: 'SHIPPING',
171			    		               amount: { currency: 'USD', value: orderSummary.shippingTotal }
172			    		           },
173			    		           {
174			    		        	   label: 'ORDER DISCOUNT',
175			    		        	   amount: { currency: 'USD', value: orderSummary.orderDiscountTotal }
176			    		           },
177			    		           {
178		    		               label: 'SHIPPING DISCOUNT',
179		    		               amount: { currency: 'USD', value: orderSummary.shippingDiscount }
180		    		               },
181		    		               {
182			    		             label: 'TAX',
183			    		             amount: { currency: 'USD', value: orderSummary.taxTotal }
184			    		            }
185							]
186								    		  
187							}  // end of if condition
188				 			details.shippingOptions=shippingOptions;
189							details.displayItems=displayItemsObj;
190							details.total.amount.value = orderSummary.orderTotal;
191							},
192							error: function(jq,status,message){
193								//alert('error')
194							}
195					   });
196					   // If Not US		   
197					   } 	else {
198			        // Empty array indicates rejection of the address
199	    				details.shippingOptions = [];
200	    					return Promise.resolve(details);
201	    			}
202					  return Promise.resolve(details);	
203		           	}
203)(details, request.shippingAddress));
204               }); // end of shippingaddresschange
205  
206		              
207                   
208	          request.addEventListener('shippingoptionchange', function(e) {            	   
209	              e.updateWith((function(details,option) {
210	            	 var assignShippingMethodurl = app.util.appendParamsToUrl(app.urls.assignShippingMethod);
211                  	 var params = {type: "POST", dataType: "json", async :false, shippingMethodID: option, returnObject: "ShippingOptions,OrderSummary" };
212                 	
213                  	  $.ajax({
214                		url: assignShippingMethodurl,
215 						data: params,
216 						async: false,
217 						success : function (data) {
218 							
219 						if(data.response && data.response!=null){
220 							var shippingOptions = new Array();	
221							var methods=data.response.shippingMethods.list;
222							var cartModelJsonObjTest=JSON.stringify(data.response);
223 							
224							for( var i = 0; i < methods.length; i++ ) {
225								 id = methods[i].ID;
226								 description = methods[i].description;
227								 displayName = methods[i].displayName;
228								 cost = methods[i].cost;
229								 upsDescription = methods[i].upsDescription;
230 								 var shippingMethodObj= {
231                                   id: id,
232                                   label: displayName,
233                                   amount: { currency: "USD", value: cost },
234                                   selected: methods[i].selected,
235 		                          }
236 									 shippingOptions.push(shippingMethodObj);
237 								}
238 								
239 								var orderSummary=data.response.orderSummary;
240 								var displayItemsObj=[
241								 {
242		    		               label: 'ITEM SUB TOTAL',
243		    		               amount: { currency: 'USD', value: orderSummary.subTotal }
244		    		               },
245		    		               {
246			    		               label: 'SHIPPING',
247			    		               amount: { currency: 'USD', value: orderSummary.shippingTotal }
248			    		           },
249			    		           {
250			    		        	   label: 'ORDER DISCOUNT',
251			    		        	   amount: { currency: 'USD', value: orderSummary.orderDiscountTotal }
252			    		           },
253			    		           {
254		    		               label: 'SHIPPING DISCOUNT',
255		    		               amount: { currency: 'USD', value: orderSummary.shippingDiscount }
256		    		               },
257		    		               {
258			    		             label: 'TAX',
259			    		             amount: { currency: 'USD', value: orderSummary.taxTotal }
260			    		            }
261 								]
262			    		  	} //end of if condition
263	 							details.shippingOptions=shippingOptions;
264	 							details.displayItems=displayItemsObj;
265	 							details.total.amount.value = orderSummary.orderTotal;
266	     					},
267     						error: function(jq,status,message){
268     							//alert('error')
269     						}
270	     				});
271                    	 return Promise.resolve(details);
272	                    })(details,request.shippingOption ));
273	                    });  // end of shippingoptionchange 
274                   
275                
276	               request.show().then(function(result) {
277	                 var resultJsonData=JSON.stringify(result);
278	                 var ajaxJsonData = JSON.parse(resultJsonData);
279	                 var samsungPayUrl =  app.util.appendParamsToUrl(app.urls.samsungPayUrl);
280	               
281	                 $.post(samsungPayUrl, {samsungPayRequestData:resultJsonData }, function (result) {
282		     		 
283	                	 if(result!=null && result=='200'){
284			                 document.samsungPayMinicartForm.submit();
285			              }else{
286	                		//  jquery(".order-promotions_Samsungpay").text("Please try again:");
287	    					 // jquery(".order-promotions_Samsungpay").show();
288	                	  }
289		     			} //end of post method
290		     	   );
291	               
292	              });
293         });
294   }
295   
296	app.samsungpay = {
297		init : function () {
298		samsungpayCheckout();
299		}
300	};
301
302	}(window.app = window.app || {}, jQuery));
303	$(document).ready(function() {
304		app.samsungpay.init();	  
305	});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.