PluginProbe
Welcart e-Commerce / 2.12.4
Welcart e-Commerce v2.12.4
2.12.4 2.12.3 2.11.35 2.12.2 2.12.1 2.11.34 2.11.33 2.11.32 2.11.31 2.11.30 1.3.16 1.3.17 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.10 1.4.11 1.4.12 All 292 releases
usc-e-shop / js / zeus_token.js

zeus_token.js in Welcart e-Commerce 2.12.4, at js/zeus_token.js

897 lines 33.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 var zeusTokenClass = function() {
2
3 var today = new Date();
4 var year = today.getFullYear();
5
6 this.cgiUrl = "https://linkpt.cardservice.co.jp/cgi-bin/token/token.cgi";
7
8 this.zeusTokenItem = {
9 "zeus_token_action_type_quick_label" : "登録済みのカードを使う",
10 "zeus_token_card_cvv_for_registerd_card_label" : "セキュリティコード",
11 "zeus_token_action_type_new_label" : "新しいカードを使う",
12 "zeus_token_card_number_label" : "カード番号",
13 "zeus_token_card_expires_label" : "カード有効期限",
14 "zeus_token_card_expires_month_suffix" : "",
15 "zeus_token_card_expires_year_suffix" : "",
16 "zeus_token_card_expires_note" : "例)12月 " + year + "",
17 "zeus_token_card_cvv_for_new_card_label" : "セキュリティコード",
18 "zeus_token_card_name_label" : "カード名義",
19 "zeus_token_card_name_placeholder" : "TARO\u00A0YAMADA",
20 "zeus_token_card_number_change_label" : "カード�
21 報の変更はこちら",
22 "zeus_token_card_number_last4digits_label" : "(登録済みのカード番号下4桁)",
23 "zeus_agreement_note_label" : "個人�
24 報の第三�
25 提供",
26 "zeus_agree_check_label" : "個人�
27 報の取り扱いに同意する",
28 "zeus_token_error_messages" : {
29 "88888888" : "メンテナンス中です。",
30 "90100100" : "通信に失敗しました。",
31 "99999999" : "その他のシステムエラーが発生しました。",
32
33 "02030105" : "METHOD が 'POST' 以外",
34 "02030106" : "CONTENT-TYPE が 'text/xml' もしくは 'application/xml' 以外",
35 "02030107" : "CONTENT-LENGTH が存在しないか、0 が指定されている",
36 "02030108" : "CONTENT-LENGTH が 8192 byte より大きい",
37 "02030207" : "XML データが未送信",
38 "02030208" : "XML データが 8192 byte より大きい",
39 "02030209" : "XML データに構文エラーがある",
40 "02080114" : "XML の action が空",
41 "02080115" : "無効な action が指定されている",
42 "02130114" : "XML に authentication clientip が存在しない",
43 "02130117" : "clientip のフォーマットが不正",
44 "02130110" : "不正な clientip が指定された",
45 "02130118" : "不正な clientip が指定された",
46 "02130514" : "「カード番号」を�
47 �力してください。",
48 "02130517" : "「カード番号」を正しく�
49 �力してください。",
50 "02130619" : "「カード番号」を正しく�
51 �力してください。",
52 "02130620" : "「カード番号」を正しく�
53 �力してください。",
54 "02130621" : "「カード番号」を正しく�
55 �力してください。",
56 "02130640" : "「カード番号」を正しく�
57 �力してください。",
58 "02130714" : "「有効期限(年)」を�
59 �力してください。",
60 "02130717" : "「有効期限(年)」を正しく�
61 �力してください。",
62 "02130725" : "「有効期限(年)」を正しく�
63 �力してください。",
64 "02130814" : "「有効期限(月)」を�
65 �力してください。",
66 "02130817" : "「有効期限(月)」を正しく�
67 �力してください。",
68 "02130825" : "「有効期限(月)」を正しく�
69 �力してください。",
70 "02130922" : "「有効期限」を正しく�
71 �力してください。",
72 "02131014" : "CVVが不正です。",
73 "02131017" : "「セキュリティコード」を正しく�
74 �力してください。",
75 "02131117" : "「カード名義」を正しく�
76 �力してください。",
77 "02131123" : "「カード名義」を正しく�
78 �力してください。",
79 "02131124" : "「カード名義」を正しく�
80 �力してください。",
81
82 "E0000001" : "「個人�
83 報の取り扱いに同意する」にチェックが�
84 �っていません",
85 "E0000002" : "「カード名義」を正しく�
86 �力してください。",
87 },
88 };
89
90 this.agreementMessage = "当社がお客様から収集した以下の個人�
91 報等はカード発行会社が行う不正利用検知防止のためにお客様が利用されているカード発行会社へ提供させていただきます。\n\n"
92 +"氏名、電話番号、email アドレス、インターネット利用環境に関する�
93 報等、お客様が利用されているカード発行会社が外国にある場合、これらの�
94 報は当該発行会社が所属する国に移転される場合があります。\n\n"
95 +"当社では、お客様から収集した�
96 報からは、ご利用のカード発行会社及び当該会社が所在する国を特定することができないため、以下の個人�
97 報保護措置に関する�
98 報を把握してご提供することはできません。\n"
99 +"・提供�
100 �が所在する外国の名称\n"
101 +"・当該国の個人�
102 報保護制度に関する�
103 \n"
104 +"・発行会社の個人�
105 報保護の措置\n"
106 +"なお、個人�
107 報保護委員会のホームページ(https://www.ppc.go.jp/)では、各国における個人�
108 報保護制度に関する�
109 報について掲載されています。\n"
110 +"お客様が未成年の場合、親権�
111 または後見人の承諾を得た上で本サービスを利用するものとします";
112
113 if (typeof zeusTokenCustomItem == "object" && zeusTokenCustomItem) {
114 for (var zeus_token_item_tmp_name in this.zeusTokenItem) {
115 if (typeof zeusTokenCustomItem[zeus_token_item_tmp_name] == "string") {
116 this.zeusTokenItem[zeus_token_item_tmp_name] = zeusTokenCustomItem[zeus_token_item_tmp_name];
117 }
118 }
119 if (typeof zeusTokenCustomItem.zeus_token_error_messages == "object" && zeusTokenCustomItem.zeus_token_error_messages) {
120 for (var zeus_token_error_messages_tmp in this.zeusTokenItem.zeus_token_error_messages) {
121 if (typeof zeusTokenCustomItem.zeus_token_error_messages[zeus_token_error_messages_tmp] == "string") {
122 this.zeusTokenItem.zeus_token_error_messages[zeus_token_error_messages_tmp] = zeusTokenCustomItem.zeus_token_error_messages[zeus_token_error_messages_tmp];
123 }
124 }
125 }
126 }
127 };
128
129 zeusTokenClass.prototype.init = function() {
130
131 // IPCODEの設定
132 if (typeof zeusTokenIpcode != "string") {
133 alert('E00002');
134 return;
135 }
136
137 this.ipcode = zeusTokenIpcode;
138
139 // 設置ミス防止
140 if (!document.getElementById('zeus_token_card_info_area')) {
141 return;
142 }
143
144 // カード�
145 �力欄初期化
146 this.initCardFormItems();
147
148 if (uscesL10n.zeus_form == 'cart' && uscesL10n.zeus_quickcharge == 'on' && uscesL10n.zeus_cardupdate_url != undefined) {
149 // 新しいカードを使うをデフォルト
150 // document.getElementsByName('zeus_card_option')[1].checked = true;
151 document.getElementById('zeus_token_action_type_new').checked = true;
152 // this.disableRegisterdCardArea();
153 this.enableNewCardArea();
154 // this.validateCardForm();
155 }
156 }
157
158 zeusTokenClass.prototype.getErrorMessage = function(error_code) {
159 if (typeof this.zeusTokenItem["zeus_token_error_messages"] != "object") {
160 return error_code + "An error has occurred.";
161 }
162 if (typeof this.zeusTokenItem["zeus_token_error_messages"][error_code] == null) {
163 return error_code + "An error has occurred.";
164 }
165 if (typeof this.zeusTokenItem["zeus_token_error_messages"][error_code] != "string") {
166 return error_code + " : An error has occurred.";
167 }
168 if ("E" == error_code.charAt(0)) {
169 return this.zeusTokenItem["zeus_token_error_messages"][error_code];
170 }
171 return error_code + ' : ' + this.zeusTokenItem["zeus_token_error_messages"][error_code];
172 }
173
174 // カード�
175 �力欄初期化
176 zeusTokenClass.prototype.initCardFormItems = function() {
177 var label, input, select, option, span, zeus_registerd_card_area, zeus_new_card_area;
178 var card_info_area = document.getElementById('zeus_token_card_info_area');
179 card_info_area.textContent = null;
180
181 // Hidden fields
182 input = document.createElement('input');
183 input.setAttribute('type', 'hidden');
184 input.setAttribute('value', '');
185 input.setAttribute('id', 'zeus_token_value');
186 input.setAttribute('name', 'zeus_token_value');
187 card_info_area.appendChild(input);
188
189 input = document.createElement('input');
190 input.setAttribute('type', 'hidden');
191 input.setAttribute('value', '');
192 input.setAttribute('id', 'zeus_token_masked_card_no');
193 input.setAttribute('name', 'zeus_token_masked_card_no');
194 card_info_area.appendChild(input);
195
196 input = document.createElement('input');
197 input.setAttribute('type', 'hidden');
198 input.setAttribute('value', '');
199 input.setAttribute('id', 'zeus_token_return_card_expires_month');
200 input.setAttribute('name', 'zeus_token_return_card_expires_month');
201 card_info_area.appendChild(input);
202
203 input = document.createElement('input');
204 input.setAttribute('type', 'hidden');
205 input.setAttribute('value', '');
206 input.setAttribute('id', 'zeus_token_return_card_expires_year');
207 input.setAttribute('name', 'zeus_token_return_card_expires_year');
208 card_info_area.appendChild(input);
209
210 input = document.createElement('input');
211 input.setAttribute('type', 'hidden');
212 input.setAttribute('value', '');
213 input.setAttribute('id', 'zeus_token_masked_cvv');
214 input.setAttribute('name', 'zeus_token_masked_cvv');
215 card_info_area.appendChild(input);
216
217 input = document.createElement('input');
218 input.setAttribute('type', 'hidden');
219 input.setAttribute('value', '');
220 input.setAttribute('id', 'zeus_token_return_card_name');
221 input.setAttribute('name', 'zeus_token_return_card_name');
222 card_info_area.appendChild(input);
223
224 input = document.createElement('input');
225 input.setAttribute('type','hidden');
226 input.setAttribute('value','new');
227 input.setAttribute('id','zeus_card_option');
228 input.setAttribute('name','zeus_card_option');
229 card_info_area.appendChild(input);
230
231 // Input fields
232 if (uscesL10n.zeus_form == 'cart' && uscesL10n.zeus_quickcharge == 'on' && uscesL10n.zeus_cardupdate_url != undefined) {
233 input = document.createElement('input');
234 input.setAttribute('type', 'radio');
235 input.setAttribute('value', 'prev');
236 input.setAttribute('id', 'zeus_token_action_type_quick');
237 input.setAttribute('name', 'zeus_card_option_type');
238 card_info_area.appendChild(input);
239
240 label = document.createElement('label');
241 label.setAttribute('for', 'zeus_token_action_type_quick');
242 label.textContent = this.zeusTokenItem["zeus_token_action_type_quick_label"];
243 card_info_area.appendChild(label);
244 }
245
246 zeus_registerd_card_area = document.createElement('div');
247 zeus_registerd_card_area.setAttribute('id', 'zeus_registerd_card_area');
248
249 if ((uscesL10n.zeus_form == 'cart' && uscesL10n.zeus_quickcharge == 'on' && uscesL10n.zeus_cardupdate_url != undefined) ||
250 (uscesL10n.zeus_form == 'member' && uscesL10n.zeus_quickcharge == 'on')) {
251 if (uscesL10n.zeus_partofcard != "") {
252 label = document.createElement('label');
253 label.textContent = uscesL10n.zeus_partofcard + " " + this.zeusTokenItem["zeus_token_card_number_last4digits_label"];
254 zeus_registerd_card_area.appendChild(label);
255 }
256 }
257
258 if (uscesL10n.zeus_form == 'cart' && uscesL10n.zeus_quickcharge == 'on' && uscesL10n.zeus_cardupdate_url != undefined) {
259 wc_nonce = document.getElementById("wc_nonce");
260 cardupdate_url = document.createElement("a");
261 cardupdate_url.href = decodeURIComponent(uscesL10n.zeus_cardupdate_url)+"&wc_nonce="+wc_nonce.value;
262 var str = document.createTextNode(this.zeusTokenItem["zeus_token_card_number_change_label"]);
263 cardupdate_url.appendChild(str);
264 zeus_registerd_card_area.appendChild(cardupdate_url);
265 }
266
267 // label = document.createElement('label');
268 // label.setAttribute('for', 'zeus_token_card_cvv_for_registerd_card');
269 // label.textContent = this.zeusTokenItem["zeus_token_card_cvv_for_registerd_card_label"];
270 // zeus_registerd_card_area.appendChild(label);
271
272 // input = document.createElement('input');
273 // input.setAttribute('type', 'tel');
274 // input.setAttribute('value', '');
275 // input.setAttribute('id', 'zeus_token_card_cvv_for_registerd_card');
276 // input.setAttribute('name', 'zeus_token_card_cvv_for_registerd_card');
277 // input.setAttribute('size', '4');
278 // input.setAttribute('maxlength', '5');
279 // zeus_registerd_card_area.appendChild(input);
280
281 card_info_area.appendChild(zeus_registerd_card_area);
282
283 if (uscesL10n.zeus_form == 'cart' && uscesL10n.zeus_quickcharge == 'on' && uscesL10n.zeus_cardupdate_url != undefined) {
284 input = document.createElement('input');
285 input.setAttribute('type', 'radio');
286 input.setAttribute('value', 'new');
287 input.setAttribute('id', 'zeus_token_action_type_new');
288 input.setAttribute('name', 'zeus_card_option_type');
289 card_info_area.appendChild(input);
290
291 label = document.createElement('label');
292 label.setAttribute('for', 'zeus_token_action_type_new');
293 label.textContent = this.zeusTokenItem["zeus_token_action_type_new_label"];
294 card_info_area.appendChild(label);
295 }
296
297 zeus_new_card_area = document.createElement('div');
298 zeus_new_card_area.setAttribute('id', 'zeus_new_card_area');
299
300 label = document.createElement('label');
301 label.setAttribute('for', 'zeus_token_card_number');
302 label.textContent = this.zeusTokenItem["zeus_token_card_number_label"];
303 zeus_new_card_area.appendChild(label);
304
305 input = document.createElement('input');
306 input.setAttribute('type', 'tel');
307 input.setAttribute('value', '');
308 input.setAttribute('id', 'zeus_token_card_number');
309 input.setAttribute('name', 'zeus_token_card_number');
310 input.setAttribute('autocomplete', 'off');
311 zeus_new_card_area.appendChild(input);
312
313 label = document.createElement('label');
314 label.setAttribute('for', 'zeus_token_card_expires_month');
315 label.textContent = this.zeusTokenItem["zeus_token_card_expires_label"];
316 zeus_new_card_area.appendChild(label);
317
318 select = document.createElement('select');
319 select.setAttribute('id', 'zeus_token_card_expires_month');
320 select.setAttribute('name', 'zeus_token_card_expires_month');
321 option = document.createElement('option');
322 option.setAttribute('value', '');
323 option.textContent = '--';
324 select.appendChild(option);
325 for (var month=1; month<=12; month++) {
326 var tmp = ("0"+month).slice(-2);
327 option = document.createElement('option');
328 option.setAttribute('value', tmp);
329 option.textContent = tmp;
330 select.appendChild(option);
331 }
332 zeus_new_card_area.appendChild(select);
333
334 span = document.createElement('span');
335 span.setAttribute('id', 'zeus_token_card_expires_month_suffix');
336 span.textContent = this.zeusTokenItem["zeus_token_card_expires_month_suffix"] + '/';
337 zeus_new_card_area.appendChild(span);
338
339 select = document.createElement('select');
340 select.setAttribute('id', 'zeus_token_card_expires_year');
341 select.setAttribute('name', 'zeus_token_card_expires_year');
342 option = document.createElement('option');
343 option.setAttribute('value', '');
344 option.textContent = '----';
345 select.appendChild(option);
346
347 var dt = new Date();
348 var year = dt.getFullYear();
349 var month = dt.getMonth() + 1;
350 var day = dt.getDate();
351
352 if ( month == 1 && day <= 5 ) {
353 year = year - 1;
354 }
355
356 for (var i= year ; i <= year + 10; i++) {
357 option = document.createElement('option');
358 option.setAttribute('value', i);
359 option.textContent = i;
360 select.appendChild(option);
361 }
362 zeus_new_card_area.appendChild(select);
363
364 span = document.createElement('span');
365 span.setAttribute('id', 'zeus_token_card_expires_year_suffix');
366 span.textContent = this.zeusTokenItem["zeus_token_card_expires_year_suffix"];
367 zeus_new_card_area.appendChild(span);
368
369 zeus_new_card_area.appendChild(document.createElement('br'));
370
371 span = document.createElement('span');
372 span.setAttribute('id', 'zeus_token_card_expires_note');
373 span.textContent = this.zeusTokenItem["zeus_token_card_expires_note"];
374 zeus_new_card_area.appendChild(span);
375
376 if (uscesL10n.zeus_security == '1') {
377 label = document.createElement('label');
378 label.setAttribute('for', 'zeus_token_card_cvv');
379 label.textContent = this.zeusTokenItem["zeus_token_card_cvv_for_new_card_label"];
380 zeus_new_card_area.appendChild(label);
381
382 input = document.createElement('input');
383 input.setAttribute('type', 'tel');
384 input.setAttribute('value', '');
385 input.setAttribute('id', 'zeus_token_card_cvv');
386 input.setAttribute('name', 'zeus_token_card_cvv');
387 input.setAttribute('size', '4');
388 input.setAttribute('maxlength', '5');
389 zeus_new_card_area.appendChild(input);
390 }
391
392 label = document.createElement('label');
393 label.setAttribute('for', 'zeus_token_card_name');
394 label.textContent = this.zeusTokenItem["zeus_token_card_name_label"];
395 zeus_new_card_area.appendChild(label);
396
397 input = document.createElement('input');
398 input.setAttribute('type', 'text');
399 input.setAttribute('value', '');
400 input.setAttribute('id', 'zeus_token_card_name');
401 input.setAttribute('name', 'zeus_token_card_name');
402 input.setAttribute('placeholder', this.zeusTokenItem["zeus_token_card_name_placeholder"]);
403 zeus_new_card_area.appendChild(input);
404
405 if (uscesL10n.zeus_3ds == '1') {
406 label1 = document.createElement('label');
407 label1.htmlFor = 'zeus_agreement_note';
408 label1.textContent = this.zeusTokenItem["zeus_agreement_note_label"];
409 textarea = document.createElement('textarea');
410 textarea.id = 'zeus_agreement_note';
411 textarea.readOnly = true;
412 textarea.style.width = '100%';
413 textarea.rows = 5;
414 textarea.textContent = this.agreementMessage;
415
416 div = document.createElement('div');
417 div.style.display = 'flex';
418 div.style.alignItems = 'center';
419 label2 = document.createElement('label');
420 label2.htmlFor = 'zeus_agree_check';
421 label2.className = 'iopt_label';
422 checkbox = document.createElement('input');
423 checkbox.type = 'checkbox';
424 checkbox.id = 'zeus_agree_check';
425 checkbox.value = 'agree';
426 span = document.createElement('span');
427 span.className = 'checkmark';
428 labelText = document.createTextNode(this.zeusTokenItem["zeus_agree_check_label"]);
429 label2.appendChild(checkbox);
430 label2.appendChild(span);
431 label2.appendChild(labelText);
432 div.appendChild(label2);
433
434 container = document.createElement('div');
435 container.style.marginTop = '5px';
436 container.appendChild(label1);
437 container.appendChild(textarea);
438 container.appendChild(div);
439 zeus_new_card_area.appendChild(container);
440 }
441
442 card_info_area.appendChild(zeus_new_card_area);
443 };
444
445 // 「登録済みのカードを使う」の�
446 目を活性化
447 zeusTokenClass.prototype.enableRegisterdCardArea = function() {
448 var obj;
449
450 if (uscesL10n.zeus_security == '1') {
451 obj = document.getElementById('zeus_token_card_cvv_for_registerd_card');
452 obj.disabled = false;
453 obj.classList.remove('zeus_token_input_disable');
454 obj.classList.remove('zeus_token_input_error');
455 obj.classList.add('zeus_token_input_normal');
456 }
457 };
458
459 // 「登録済みのカードを使う」の�
460 目を非活性化
461 zeusTokenClass.prototype.disableRegisterdCardArea = function() {
462 var obj;
463
464 if (uscesL10n.zeus_security == '1') {
465 obj = document.getElementById('zeus_token_card_cvv_for_registerd_card');
466 obj.value = "";
467 obj.disabled = "disabled";
468 obj.classList.remove('zeus_token_input_error');
469 obj.classList.remove('zeus_token_input_normal');
470 obj.classList.add('zeus_token_input_disable');
471 }
472 };
473
474 // 「新しいカードを使う」の�
475 目を活性化
476 zeusTokenClass.prototype.enableNewCardArea = function() {
477 var obj;
478
479 obj = document.getElementById('zeus_token_card_number');
480 obj.disabled = false;
481 obj.classList.remove('zeus_token_input_disable');
482 obj.classList.remove('zeus_token_input_error');
483 obj.classList.add('zeus_token_input_normal');
484
485 obj = document.getElementById('zeus_token_card_expires_month');
486 obj.disabled = false;
487 obj.classList.remove('zeus_token_input_disable');
488 obj.classList.remove('zeus_token_input_error');
489 obj.classList.add('zeus_token_input_normal');
490
491 obj = document.getElementById('zeus_token_card_expires_year');
492 obj.disabled = false;
493 obj.classList.remove('zeus_token_input_disable');
494 obj.classList.remove('zeus_token_input_error');
495 obj.classList.add('zeus_token_input_normal');
496
497 if (uscesL10n.zeus_security == '1') {
498 obj = document.getElementById('zeus_token_card_cvv');
499 obj.disabled = false;
500 obj.classList.remove('zeus_token_input_disable');
501 obj.classList.remove('zeus_token_input_error');
502 obj.classList.add('zeus_token_input_normal');
503 }
504
505 obj = document.getElementById('zeus_token_card_name');
506 obj.disabled = false;
507 obj.classList.remove('zeus_token_input_disable');
508 obj.classList.remove('zeus_token_input_error');
509 obj.classList.add('zeus_token_input_normal');
510 };
511
512 // 「新しいカードを使う」の�
513 目を非性化
514 zeusTokenClass.prototype.disableNewCardArea = function() {
515 var obj;
516
517 obj = document.getElementById('zeus_token_card_number');
518 obj.value = "";
519 obj.disabled = "disabled";
520 obj.classList.remove('zeus_token_input_error');
521 obj.classList.remove('zeus_token_input_normal');
522 obj.classList.add('zeus_token_input_disable');
523
524 obj = document.getElementById('zeus_token_card_expires_month');
525 obj.selectedIndex = 0;
526 obj.disabled = "disabled";
527 obj.classList.remove('zeus_token_input_error');
528 obj.classList.remove('zeus_token_input_normal');
529 obj.classList.add('zeus_token_input_disable');
530
531 obj = document.getElementById('zeus_token_card_expires_year');
532 obj.selectedIndex = 0;
533 obj.disabled = "disabled";
534 obj.classList.remove('zeus_token_input_error');
535 obj.classList.remove('zeus_token_input_normal');
536 obj.classList.add('zeus_token_input_disable');
537
538 if (uscesL10n.zeus_security == '1') {
539 obj = document.getElementById('zeus_token_card_cvv');
540 obj.value = "";
541 obj.disabled = "disabled";
542 obj.classList.remove('zeus_token_input_error');
543 obj.classList.remove('zeus_token_input_normal');
544 obj.classList.add('zeus_token_input_disable');
545 }
546
547 obj = document.getElementById('zeus_token_card_name');
548 obj.value = "";
549 obj.disabled = "disabled";
550 obj.classList.remove('zeus_token_input_error');
551 obj.classList.remove('zeus_token_input_normal');
552 obj.classList.add('zeus_token_input_disable');
553 };
554
555 // カード�
556 報�
557 �力フォームのバリデーション
558 zeusTokenClass.prototype.validateCardForm = function() {
559 var validateResult = true;
560 var error_code = "";
561 var obj;
562 obj = document.getElementById('zeus_token_card_number');
563 if (obj.value == "") {
564 validateResult = false;
565 if( error_code == "" ) error_code = "02130514";
566 obj.classList.remove('zeus_token_input_disable');
567 obj.classList.remove('zeus_token_input_normal');
568 obj.classList.add('zeus_token_input_error');
569 } else {
570 obj.classList.remove('zeus_token_input_disable');
571 obj.classList.remove('zeus_token_input_error');
572 obj.classList.add('zeus_token_input_normal');
573 }
574 obj = document.getElementById('zeus_token_card_expires_month');
575 if (obj.selectedIndex == 0) {
576 validateResult = false;
577 if( error_code == "" ) error_code = "02130814";
578 obj.classList.remove('zeus_token_input_disable');
579 obj.classList.remove('zeus_token_input_normal');
580 obj.classList.add('zeus_token_input_error');
581 } else {
582 obj.classList.remove('zeus_token_input_disable');
583 obj.classList.remove('zeus_token_input_error');
584 obj.classList.add('zeus_token_input_normal');
585 }
586 obj = document.getElementById('zeus_token_card_expires_year');
587 if (obj.selectedIndex == 0) {
588 validateResult = false;
589 if( error_code == "" ) error_code = "02130714";
590 obj.classList.remove('zeus_token_input_disable');
591 obj.classList.remove('zeus_token_input_normal');
592 obj.classList.add('zeus_token_input_error');
593 } else {
594 obj.classList.remove('zeus_token_input_disable');
595 obj.classList.remove('zeus_token_input_error');
596 obj.classList.add('zeus_token_input_normal');
597 }
598 if (uscesL10n.zeus_security == '1') {
599 obj = document.getElementById('zeus_token_card_cvv');
600 if (obj.value == "") {
601 validateResult = false;
602 if (error_code == "") error_code = "02131017";
603 obj.classList.remove('zeus_token_input_disable');
604 obj.classList.remove('zeus_token_input_normal');
605 obj.classList.add('zeus_token_input_error');
606 } else {
607 obj.classList.remove('zeus_token_input_disable');
608 obj.classList.remove('zeus_token_input_error');
609 obj.classList.add('zeus_token_input_normal');
610 }
611 }
612 obj = document.getElementById('zeus_token_card_name');
613 if (obj.value == "") {
614 validateResult = false;
615 if( error_code == "" ) error_code = "02131117";
616 obj.classList.remove('zeus_token_input_disable');
617 obj.classList.remove('zeus_token_input_normal');
618 obj.classList.add('zeus_token_input_error');
619 } else {
620 if (/^[A-Za-z0-9\s]+$/.test(obj.value)) {
621 obj.classList.remove('zeus_token_input_disable');
622 obj.classList.remove('zeus_token_input_error');
623 obj.classList.add('zeus_token_input_normal');
624 } else {
625 validateResult = false;
626 if( error_code == "" ) error_code = "E0000002";
627 obj.classList.remove('zeus_token_input_disable');
628 obj.classList.remove('zeus_token_input_normal');
629 obj.classList.add('zeus_token_input_error');
630 }
631 }
632
633 if (uscesL10n.zeus_3ds == '1') {
634 obj = document.getElementById('zeus_agree_check');
635 if (obj.checked) {
636 obj.classList.remove('zeus_token_input_disable');
637 obj.classList.remove('zeus_token_input_error');
638 obj.classList.add('zeus_token_input_normal');
639 } else {
640 validateResult = false;
641 if( error_code == "" ) error_code = "E0000001";
642 obj.classList.remove('zeus_token_input_disable');
643 obj.classList.remove('zeus_token_input_normal');
644 obj.classList.add('zeus_token_input_error');
645 }
646 }
647
648 // return validateResult;
649 return error_code;
650 };
651
652 // �
653 �力されたカード�
654 報からトークンを取得する
655 zeusTokenClass.prototype.getToken = function(callback_function) {
656 var action_type = ''; // 空欄で送信された場合の�
657 �力チェックは、サーバサイドで行われ、エラーコード101020で返却される。
658 if (uscesL10n.zeus_form == 'cart' && uscesL10n.zeus_quickcharge == 'on' && uscesL10n.zeus_cardupdate_url != undefined) {
659 if (document.getElementById('zeus_token_action_type_new').checked) {
660 action_type = 'newcard'
661 }
662 if (document.getElementById('zeus_token_action_type_quick').checked) {
663 action_type = 'quick'
664 }
665 } else {
666 action_type = 'newcard';
667 }
668
669 // if (document.getElementById('zeus_token_action_type_new').checked) {
670 // var validateResult = this.validateCardForm();
671 // }
672
673 // var CheckCode = this.InputCheckCardForm( action_type );
674 // if ( CheckCode != '' ) {
675 if (action_type == 'newcard') {
676 var error_code = this.validateCardForm();
677 if (error_code != '') {
678 var data = {
679 'result' : 0,
680 'error_code' : error_code,
681 };
682 if (typeof callback_function == 'function') {
683 // 指定されたコールバック関数を実行する
684 callback_function(data);
685 }
686 return;
687 }
688 }
689
690 var request = new XMLHttpRequest();
691 request.onreadystatechange = function() {
692 switch (this.readyState) {
693 case 4:
694 if (this.status == 0) {
695 // 通信失敗
696 var data = {
697 'result' : 0,
698 'error_code' : '90100100',
699 };
700 if (typeof callback_function == 'function') {
701 // 指定されたコールバック関数を実行する
702 callback_function(data);
703 }
704 return;
705 }
706 if ((200 <= this.status && this.status < 300) || (this.status == 304)) {
707
708 var xml = this.responseXML.documentElement;
709 var status = '';
710 if (xml.getElementsByTagName('status').length != 0) {
711 status = xml.getElementsByTagName('status')[0].textContent;
712 }
713 var error_code = '';
714 if (xml.getElementsByTagName('code').length != 0) {
715 error_code = xml.getElementsByTagName('code')[0].textContent;
716 }
717
718 switch (status) {
719 case 'success' :
720 var token_key = '';
721 if (xml.getElementsByTagName('token_key').length != 0) {
722 token_key = xml.getElementsByTagName('token_key')[0].textContent;
723 }
724 var masked_card_number = '';
725 if (xml.getElementsByTagName('masked_card_number').length != 0) {
726 masked_card_number = xml.getElementsByTagName('masked_card_number')[0].textContent;
727 }
728 var masked_cvv = '';
729 if (xml.getElementsByTagName('masked_cvv').length != 0) {
730 masked_cvv = xml.getElementsByTagName('masked_cvv')[0].textContent;
731 }
732 var card_expires_month = '';
733 if (xml.getElementsByTagName('card_expires_month').length != 0) {
734 card_expires_month = xml.getElementsByTagName('card_expires_month')[0].textContent;
735 }
736 var card_expires_year = '';
737 if (xml.getElementsByTagName('card_expires_year').length != 0) {
738 card_expires_year = xml.getElementsByTagName('card_expires_year')[0].textContent;
739 }
740 var card_name = '';
741 if (xml.getElementsByTagName('card_name').length != 0) {
742 card_name = xml.getElementsByTagName('card_name')[0].textContent;
743 }
744 var data = {
745 'result' : 1,
746 'token_key' : token_key,
747 'masked_card_number' : masked_card_number,
748 'masked_cvv' : masked_cvv,
749 'card_expires_month' : card_expires_month,
750 'card_expires_year' : card_expires_year,
751 'card_name' : card_name,
752 };
753 // 返却値をhiddenにセットし、カード�
754 報�
755 目をサーバへ送らないよう消す
756 document.getElementById('zeus_token_value').value = data['token_key'];
757 document.getElementById('zeus_token_masked_card_no').value = data['masked_card_number'];
758 document.getElementById('zeus_token_return_card_expires_month').value = data['card_expires_month'];
759 document.getElementById('zeus_token_return_card_expires_year').value = data['card_expires_year'];
760 document.getElementById('zeus_token_masked_cvv').value = data['masked_cvv'];
761 document.getElementById('zeus_token_return_card_name').value = data['card_name'];
762 document.getElementById('zeus_registerd_card_area').textContent = null;
763 document.getElementById('zeus_new_card_area').textContent = null;
764 break;
765 case 'invalid' :
766 case 'failure' :
767 var data = {
768 'result' : 0,
769 'error_code' : error_code,
770 };
771 break;
772 case 'maintenance' :
773 var data = {
774 'result' : 0,
775 'error_code' : '88888888',
776 };
777 break;
778 default :
779 var data = {
780 'result' : 0,
781 'error_code' : '99999999',
782 };
783 break;
784 }
785
786 if (typeof callback_function == 'function') {
787 // 指定されたコールバック関数を実行する
788 callback_function(data);
789 }
790 }
791 }
792 }
793
794 var zeus_token_card_cvv = '';
795 if (uscesL10n.zeus_security == '1') {
796 if (action_type == 'newcard') {
797 zeus_token_card_cvv = document.getElementById('zeus_token_card_cvv').value;
798 } else if (action_type == 'quick') {
799 zeus_token_card_cvv = document.getElementById('zeus_token_card_cvv_for_registerd_card').value;
800 }
801 }
802
803 var data = '<?xml version="1.0" encoding="utf-8"?>' +
804 '<request service="token" action="' + action_type + '">' +
805 '<authentication>' +
806 '<clientip>' + this.ipcode + '</clientip>' +
807 '</authentication>' +
808 '<card>';
809 if (zeus_token_card_cvv != "") {
810 data = data +
811 '<cvv>' + zeus_token_card_cvv + '</cvv>';
812 }
813
814 if (action_type == 'newcard') {
815 var zeus_token_card_number = document.getElementById('zeus_token_card_number').value;
816 var objYear = document.getElementById('zeus_token_card_expires_year');
817 var zeus_token_card_expires_year = objYear.options[objYear.selectedIndex].value;
818 var objMonth = document.getElementById('zeus_token_card_expires_month');
819 var zeus_token_card_expires_month = objMonth.options[objMonth.selectedIndex].value;
820 var zeus_token_card_name = document.getElementById('zeus_token_card_name').value;
821
822 // if (document.getElementById('zeus_token_action_type_new').checked) {
823 data = data +
824 '<number>' + zeus_token_card_number + '</number>' +
825 '<expires>' +
826 '<year>' + zeus_token_card_expires_year + '</year>' +
827 '<month>' + zeus_token_card_expires_month + '</month>' +
828 '</expires>' +
829 '<name>' + zeus_token_card_name + '</name>';
830 // }
831 }
832 data = data +
833 '</card>' +
834 '</request>';
835
836 request.open("POST", this.cgiUrl, false);
837 request.setRequestHeader("Content-Type", "text/xml");
838 try {
839 request.send(data);
840 } catch(e) {
841 // 通信失敗
842 var return_data = {
843 'result' : 0,
844 'error_code' : '90100100',
845 };
846 if (typeof callback_function == 'function') {
847 // 指定されたコールバック関数を実行する
848 callback_function(return_data);
849 }
850 return;
851 }
852 };
853
854 var zeusToken = new zeusTokenClass();
855
856 var zeusTokenStart = function() {
857 zeusToken.init();
858
859 // document.getElementById('zeus_token_card_name').onchange = function() {
860 // zeusToken.validateCardForm();
861 // };
862 // document.getElementById('zeus_token_card_number').onchange = function() {
863 // zeusToken.validateCardForm();
864 // };
865 // document.getElementById('zeus_token_card_expires_month').onchange = function() {
866 // zeusToken.validateCardForm();
867 // };
868 // document.getElementById('zeus_token_card_expires_year').onchange = function() {
869 // zeusToken.validateCardForm();
870 // };
871 // document.getElementById('zeus_token_card_cvv').onchange = function() {
872 // zeusToken.validateCardForm();
873 // };
874
875 if (uscesL10n.zeus_form == 'cart' && uscesL10n.zeus_quickcharge == 'on' && uscesL10n.zeus_cardupdate_url != undefined) {
876 document.getElementById('zeus_token_action_type_new').onclick = function() {
877 // zeusToken.disableRegisterdCardArea();
878 zeusToken.enableNewCardArea();
879 // zeusToken.validateCardForm();
880 document.getElementById('zeus_card_option').value = this.value;
881 };
882 document.getElementById('zeus_token_action_type_quick').onclick = function() {
883 // zeusToken.enableRegisterdCardArea();
884 zeusToken.disableNewCardArea();
885 document.getElementById('zeus_card_option').value = this.value;
886 };
887 }
888 }
889
890 if( window.addEventListener ) {
891 window.addEventListener( 'load', zeusTokenStart, false );
892 } else if( window.attachEvent ) {
893 window.attachEvent( 'onload', zeusTokenStart );
894 } else {
895 window.onload = zeusTokenStart;
896 }
897