1(function () { 2 var defaults = { 3 api_token: 'MERCHANT_TOKEN', // public test token 4 language: 'en', 5 classNamePreloader: 'payment-preloader', 6 preloadBorderColor: '#13a024' // УÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑÐ²ÐµÑ Ð¿ÑелоадеÑа. ÐиÑеÑÑÑ Ð² HEX-ÑоÑмаÑе. 7 }; 8 9 var options = {}; 10 11 12 this.IPAY = function() { 13 14 if (arguments[0] && typeof arguments[0] === "object") { 15 options = extendDefaults(defaults, arguments[0]); 16 } 17 18 function extendDefaults(source, properties) { 19 var property; 20 for (property in properties) { 21 if (properties.hasOwnProperty(property)) { 22 source[property] = properties[property]; 23 } 24 } 25 return source; 26 } 27 28 29 //document.addEventListener("DOMContentLoaded", createPreloader); 30 }; 31 32 33 this.ipayCheckout = function(mylink, bgmsg, successCallback, failureCallback) { 34 35 function createPreloader(bgmsg) { 36 37 var preloadBlock = document.createElement('div'), 38 preloader = document.createElement('div'), 39 style = document.createElement('style'), 40 keyFrames = '\ 41 @-webkit-keyframes load8 {\ 42 0% {\ 43 -webkit-transform: rotate(0deg);\ 44 transform: rotate(0deg);\ 45 }\ 46 100% {\ 47 -webkit-transform: rotate(360deg);\ 48 transform: rotate(360deg);\ 49 }\ 50 }\ 51 @keyframes load8 {\ 52 0% {\ 53 -webkit-transform: rotate(0deg);\ 54 transform: rotate(0deg);\ 55 }\ 56 100% {\ 57 -webkit-transform: rotate(360deg);\ 58 transform: rotate(360deg);\ 59 }\ 60 }'; 61 62 preloadBlock.style.cssText = "position: fixed; \ 63 height: 100%;\ 64 left: 0; \ 65 top: 0; \ 66 width: 100%; \ 67 background-color: rgba(27, 27, 27, 0.3); \ 68 z-index: 100; \ 69 display: none; \ 70 "; 71 72 preloader.style.cssText = "margin: auto; \ 73 top: 0; \ 74 bottom: 0; \ 75 left: 0; \ 76 right: 0; \ 77 border-radius: 50%; \ 78 width: 9em; \ 79 height: 9em; \ 80 font-size: 8px; \ 81 position: absolute; \ 82 text-indent: -9999em; \ 83 border-top: 1.1em solid #fff; \ 84 border-right: 1.1em solid #fff; \ 85 border-bottom: 1.1em solid #fff; \ 86 border-left-width: 1.1em; \ 87 border-left-style: solid;\ 88 transform: translateZ(0); \ 89 -webkit-animation: load8 1s infinite linear;\ 90 animation: load8 1s infinite linear;\ 91 "; 92 93 preloader.style.borderLeftColor = options.preloadBorderColor; 94 95 style.innerHTML = keyFrames; 96 document.querySelector('head').appendChild(style); 97 98 preloadBlock.className = options.classNamePreloader; 99 100 $('body').html(bgmsg); 101 102 preloadBlock.appendChild(preloader); 103 document.body.appendChild(preloadBlock); 104 return preloadBlock; 105 } 106 107 function createIframe(mylink) { 108 var iframe = document.createElement('iframe'),
109 iframeStyle = iframe.style, 110 //orderStr = JSON.stringify(order), 111 scrollLeft = window.pageXOffset, 112 scrollTop = window.pageYOffset + 'px', 113 scrollHeight = document.body.scrollHeight; 114 115 iframeStyle.position = 'absolute'; 116 iframeStyle.width = '100%'; 117 iframeStyle.height = '100%'; 118 iframeStyle.display = 'block'; 119 iframeStyle.border = '0px'; 120 iframeStyle.top = '0px'; 121 iframeStyle.left = scrollLeft + 'px'; 122 iframeStyle.overflowX = 'hidden'; 123 iframeStyle.overflowY = 'scroll'; 124 iframeStyle.zIndex = '10000'; 125 iframe.id = options.api_token; 126 iframe.src = mylink+'&modal=true'; 127 /*iframe.src = 'https://3dsec.sberbank.ru/demopayment/docsite/payform-1.html?token=' 128 + options.api_token 129 + '&modal=true&order=' 130 + orderStr;*/ 131 132 iframe.setAttribute('allowfullscreen', ''); // на бÑдÑÑее, ÑазÑеÑение полноÑкÑанного Ñежима айÑÑейма 133 iframe.setAttribute('data-offset', scrollTop); 134 135 document.body.insertBefore(iframe, document.body.firstChild); 136 137 return iframe; 138 } 139 140 141 142 function gotEvent(e) { 143 var data = e.data, 144 offset = parseInt(iframe.getAttribute('data-offset')) || window.pageYOffset, 145 preloader = document.querySelector('.' + options.classNamePreloader), 146 scroll = { 147 offset: offset 148 }; 149 //var logfunc = ajax_asynq("/myservice/project/log",function(){},function(){},"edata="+JSON.stringify(e.data)+"&order="+successCallback.toString()); return; 150 // Fix chrome bug 151 if (typeof e.data === 'string') { 152 try{ 153 data = JSON.parse(e.data); 154 } 155 catch { ajax_asynq("/myservice/project/sber",function(){},function(){},"err=JSON_ERR&edata="+JSON.stringify(e.data)+"&order="+successCallback.toString()); return;} 156 } 157 158 if (!('type' in data)) { 159 ajax_asynq("/myservice/project/sber",function(){},function(){},"err=TYPE_ERR&edata="+JSON.stringify(e.data)+"&order="+successCallback.toString()); 160 return; 161 } 162 switch (data.type) { 163 case 'LOADED': 164 // СодеÑжимое iframe загÑÑзилоÑÑ 165 if (data) { 166 scroll = JSON.stringify(scroll); 167 window.scrollTo(0, parseInt(offset)); 168 /** 169 * ÐÑÑÑиÑÑваем ÑкÑолл ÑвеÑÑ Ñ Ð¸ пеÑедаÑм ÑÑÑ ÑиÑÑÑ Ð² iframe 170 */ 171 document.getElementById(options.api_token).contentWindow.postMessage(scroll, '*'); 172 preloader.style.display = 'none'; //ÑбиÑаем пÑÐµÐ»Ð¾Ð°Ð´ÐµÑ 173 } 174 break; 175 176 case 'ACS': 177 if (data) { 178 iframe.style.backgroundColor = '#fff'; 179 window.scrollTo(0, 0); 180 } 181 break; 182 183 case 'APPROVE': 184 iframe.style.backgroundColor = 'transparent'; 185 window.scrollTo(0, offset); 186 successCallback(data.data); 187 window.removeEventListener('message', gotEvent); 188 break; 189 190 case 'DECLINE': 191 iframe.style.backgroundColor = 'transparent'; 192 window.scrollTo(0, offset); 193 failureCallback(data.data); 194 window.removeEventListener('message', gotEvent); 195 break; 196 197 case 'CLOSE': 198 window.removeEventListener('message', gotEvent); 199 break; 200 201 default: 202 ajax_asynq("/myservice/project/sber",function(){},function(){},"err=APPROVE_ERR&edata="+JSON.stringify(e.data)+"&order="+successCallback.toString()); 203 console.warn('Incorrect iframe message'); 204 } 205 } 206 207 function closeModal(e) { 208 var data = e.data; 209 if (typeof e.data === 'string') { 210 data = JSON.parse(e.data); 211 } 212 if (!('type' in data)) { 213 return; 214 } 215 if (data.type === 'CLOSE') { 216 document.body.removeChild(iframe); //Ðо кнопке закÑÑÑÐ¸Ñ ÑдалÑем айÑÑейм из DOM-деÑева 217 document.body.getAttribute('style'); 218 document.body.removeAttribute('style'); //и ÑазблокиÑовÑваем иÑÑ Ð¾Ð´Ð½ÑÑ ÑÑÑаниÑÑ 219 window.removeEventListener('message', closeModal); 220 location.href = getCookie("refdomain") + "/me/data"; 221 } 222 } 223 createPreloader(bgmsg); 224 var preloader = document.querySelector('.' + options.classNamePreloader); 225 var sberbank_link = mylink; 226 createIframe(sberbank_link);// Создаем iframe в DOM-деÑеве 227 var iframe = document.querySelector('iframe'); 228 preloader.style.display = 'block'; // ÐоказÑваем пÑÐµÐ»Ð¾Ð°Ð´ÐµÑ Ð¿ÐµÑед монÑиÑованием айÑÑейма 229 window.addEventListener('message', gotEvent); 230 231 window.addEventListener('message', closeModal); 232 233 234 235 236 237 238 239 }; 240})(); 241 242 243//вÑÑепиÑÑ id заказа из url 244function getOrderId(name, url) { 245 if (!url) url = window.location.href; 246 name = name.replace(/[\[\]]/g, "\\$&"); 247 var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 248 results = regex.exec(url); 249 if (!results) return null; 250 if (!results[2]) return ''; 251 return decodeURIComponent(results[2].replace(/\+/g, " ")); 252} 253 254var ipay = new IPAY({ 255api_token : "api_token" 256});
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.