11/*
22Загрузка SDK Secure Fields
33 */
4- const secureFieldsJs = document . createElement ( 'script' ) ;
5- secureFieldsJs . src = 'https://sandbox.ypmn.ru/js/secure-fields/_sb/secure-fields.min.js' ;
6-
74secureFieldsJs . addEventListener ( 'load' , ( ) => {
8- debug ( 'eventListener secureFieldsJs' ) ;
5+ console . log ( 'eventListener secureFieldsJs' ) ;
96 initPaymentProcess ( ) ;
107 initPaymentProcessSimple ( ) ;
118} )
@@ -23,9 +20,9 @@ let elementsTypesListened = [];
2320Настройка Secure Fields, отображение полей Secure Fields, процесс получения одноразового токена
2421 */
2522function initPaymentProcess ( ) {
26- debug ( 'function initPaymentProcess' ) ;
27- debug ( merchantCode ) ;
28- debug ( sessionId ) ;
23+ console . log ( 'function initPaymentProcess' ) ;
24+ console . log ( merchantCode ) ;
25+ console . log ( sessionId ) ;
2926
3027 /*
3128 Создание объекта Secure Fields.
@@ -39,24 +36,24 @@ function initPaymentProcess() {
3936
4037 const fonts = [
4138 {
42- src : 'https://fonts.googleapis.com/css?family=Source+Code+Pro' ,
43- src : location . protocol + '//' + location . host + '/assets/css/text-security-disk.css'
39+ // src: 'https://fonts.googleapis.com/css?family=Source+Code+Pro'
4440 }
4541 ] ;
4642
4743 const formElements = new PayUSecureFields . Init ( auth , {
4844 fonts
4945 } )
5046
51- debug ( formElements ) ;
47+ console . log ( formElements ) ;
5248
5349 /*
5450 Добавление плейсхолдеров для полей Secure Fields.
5551 */
5652 const placeholders = {
5753 cardNumber : '1234 1234 1234 1234' ,
5854 expDate : 'MM / YY' ,
59- cvv : '123'
55+ cvv : '123' ,
56+ userAgreement : 'ru'
6057 } ;
6158
6259 /*
@@ -65,6 +62,13 @@ function initPaymentProcess() {
6562 document . getElementById ( 'load' ) . style . display = 'none' ;
6663 document . getElementById ( 'form' ) . style . display = 'flex' ;
6764
65+ let style = {
66+ base : {
67+ fontSize : '0.85em' ,
68+ lineHeight : '1.1em'
69+ }
70+ } ;
71+
6872 /*
6973 Отображение полей Secure Fields и подключение слушателей на поля для валидации введенных данных
7074 */
@@ -74,6 +78,10 @@ function initPaymentProcess() {
7478 cardNumber . mount ( '#card-number' ) ;
7579 formValidation ( cardNumber , eventsToListen , 'card-number' ) ;
7680
81+ cardNumber . on ( 'cardInfo' , ( event ) => {
82+ console . log ( 'cardInfoEvent' , event )
83+ } ) ;
84+
7785 const expiry = formElements . create ( 'creditCardExpiry' , {
7886 placeholders
7987 } ) ;
@@ -86,6 +94,13 @@ function initPaymentProcess() {
8694 cvv . mount ( '#cvv' ) ;
8795 formValidation ( cvv , eventsToListen , 'cvv' ) ;
8896
97+ const userAgreement = formElements . create ( 'userAgreement' , {
98+ style,
99+ placeholders
100+ } ) ;
101+ userAgreement . mount ( '#user-agreement' ) ;
102+ formValidation ( userAgreement , eventsToListen , 'user-agreement' ) ;
103+
89104 /*
90105 Валидация поля с именем картодержателя
91106 */
@@ -95,7 +110,7 @@ function initPaymentProcess() {
95110 Создание токена при нажатии на кнопку формы
96111 */
97112 document . getElementById ( 'payment-form' ) . addEventListener ( 'submit' , async ( event ) => {
98- debug ( 'submit' ) ;
113+ console . log ( 'submit' ) ;
99114
100115 /*
101116 svg загрузки вместо кнопки после нажатия
@@ -116,18 +131,18 @@ function initPaymentProcess() {
116131 /*
117132 Получение и обработка ответа при создании одноразового токена
118133 */
119- debug ( 'cardNumber' ) ;
134+ console . log ( 'cardNumber' ) ;
120135
121136 const result = await PayUSecureFields . createToken ( cardNumber , { additionalData} ) ;
122137
123- debug ( 'createToken' ) ;
124- debug ( result ) ;
138+ console . log ( 'createToken' ) ;
139+ console . log ( result ) ;
125140 processResult ( result ) ;
126141 } catch ( err ) {
127142 /*
128143 Вывод об ошибке при наличии
129144 */
130- debug ( 'createTokenError - ' + err . name + ': ' + err . message ) ;
145+ console . log ( 'createTokenError - ' + err . name + ': ' + err . message ) ;
131146 viewResult ( false , err . name , [ err . message ] , true ) ;
132147 }
133148
@@ -140,16 +155,16 @@ function initPaymentProcess() {
140155Процесс обработки результата получения токена
141156*/
142157function processResult ( result ) {
143- debug ( 'function processResult' ) ;
158+ console . log ( 'function processResult' ) ;
144159
145160 if ( typeof result . errors == 'object' && Object . keys ( result . errors ) . length ) {
146- debug ( 'createToken errors' ) ;
161+ console . log ( 'createToken errors' ) ;
147162 viewResult ( false , 'Tokenization failure' , result . errors , true ) ;
148163 return ;
149164 }
150165
151166 if ( result . statusCode === 'SUCCESS' ) {
152- debug ( 'createToken success' ) ;
167+ console . log ( 'createToken success' ) ;
153168 pay ( result [ 'token' ] ) ;
154169 }
155170}
@@ -158,8 +173,8 @@ function processResult(result) {
158173
159174*/
160175function pay ( token ) {
161- debug ( 'function pay' ) ;
162- debug ( token ) ;
176+ console . log ( 'function pay' ) ;
177+ console . log ( token ) ;
163178
164179 let oneTimeTokenPaymentResult = jsonRequest (
165180 '?function=oneTimeTokenPayment&json=true' ,
@@ -189,35 +204,39 @@ function pay(token) {
189204}
190205
191206function formValidation ( object , listeners , containerId ) {
192- debug ( 'function formValidation' ) ;
207+ console . log ( 'function formValidation' ) ;
193208
194209 let elementType = object [ 'elementType' ] ;
195210
196211 elementsTypesListened . push ( elementType ) ;
197212
198213 validationSuccess [ elementType ] = false ;
199214
215+ if ( elementType === 'userAgreement' ) {
216+ validationSuccess [ elementType ] = true ;
217+ }
218+
200219 let container = document . getElementById ( containerId ) ;
201220 let validationContainer = document . getElementById ( containerId + '-validation' ) ;
202221
203222 listeners . forEach ( function ( listener ) {
204223
205224 object . on ( listener , ( event ) => {
206- debug ( 'listener' ) ;
207- debug ( object ) ;
208- debug ( event ) ;
225+ console . log ( 'listener' ) ;
226+ console . log ( object ) ;
227+ console . log ( event ) ;
209228
210229 if ( event [ 'statusCode' ] === 'SUCCESS' && event [ 'empty' ] === false ) {
211- debug ( 'SUCCESS' ) ;
230+ console . log ( 'SUCCESS' ) ;
212231
213232 container . classList . remove ( 'is-invalid' ) ;
214233 validationContainer . innerHTML = '' ;
215234
216235 validationSuccess [ elementType ] = true ;
217236 } else {
218- debug ( 'ERROR' ) ;
237+ console . log ( 'ERROR' ) ;
219238
220- debug ( event [ 'errors' ] ) ;
239+ console . log ( event [ 'errors' ] ) ;
221240
222241 container . classList . add ( 'is-invalid' ) ;
223242 validationContainer . innerHTML = '' ;
@@ -227,7 +246,7 @@ function formValidation(object, listeners, containerId) {
227246 for ( const key in event [ 'errors' ] ) {
228247 let error = event [ 'errors' ] [ key ] ;
229248 validationContainer . innerHTML += error + '<br/>' ;
230- debug ( error ) ;
249+ console . log ( error ) ;
231250 }
232251
233252 if ( event [ 'empty' ] === true && elementType === 'cvv' ) {
@@ -242,7 +261,7 @@ function formValidation(object, listeners, containerId) {
242261}
243262
244263function cardHolderValidation ( ) {
245- debug ( 'function cardHolderValidation' ) ;
264+ console . log ( 'function cardHolderValidation' ) ;
246265
247266 let cardHolderEventsToListen = eventsToListen ;
248267 cardHolderEventsToListen . push ( 'input' ) ;
@@ -257,23 +276,23 @@ function cardHolderValidation() {
257276 let validationContainer = document . getElementById ( 'cardholder-name-validation' ) ;
258277
259278 cardHolderEventsToListen . forEach ( function ( listener ) {
260- debug ( 'listener' ) ;
261- debug ( 'cardHolder' ) ;
262- debug ( listener ) ;
279+ console . log ( 'listener' ) ;
280+ console . log ( 'cardHolder' ) ;
281+ console . log ( listener ) ;
263282
264283 let cardHolderInput = document . getElementById ( 'cardholder-name' ) ;
265284
266285 cardHolderInput . addEventListener ( listener , ( ) => {
267286
268287 if ( cardHolderInput . value !== '' ) {
269- debug ( 'SUCCESS' ) ;
288+ console . log ( 'SUCCESS' ) ;
270289
271290 container . classList . remove ( 'is-invalid' ) ;
272291 validationContainer . innerHTML = '' ;
273292
274293 validationSuccess [ elementType ] = true ;
275294 } else {
276- debug ( 'ERROR' ) ;
295+ console . log ( 'ERROR' ) ;
277296
278297 container . classList . add ( 'is-invalid' ) ;
279298 validationContainer . innerHTML = 'Holder\'s name is mandatory field' ;
@@ -287,30 +306,30 @@ function cardHolderValidation() {
287306}
288307
289308function changeButtonAbility ( ) {
290- debug ( 'function changeButtonAbility' ) ;
309+ console . log ( 'function changeButtonAbility' ) ;
291310
292- debug ( elementsTypesListened ) ;
311+ console . log ( elementsTypesListened ) ;
293312
294313 for ( const key in elementsTypesListened ) {
295314 let elementType = elementsTypesListened [ key ] ;
296315
297- debug ( elementType ) ;
298- debug ( validationSuccess [ elementType ] ) ;
316+ console . log ( elementType ) ;
317+ console . log ( validationSuccess [ elementType ] ) ;
299318
300319 if ( validationSuccess [ elementType ] === false ) {
301- debug ( 'disable button' ) ;
320+ console . log ( 'disable button' ) ;
302321 document . getElementById ( 'pay_button' ) . disabled = true ;
303322 return ;
304323 }
305324
306325 }
307326
308- debug ( 'enable button' ) ;
327+ console . log ( 'enable button' ) ;
309328 document . getElementById ( 'pay_button' ) . disabled = false ;
310329}
311330
312331function jsonRequest ( url , method , requestData , responseType , successCallback ) {
313- debug ( 'function jsonRequest: ' + url ) ;
332+ console . log ( 'function jsonRequest: ' + url ) ;
314333
315334 let xhr = new XMLHttpRequest ( ) ;
316335 xhr . open ( method , url , false ) ;
@@ -322,29 +341,29 @@ function jsonRequest(url, method, requestData, responseType, successCallback) {
322341 let status = xhr . status ;
323342
324343 if ( status === 200 ) {
325- debug ( 'jsonRequest success' ) ;
326- debug ( xhr . response ) ;
344+ console . log ( 'jsonRequest success' ) ;
345+ console . log ( xhr . response ) ;
327346
328347 successCallback ( JSON . parse ( xhr . response ) ) ;
329348 jsonRequestResult = true ;
330349 } else {
331- debug ( 'jsonRequest error' ) ;
332- debug ( 'Error ' + xhr . status + ': ' + xhr . statusText ) ;
350+ console . log ( 'jsonRequest error' ) ;
351+ console . log ( 'Error ' + xhr . status + ': ' + xhr . statusText ) ;
333352
334353 viewResult ( false , 'Request Error' , [ ] , true ) ;
335354 }
336355 } ;
337356
338357 xhr . ontimeout = ( e ) => {
339- debug ( 'jsonRequest timeout error' ) ;
358+ console . log ( 'jsonRequest timeout error' ) ;
340359 viewResult ( false , 'Request Error' , [ ] , true ) ;
341360 } ;
342361
343- debug ( requestData ) ;
362+ console . log ( requestData ) ;
344363
345364 xhr . send ( requestData ) ;
346365
347- debug ( jsonRequestResult ) ;
366+ console . log ( jsonRequestResult ) ;
348367
349368 return jsonRequestResult ;
350369}
@@ -389,10 +408,10 @@ const failureIcon = '\n' +
389408 ' </svg>' ;
390409
391410function viewResult ( success , title , messages , hideForm = false ) {
392- debug ( 'function viewResult' ) ;
393- debug ( success ) ;
394- debug ( title ) ;
395- debug ( messages ) ;
411+ console . log ( 'function viewResult' ) ;
412+ console . log ( success ) ;
413+ console . log ( title ) ;
414+ console . log ( messages ) ;
396415
397416 document . getElementById ( 'bootstrap-tab-pane' ) . innerHTML += resultBlock ;
398417
@@ -418,8 +437,8 @@ function viewResult(success, title, messages, hideForm = false) {
418437}
419438
420439function viewRedirect ( title , hideForm = false ) {
421- debug ( 'function viewRedirect' ) ;
422- debug ( title ) ;
440+ console . log ( 'function viewRedirect' ) ;
441+ console . log ( title ) ;
423442
424443 document . getElementById ( 'bootstrap-tab-pane' ) . innerHTML += resultBlock ;
425444
@@ -431,9 +450,3 @@ function viewRedirect(title, hideForm = false) {
431450 document . getElementById ( 'load' ) . style . display = 'none' ;
432451 document . getElementById ( 'result' ) . style . display = 'flex' ;
433452}
434-
435- function debug ( message ) {
436- if ( debugMode === true ) {
437- console . log ( message ) ;
438- }
439- }
0 commit comments