-
Notifications
You must be signed in to change notification settings - Fork 13
/
qna.html
908 lines (887 loc) · 59 KB
/
qna.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>자주 묻는 질문</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="shortcut icon" href="https://static.toss.im/tds/favicon/favicon.ico"/>
<link rel="icon" type="image/png" sizes="16x16" href="https://static.toss.im/tds/favicon/favicon-16x16.png"/>
<link rel="icon" type="image/png" sizes="32x32" href="https://static.toss.im/tds/favicon/favicon-32x32.png"/>
<link rel="icon" type="image/png" sizes="48x48" href="https://static.toss.im/tds/favicon/favicon-48x48.png"/>
<link rel="icon" type="image/png" sizes="196x196" href="https://static.toss.im/tds/favicon/favicon-196x196.png"/>
<link rel="apple-touch-icon" sizes="57x57" href="https://static.toss.im/tds/favicon/apple-touch-icon-57x57.png"/>
<link rel="apple-touch-icon" sizes="72x72" href="https://static.toss.im/tds/favicon/apple-touch-icon-72x72.png"/>
<link rel="apple-touch-icon" sizes="114x114" href="https://static.toss.im/tds/favicon/apple-touch-icon-114x114.png"/>
<link rel="apple-touch-icon" sizes="120x120" href="https://static.toss.im/tds/favicon/apple-touch-icon-120x120.png"/>
<link rel="apple-touch-icon" sizes="144x144" href="https://static.toss.im/tds/favicon/apple-touch-icon-144x144.png"/>
<link rel="apple-touch-icon" sizes="152x152" href="https://static.toss.im/tds/favicon/apple-touch-icon-152x152.png"/>
<meta name="msapplication-TileImage" content="https://static.toss.im/tds/favicon/mstile-144x144.png"/>
<!-- stylesheets -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" integrity="sha512-dTfge/zgoMYpP7QbHy4gWMEGsbsdZeCXz7irItjcC3sPUFtf0kuFbDz/ixG7ArTxmDjLXDmezHubeNikyKGVyQ==" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="https://static.toss.im/tds/current/css/tds.min.css">
<link rel="stylesheet" type="text/css" href="css/tossdev.css" />
<!-- javascript -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js" integrity="sha512-K1qjQ+NcF2TYO/eI3M6v8EiNYZfA95pQumfvcVrTHtwQVDG+aHRqLi/ETn2uB+1JqwYqVG3LIvdm9lj6imS/pQ==" crossorigin="anonymous"></script>
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body id="gettingstarted" data-spy="scroll" data-target="#guide" data-offset="0" oncontextmenu="return false" ondragstart="return false" >
<!-- Google Tag Manager -->
<noscript>
<iframe src="//www.googletagmanager.com/ns.html?id=GTM-TPTMLG" height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<script>
(function(w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src =
'//www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-TPTMLG');
</script>
<!-- End Google Tag Manager -->
<div class="sidebar">
<div class="logo">
<a href="index.html">
<img class="logo-img" src="https://static.toss.im/tds/icon/svg/logo-only-icon.svg" alt="">
<span>결제 연동 가이드</span>
</a>
</div>
<div id="guide">
<h1>
<a href="#">자주 묻는 질문</a>
</h1>
<ul class="menu nav">
<li>
<a href="#faq-0">토스페이 연동 테스트 방식</a>
</li>
<li>
<a href="#faq-1">토스 연동을 위한 방화벽 설정</a>
</li>
<li>
<a href="#faq-2">토스 인코딩 방식</a>
</li>
<li>
<a href="#faq-3">Time Out 처리</a>
</li>
<li>
<a href="#faq-4">retUrl 이동의 실패</a>
</li>
<li>
<a href="#faq-5">resultCallback 처리방안</a>
</li>
<li>
<a href="#faq-6">resultCallback 실패</a>
</li>
<li>
<a href="#faq-7">결제 에러 응답코드</a>
</li>
<li>
<a href="#faq-8">토스 은행 코드 리스트</a>
</li>
</ul>
</div>
</div>
<div id="contents">
<div id="methods">
<div class="method" id="member">
<div class="method-description">
<h3>자주 묻는 질문</h3>
<p>
이제, 토스페이 서비스에 대해 좀 더 자세하게 안내드립니다.<br> 이 항목은 지속적으로 업데이트될 예정이며, 궁금하신 사항은 언제든지 토스페이팀(support-pay@toss.im)으로 의견주세요!
</p>
<h4 id="faq-0">토스페이 연동 테스트 방식</h4><br>
<p>
토스페이 연동 구축 시, 가맹점은 두 가지 방식으로 테스트를 진행할 수 있습니다.<br>
각각의 방법을 확인하신 후, 적합한 방법을 선택하여 테스트를 진행해 주세요.
</p>
<ol>
<strong><li>운영 환경에서 테스트용 apiKey를 사용하여 테스트 진행</li></strong>
<p>
운영 환경(pay.toss.im)에서 테스트용 apiKey를 사용해 테스트를 진행한 후,<br>
테스트 완료 시 실거래용 apiKey로 교체하여 실제 사용자들에게 서비스를 오픈하는 방식입니다.<br>
<ul>
<li><strong>테스트용 apiKey (sk_test_****)</strong>: 이 키는 운영 환경을 통해 요청이 전달되며, 기록도 운영 DB에 남습니다.<br>
테스트 거래로 인식되어 실제 금전 이동이나 정산은 발생하지 않습니다.<br>
예를 들어, 머니/계좌 결제 시 출금이 없고, 카드 결제 시 실제 승인이 이루어지지 않습니다. 하지만 응답은 정상적으로 처리됩니다.<br></li>
<li><strong>실거래용 apiKey (sk_live_****)</strong>: 실제 사용자에게 서비스를 오픈할 때 사용하는 키입니다. <br>
이 키를 사용하면 실제 거래로 인식되어 금전 이동 및 정산이 발생하게 되기 때문에 해당 apiKey 로 테스트 결제 시에는 꼭 당일 취소가 될 수 있도록 처리 부탁드립니다.<br>
<strong style="color: red;">주의사항: 운영 환경에서 테스트용 apiKey를 사용하더라도 순간적인 공격성 요청이 발생하면 IP가 자동으로 차단될 수 있으니 주의해 주세요!</strong></li>
</ul>
</p>
<strong><li>개발 환경에서 테스트 후 운영 환경 오픈</li></strong>
<p>
개발 환경(alpha-pay.toss.im)에서 테스트 진행 후, 운영 환경으로 전환하여 서비스를 오픈하는 방식입니다.<br>
<strong>개발 환경에서 테스트를 위해 별도의 개발 apiKey가 발급됩니다.</strong><br>
<ul>
<li><strong>테스트용 apiKey (sk_test_****)</strong>: 개발 환경에서 요청이 전달되며, 기록은 개발 DB에 남습니다.<br>
이 과정에서도 금전 이동이나 정산은 발생하지 않습니다.<br></li>
<li><strong>실거래용 apiKey (sk_live_****)</strong>: 개발 환경에서 요청이 전달되고, 실제 금전 이동이 발생합니다.<br>
예를 들어, 토스 개발계 앱에 등록된 계좌에서 금액이 출금되거나, 카드사 테스트 카드가 등록되고 카드사로부터 응답을 받습니다.<br></li>
</ul>
</p>
</ol>
</br>
<li><strong>개발 환경 테스트 주의사항:</strong></li>
<ul>
<li>사전에 방화벽 등록이 필요하며, 토스 개발계 앱을 별도로 설치해야 합니다.</li>
<li>개발 환경 접근은 허용된 IP에서만 가능하므로, 가맹점의 IP 정보를 토스에 전달하여 등록해 주세요.</li>
<li>앱 스토어에서 다운로드 가능한 일반 토스 앱이 아닌, 별도의 알파 앱을 사용해야 하므로 설치가 필요한 분의 성명, 이메일 주소, 사용하는 모바일 OS(iOS/AOS) 정보를 전달해 주세요.</li>
<li>추가로 개발계 쪽은 실제 휴대폰 인증이 진행되는 게 아니라서 따로 인증번호를 발급해드리고 있습니다.<br>
토스 개발계 앱에 가입하실 휴대폰 번호를 알려주셔야 인증번호 발급이 가능합니다.</li></ul>
<h5>추가 테스트 방법 안내<h5>
<li><strong>운영 환경 테스트 방법:</strong></li>
<ul>
<li>계약이 완료된 경우, 가맹점 전용 테스트용 apiKey를 사용하여 테스트할 수 있습니다.</li>
<li>계약이 완료되지 않아 MID가 발급되지 않은 상태에서 테스트를 원하는 경우, 공용 테스트용 apiKey(<strong>sk_test_w5lNQylNqa5lNQe013Nq</strong>)를 사용할 수 있습니다.
이 키는 운영 환경에서 여러 가맹점이 공용으로 사용하는 테스트 키로, 많은 가맹점의 테스트 거래가 섞일 수 있습니다.</li>
<li>테스트 시, 최신 버전의 토스 앱을 사용하고 실제 소유한 개인 카드를 등록한 후 진행해 주세요.</li><br>
</ul>
<h5> ✓ 토스페이 apiKey는 가맹점(MID)별로 테스트용 apiKey와 실거래용 apiKey가 한 쌍으로 제공됩니다.<br>
이 두 환경을 정확히 구분하여 안전하게 연동 작업을 진행해 주세요.<br><h5>
<h5> ✓ 위의 내용을 참고하여, 각 환경에 맞게 안전하고 효율적으로 테스트를 진행해 주시기 바랍니다.<h5>
</div>
</div>
<div class="method" id="member">
<div class="method-description">
<h4 id="faq-1">토스 연동을 위한 방화벽 설정</h4>
<p>
구매자는 인증을 완료했지만 가맹점 retUrl로 결제 결과가 오지 않는 경우나, 토스 서버로 부터 resultCallback 결과를 받지<br> 못한다면 먼저 방화벽 설정을 살펴봐야 합니다.<br><br>
</p>
<ol>
<strong><li>가맹점에서 토스서버로 접근하는 경우 (결제 생성, 결제 승인 등의 API)<br>
가맹점 --> 가맹점 방화벽 --> 토스페이</li>
</strong><br>
위의 경우에는 가맹점 방화벽의 outbound 정책에 아래 토스 IP를 추가해 주시면 됩니다. <br>
<strong>domain : <font color="blue">pay.toss.im </font> (port : 443)</strong>
<ul>
<li>117.52.3.202</li>
</ul>
<ul>
<li>117.52.3.210</li>
</ul>
<ul>
<li>211.115.96.202</li>
</ul>
<ul>
<li>211.115.96.210</li><br>
</ul>
<strong><li>토스서버에서 가맹점으로 접근하는 경우 (resultCallback를 포함하는 경우만 사용)<br>
토스페이 --> 가맹점 방화벽 --> 가맹점
</li></strong><br>
위의 경우에서는 가맹점 방화벽의 inbound 정책에 아래 토스 IP를 추가해 주시면 됩니다. <br>
<strong>domain : <font color="blue">pay.toss.im</font> (port : 443)</strong>
<ul>
<li>117.52.3.4</li>
</ul>
<ul>
<li>117.52.3.11</li>
</ul>
<ul>
<li>117.52.3.80~87</li>
</ul>
<ul>
<li>211.115.96.4</li>
</ul>
<ul>
<li>211.115.96.11</li>
</ul>
<ul>
<li>211.115.96.80~87</li>
</ul>
</ol><br>
<p> ✓ 토스페이 방화벽은 제한없이 모두 오픈되어 있습니다. </p>
<p> ✓ 각 케이스 별 구분이 어렵다면 outbound, inbound 정책에 맞게 토스 IP를 모두 추가해 주셔도 됩니다.</p>
<p> ✓ 가맹점이 설정한 resultCallback URL 에 443 이외의 포트가 포함되어 있다면 접근이 어려울 수 있으니 유의해주세요. </p>
<p> ✓ 토스 서버의 IP가 추가되는 경우 사전에 공지메일을 발송해 드립니다.</p>
</div>
</div>
<div class="method" id="member">
<div class="method-description">
<h4 id="faq-2">토스 인코딩 방식</h4><br>
<p><strong>토스 인코딩 방식은 UTF-8 형식을 사용합니다.</strong><br>
가맹점에서 토스 서버로 한글이 포함된 값(주문번호, 상품명 등)을 보내주실 때, UTF-8 형식으로 보내주셔야<br>
정상적인 response값을 확인하실 수 있습니다. <br>
유의해 주세요! 깨진 한글이 유입되면 토스 서버는 필수 값 체크를 못해 500에러 등의 오류가 발생할 수 있습니다.
</div>
</div>
<div class="method" id="member">
<div class="method-description">
<h4 id="faq-3">토스가 권장하는 Time Out 처리 시간은 무엇인가요?</h4><br>
<p>토스는 일반 은행계좌에서 토스머니로 충전 시 최대 10초의 타임아웃 시간을 설정합니다.<br>
따라서, 가맹점에서는 <strong>10초 + 3~5초 정도</strong>의 대기 시간을 잡아주시면 타임아웃으로 인한 대사 불일치 거래건이 발생하지 않습니다.
(처리 지연으로 가맹점은 취소 처리했으나 토스는 승인되는 케이스 방지)<br>
토스 이슈가 아닌 은행망 이슈를 제외하면 타임아웃으로 인한 거래 지연은 발생하지 않습니다. <br><br>
✓ 결제수단 구분 없이 모두 동일하게 설정하셔도 무방합니다. <br>
✓ 양사간 거래 확인을 위하여 정산대사를 함께 연동하시길 권장드립니다. <br>
<strong>요청 가맹점에 한하여 별도로 제공해 드리고 있으며, 신청은 support-pay@toss.im 으로 주시기 바랍니다.</strong>
</div>
</div>
<div class="method" id="member">
<div class="method-description">
<h4 id="faq-4">retUrl 이동이 실패할 수 있나요?</h4><br>
<p>retUrl의 이동은 토스 web page에서 처리되는 로직으로 일반적인 경우 처리를 보장하지만 특별한 상황에서 실패할 수 있습니다.<br>
특별한 상황이란, <strong>구매자가 결제 중에 앱을 종료하거나 백그라운드 처리를 하는 등의 이탈</strong>로 JavaScript 로직이 처리될 수 없는 경우입니다.
이 경우 구매자가 다시 결제 화면으로 돌아와서 '결제완료' 버튼을 클릭한다면 retUrl 로의 이동을 재시도 하게 됩니다.<br>
다만, 구매자가 재시도를 하지 않는 경우에는 retUrl로 이동하지 못하는 상황이 발생할 수 있습니다.</p>
</div>
</div>
<div class="method" id="member">
<div class="method-description">
<h4 id="faq-5">resultCallback을 반드시 활용해야 하나요?</h4><br>
<p>토스 서버에서 결제처리가 완료되고 나면 해당 결제건의 상태는 <strong>PAY_COMPLETE</strong>로 변경되고, 구매자를<strong>retUrl로 이동</strong>시킵니다.<br>
<strong>동시에 토스 서버에서 가맹점 서버의 resultCallback URL로 callback을 요청합니다.</strong>
retUrl은 단순 web page의 이동으로<br> 토스에서 결제 성공 여부를 확인 할 수 없고, 구매자 상황에 따라 실행을 보장할 수 없기 때문에 resultCallback을 활용하시길 권장드립니다. <br>
또한, resultCallback 은 <strong>토스 서버<->가맹점 서버 통신</strong>이므로 데이터 유실이 없고 안전합니다.
<br><br>
<ul>
<li>자동 승인 설정(autoExecute)을 true로 사용하는 가맹점에서는 필수 값입니다.</li>
</ul>
</div>
</div>
<div class="method" id="member">
<div class="method-description">
<h4 id="faq-6">resultCallback이 실패하는 이유가 뭘까요?</h4><br>
<p>토스에서는 장애 상황이 아닌 한 resultCallback 요청을 보장합니다. 단, <a href="qna.html#faq-1">결제 방화벽</a> 이슈를 제외하고 callback 요청을 받아 처리하는 것은 가맹점 서버로 많은 트래픽, 개발 중의 버그 등의
특별한 사유로 callback 요청이 실패할 수 있습니다. <br>
<strong>토스에서는 callback 실패 시, 가맹점 서버로 10분 이내에 총 4회의 재시도 요청</strong>을 하고 있으니 안심하세요. <br><br>
✓ callback 재전송 기능은 토스 가맹점 관리자 페이지에서도 확인하실 수 있습니다.
</div>
</div>
<div class="method" id="member">
<div class="method-description">
<h4 id="faq-7">결제 에러 응답코드</h4><br>
<p> ✓ 토스페이 에러코드는 예고 없이 업데이트 될 수 있습니다. 추가되더라도 오류가 발생하지 않도록 연동 부탁드립니다.<br>
<p> ✓ 토스에서는 한 가지 에러코드에 상황별로 다른 오류 메시지를 전달합니다.<br>
여러 상황이 발생할 수 있으니 되도록이면 전달되는 오류 메시지 그대로를 처리해주세요.</p><br>
<table class="table table-bordered table-hover table-condensed">
<tr class="active">
<td width="50%"><strong>응답 코드(errorCode)</strong></td>
<td width="50%"><strong>사유(msg)</strong></td>
</tr>
<tr class="active">
<td colspan="2" class="text-left"><strong>공통</strong></td>
</tr>
<tr>
<td width="50%">COMMON_SYSTEM_ERROR</td>
<td width="50%">시스템 오류로 인해 통신이 원활하지 않습니다.문제가 계속되면 토스 고객센터로 문의해주세요. (1599-4905)</td>
</tr>
<tr>
<td width="50%">COMMON_INVALID_PARAMETER</td>
<td width="50%">요청한 값이 바르지 않습니다.</td>
</tr>
<tr>
<td width="50%">COMMON_PAY_ERROR</td>
<td width="50%">문제가 발생하였습니다.</td>
</tr>
<tr>
<td width="50%">COMMON_NOT_ENOUGH_CASH</td>
<td width="50%">충전계좌의 잔액이 부족하여 토스머니 충전이 불가합니다.</td>
</tr>
<tr>
<td width="50%">COMMON_EXCEED_LIMIT</td>
<td width="50%">한도를 초과하였습니다.</td>
</tr>
<tr>
<td width="50%">COMMON_ASSET_GET_ACCOUNT_ERROR</td>
<td width="50%">계좌 정보 조회에 실패 하였습니다.</td>
</tr>
<tr>
<td width="50%">COMMON_REFUND_ERROR</td>
<td width="50%">환불이 불가능 한 상태입니다.</td>
</tr>
<tr>
<td width="50%">REFUND_REFUND_NO_DUPLICATE</td>
<td width="50%">이미 환불처리 된 refundNo 입니다.</td>
</tr>
<tr>
<td width="50%">PAYMENT_DUPLICATION_ORDER_NO</td>
<td width="50%">중복된 주문번호 입니다.</td>
</tr>
<tr>
<td width="50%">PAYMENT_EXISTING_PAYMENT</td>
<td width="50%">이미 존재하는 결제입니다.</td>
</tr>
<tr>
<td width="50%">TRANSACTION_PENDING_ERROR</td>
<td width="50%">조금 전 신청하신 결제가 아직 진행중입니다. 잠시 후 다시 시도해주세요. 이 상태가 10분 이상 지속되면 토스팀에 문의해주시기 바랍니다. (1599-4905)</td>
</tr>
<tr>
<td width="50%">INVALID_ACCOUNT_STATUS</td>
<td width="50%">계좌 상태를 확인해주세요.</td>
</tr>
<tr>
<td width="50%">FRAUD_DETECTION_SYSTEM_ERROR</td>
<td width="50%">FDS에 의해 금융거래가 차단된 상태입니다.</td>
</tr>
<tr>
<td width="50%">USER_STATUS_ERROR</td>
<td width="50%">결제 진행이 불가한 사용자입니다.</td>
</tr>
<tr>
<td width="50%">REFUND_ALREADY_REFUNDED</td>
<td width="50%">이미 전액 환불처리 된 거래 건입니다.</td>
</tr>
<tr>
<td width="50%">TRANSACTION_NOT_COMPLETE</td>
<td width="50%">거래가 완료되지 않았습니다.</td>
</tr>
<tr>
<td width="50%">TRANSACTION_NOT_FOUND</td>
<td width="50%">존재하지 않는 거래내역 입니다.</td>
</tr>
<tr>
<td width="50%">INACTIVE_USER</td>
<td width="50%">비활성 처리된 사용자입니다.</td>
</tr>
<tr>
<td width="50%">AUTO_CHARGE_NOT_YET_REGISTER_ACCOUNT</td>
<td width="50%">충전계좌가 등록되지 않았습니다.</td>
</tr>
<tr class="active">
<td colspan="2" class="text-left"><strong>USER(사용자)</strong></td>
</tr>
<tr>
<td width="50%">PAY_UNAUTHORIZED</td>
<td width="50%">결제 요청자와 토스의 계정이 일치해야만 결제가 가능합니다. 확인 후 다시 시도해 주세요.</td>
</tr>
<tr>
<td width="50%">TOSS_APP_UPDATE_IS_REQUIRED</td>
<td width="50%">결제를 진행하시려면 최신 버전의 토스앱을 이용하세요.</td>
</tr>
<tr>
<td width="50%">PAY_CANCEL_ITS_NOT_CANCELABLE_STATUS</td>
<td width="50%">결제를 취소할 수 없습니다. 잠시 후 다시 시도해주세요. 문제가 계속되면 토스 고객센터로 문의해주세요. (1599-4905)</td>
</tr>
<tr>
<td width="50%">COUPON_ASSIGN_FAIL</td>
<td width="50%">쿠폰 발급에 실패하였습니다.</td>
</tr>
<tr>
<td width="50%">DISCOUNT_CLOSED</td>
<td width="50%">할인 혜택이 마감되었습니다.</td>
</tr>
<tr>
<td width="50%">USER_DISCOUNT_CLOSED</td>
<td width="50%">1인당 할인 횟수를 초과하였습니다.</td>
</tr>
<tr>
<td width="50%">DISCOUNT_NEED_ISSUE</td>
<td width="50%">쿠폰을 발급받아 주세요.</td>
</tr>
<tr>
<td width="50%">DISCOUNT_ALREADY_ISSUED</td>
<td width="50%">쿠폰이 이미 발급되었습니다.</td>
</tr>
<tr>
<td width="50%">AVAILABLE_ONLY_TOSS_MONEY_UNDER_MIN_AMT</td>
<td width="50%">%s원 미만 금액은 %s 카드 결제가 불가합니다.</td>
</tr>
<tr>
<td width="50%">AUTO_PAY_TERM_INACTIVE_FAIL</td>
<td width="50%">약관 철회에 실패하였습니다.</td>
</tr>
<tr>
<td width="50%">AGE_POLICY_ERROR</td>
<td width="50%">%d세 미만인 경우 토스 %s 서비스를 이용하실 수 없습니다.</td>
</tr>
<tr>
<td width="50%">PAY_FRAUD_DETECTED</td>
<td width="50%">일시적으로 토스 서비스를 이용하실 수 없습니다. 문제가 계속되면 토스 고객센터로 문의해주세요. (1599-4905)</td>
</tr>
<tr>
<td width="50%">BLOCKED_THE_USE_OF_POINT</td>
<td width="50%">법원 압류 판결로 인해 토스포인트를 쓸 수 없어요. 궁금한 점이 있다면 토스 고객센터(1599-4905)로 문의해주세요.</td>
</tr>
<tr class="active">
<td colspan="2" class="text-left"><strong>카드</strong></td>
</tr>
<tr>
<td width="50%">CARD_SYSTEM_ERROR</td>
<td width="50%">카드사 시스템 점검 중입니다. 잠시 후 다시 시도해주세요.</td>
</tr>
<tr>
<td width="50%">CARD_BANK_SYSTEM_ERROR</td>
<td width="50%">카드사 거래은행 시스템 점검 중입니다. 잠시 후 다시 시도해주세요</td>
</tr>
<tr>
<td width="50%">CARD_NOT_AVAILABLE_SHOP</td>
<td width="50%">해당카드로 결제가 불가합니다. 다른 결제수단으로 다시 시도하거나 토스 고객센터로 문의해주세요.(1599-4905)</td>
</tr>
<tr>
<td width="50%">CARD_NOT_AVAILABLE</td>
<td width="50%">도난/분실/거래정지 카드로 승인이 거절되었습니다.</td>
</tr>
<tr>
<td width="50%">CARD_EXCEED_LIMIT</td>
<td width="50%">사용한도 초과로 승인이 거절되었습니다.</td>
</tr>
<tr>
<td width="50%">CARD_NOT_ENOUGH_BALANCE</td>
<td width="50%">잔고 부족으로 승인이 거절되었습니다.</td>
</tr>
<tr>
<td width="50%">CARD_SPREADOUT_ERROR</td>
<td width="50%">할부 사용이 불가능한 카드로 승인이 거절되었습니다.</td>
</tr>
<tr>
<td width="50%">CARD_MIN_AMOUNT_ERROR</td>
<td width="50%">금액오류(100원 또는 1달러 미만 신용카드 승인 불가)</td>
</tr>
<tr>
<td width="50%">CARD_MIN_AMOUNT_FOR_SPREADOUT_ERROR</td>
<td width="50%">할부 결제는 결제금액이 50,000원 이상만 가능합니다. 일시불로 결제해주세요.</td>
</tr>
<tr class="active">
<td colspan="2" class="text-left"><strong>BNPL(후불결제)</strong></td>
</tr>
<tr>
<td width="50%">BNPL_INVALID_REQUEST</td>
<td width="50%">잘못된 요청입니다.</td>
</tr>
<tr>
<td width="50%">BNPL_NOT_EXIST_USER</td>
<td width="50%">존재하지 않는 BNPL 사용자 입니다.</td>
</tr>
<tr>
<td width="50%">BNPL_EXCEED_PAYABLE_AMOUNT</td>
<td width="50%">BNPL 한도가 초과되었습니다.</td>
</tr>
<tr>
<td width="50%">BNPL_ALREADY_COMPLETED_REQUEST</td>
<td width="50%">이미 처리 된 요청입니다.</td>
</tr>
<tr>
<td width="50%">BNPL_IN_PROGRESS_REQUEST</td>
<td width="50%">이미 처리 중인 요청입니다.</td>
</tr>
<tr>
<td width="50%">BNPL_NOT_FOUND_PAYMENT</td>
<td width="50%">존재하지 않는 결제건 입니다.</td>
</tr>
<tr>
<td width="50%">BNPL_ALREADY_COMPLETED_REFUND</td>
<td width="50%">환불 할 수 없는 결제 건 입니다.</td>
</tr>
<tr>
<td width="50%">NOT_SET_BNPL_PAYMENT_ACCOUNT</td>
<td width="50%">후불결제 진행을 위해 납부계좌 설정이 필요해요.</td>
</tr>
</tr>
<tr class="active">
<td colspan="2" class="text-left"><strong>매출전표</strong></td>
</tr>
<tr>
<td width="50%">SALES_CHECK_NOT_FOUND_USER</td>
<td width="50%">매출전표 조회를 위한 사용자 정보가 존재하지 않습니다.</td>
</tr>
<tr>
<td width="50%">SALES_CHECK_USER_AUTH_FAIL</td>
<td width="50%">매출전표 조회를 위한 사용자 정보 인증에 실패하였습니다.</td>
</tr>
<tr>
<td width="50%">SALES_CHECK_USER_AUTH_DECRYPT_FAIL</td>
<td width="50%">매출전표 조회를 위한 사용자 정보 복호화에 실패하였습니다.</td>
</tr>
<tr>
<td width="50%">SALES_CHECK_CARD_ONLY</td>
<td width="50%">카드결제 건에 대해서만 매출전표 조회가 가능합니다.</td>
</tr>
<tr class="active">
<td colspan="2" class="text-left"><strong>자동결제</strong></td>
</tr>
<tr>
<td width="50%">NOT_SUPPORTED_BILLING_KEY_SHOP</td>
<td width="50%">자동결제를 지원하지 않는 상점입니다. support-pay@toss.im 으로 문의해주세요.</td>
</tr>
<tr>
<td width="50%">BILLING_KEY_ALREADY_ACTIVATED</td>
<td width="50%">이미 활성화 된 자동결제가 존재합니다.</td>
</tr>
<tr>
<td width="50%">BILLING_KEY_REGISTRATION_CANCELLED</td>
<td width="50%">자동결제 등록이 취소되었습니다.</td>
</tr>
<tr>
<td width="50%">BILLING_KEY_UNREGISTERED_BY_CANCEL</td>
<td width="50%">이미 자동결제 등록이 취소되어 더이상 진행할 수 없습니다.\n처음부터 다시 진행해주세요.</td>
</tr>
<tr>
<td width="50%">BILLING_KEY_AUTH_ERROR</td>
<td width="50%">인증 가능 시간이 만료 되었습니다</td>
</tr>
<tr>
<td width="50%">BILLING_KEY_USER_CI_ERROR</td>
<td width="50%">토스에 등록된 사용자 정보가 일치하지 않습니다.</td>
</tr>
<tr>
<td width="50%">BILLING_KEY_REMOVE_NOT_ALLOWED_SHOP</td>
<td width="50%">자동결제 삭제가 허용된 가맹점이 아닙니다.</td>
</tr>
<tr>
<td width="50%">ALREADY_EXISTED_AUTH</td>
<td width="50%">이미 요청 된 인증이 존재합니다.</td>
</tr>
<tr>
<td width="50%">NOT_SUPPORTED_PAYMENT_METHOD</td>
<td width="50%">자동결제에서 지원하지 않는 결제 수단입니다.</td>
</tr>
<tr>
<td width="50%">EXIST_ACTIVATED_BILLING_KEY_USING_THIS_METHOD</td>
<td width="50%">자동결제가 등록 된 결제 수단은 삭제 할 수 없습니다. 자동결제를 해지해주세요.</td>
</tr>
<tr>
<td width="50%">COMMON_BILLING_KEY_NOT_FOUND</td>
<td width="50%">자동결제 정보를 찾을 수 없습니다.</td>
</tr>
<tr>
<td width="50%">CORE_USER_ERROR</td>
<td width="50%">사용자가 존재하지 않습니다.</td>
</tr>
<tr class="active">
<td colspan="2" class="text-left"><strong>리셀러</strong></td>
</tr>
<tr>
<td width="50%">COMMON_PAY_RESELLER_ERROR</td>
<td width="50%">리셀러 결제 처리 중 에러가 발생했습니다.</td>
</tr>
<tr>
<td width="50%">RESELLER_ONLY_CARD_PAYMENT</td>
<td width="50%">카드 결제가 아닙니다.</td>
</tr>
<tr>
<td width="50%">RESELLER_CALLBACK_PROCESS_ERROR</td>
<td width="50%">리셀러 콜백 처리 중 에러가 발생했습니다.</td>
</tr>
<tr>
<td width="50%">NOT_APPROVED_CARD_PAYMENT</td>
<td width="50%">카드로 사용자 승인된 결제가 아닙니다.</td>
</tr>
<tr>
<td width="50%">PAY_CARD_AUTH_REQUEST_ERROR</td>
<td width="50%">카드 인증 요청에 실패하였습니다.</td>
</tr>
<tr>
<td width="50%">NOT_SUPPORTED_RESELLER_SHOP</td>
<td width="50%">리셀러로 지정된 가맹점이 아닙니다.</td>
</tr>
<tr class="active">
<td colspan="2" class="text-left"><strong>기타</strong></td>
</tr>
<tr>
<td width="50%">PAYMENT_SHOP_STATE_NOT_NORMAL</td>
<td width="50%">결제 불가 가맹점입니다. 가맹점 고객센터로 문의하여 주세요.</td>
</tr>
<tr>
<td width="50%">PAYMENT_SHOP_STATE_CANNOT_REFUND</td>
<td width="50%">결제 불가 가맹점입니다. 가맹점 고객센터로 문의하여 주세요.(사고신고)</td>
</tr>
<tr>
<td width="50%">COMMON_INVALID_API_KEY</td>
<td width="50%">바르지 않은 API key 입니다.</td>
</tr>
<tr>
<td width="50%">NOT_INTERNAL_SHOP</td>
<td width="50%">내부 가맹점이 아닙니다.</td>
</tr>
<tr>
<td width="50%">COMMON_BREAK_TIME_OF_BANK</td>
<td width="50%">지금은 은행 점검 시간입니다. 점검이 끝난 후 사용해주세요.</td>
</tr>
<tr>
<td width="50%">COMMON_UNAUTHORIZED</td>
<td width="50%">Unauthorized Access</td>
</tr>
<tr>
<td width="50%">REFUND_EXCEED_DAILY</td>
<td width="50%">환불 금액이 상점의 일일 환불 한도보다 클 수 없습니다.</td>
</tr><tr>
<td width="50%">EXECUTE_PAY_NOT_APPROVED</td>
<td width="50%">아직 구매자가 결제를 승인하지 않았습니다.</td>
</tr>
<tr>
<td width="50%">PAUSE_USER</td>
<td width="50%">일시정지 사용자입니다.</td>
</tr>
<tr>
<td width="50%">COMMON_TIMEOUT</td>
<td width="50%">처리 중 지연이 발생하였습니다. 다시 시도해주세요.</td>
</tr>
<tr>
<td width="50%">COMMON_THROTTLED</td>
<td width="50%">결제 요청이 많아 서비스 이용이 원활하지 않습니다. 잠시 후에 다시 시도해주세요.</td>
</tr>
<tr>
<td width="50%">COMMON_ITS_NOT_ABLE_TO_CHANGE_STATUS</td>
<td width="50%">요청 가능한 상태가 아닙니다.</td>
</tr>
<tr>
<td width="50%">ESCROW_IMPOSSIBLE_STATUS</td>
<td width="50%">에스크로 상태 변경이 불가능합니다.</td>
</tr>
</table>
<div class="method" id="member">
<div class="method-description">
<h4 id="faq-8">토스 은행 코드 리스트</h4><br>
<p> 토스머니 결제의 경우 사용자가 선택한 계좌의 정보를 함께 전달합니다.<br>
<table class="table table-bordered table-hover table-condensed">
<tr class="active">
<td width="50%"><strong>은행 코드(accountBankCode)</strong></td>
<td width="50%"><strong>은행 명(accountBankName)</strong></td>
<tr>
<td width="50%">002</td>
<td width="50%">KDB산업은행</td>
</tr>
<tr>
<td width="50%">003</td>
<td width="50%">IBK기업은행</td>
</tr>
<tr>
<td width="50%">004</td>
<td width="50%">KB국민은행</td>
</tr>
<tr>
<td width="50%">005</td>
<td width="50%">KEB하나은행</td>
</tr>
<tr>
<td width="50%">007</td>
<td width="50%">수협은행</td>
</tr>
<tr>
<td width="50%">011</td>
<td width="50%">NH농협은행</td>
</tr>
<tr>
<td width="50%">020</td>
<td width="50%">우리은행</td>
</tr>
<tr>
<td width="50%">023</td>
<td width="50%">SC은행</td>
</tr>
<tr>
<td width="50%">027</td>
<td width="50%">씨티은행</td>
</tr>
<tr>
<td width="50%">031</td>
<td width="50%">대구은행</td>
</tr>
<tr>
<td width="50%">032</td>
<td width="50%">부산은행</td>
</tr>
<tr>
<td width="50%">034</td>
<td width="50%">광주은행</td>
</tr>
<tr>
<td width="50%">035</td>
<td width="50%">제주은행</td>
</tr>
<tr>
<td width="50%">037</td>
<td width="50%">전북은행</td>
</tr>
<tr>
<td width="50%">039</td>
<td width="50%">경남은행</td>
</tr>
<tr>
<td width="50%">045</td>
<td width="50%">MG새마을금고</td>
</tr>
<tr>
<td width="50%">048</td>
<td width="50%">신협</td>
</tr>
<tr>
<td width="50%">050</td>
<td width="50%">저축은행</td>
</tr>
<tr>
<td width="50%">064</td>
<td width="50%">산림조합</td>
</tr>
<tr>
<td width="50%">071</td>
<td width="50%">우체국</td>
</tr>
<tr>
<td width="50%">081</td>
<td width="50%">하나은행</td>
</tr>
<tr>
<td width="50%">088</td>
<td width="50%">신한은행</td>
</tr>
<tr>
<td width="50%">089</td>
<td width="50%">케이뱅크</td>
</tr>
<tr>
<td width="50%">090</td>
<td width="50%">카카오뱅크</td>
</tr>
<tr>
<td width="50%">092</td>
<td width="50%">토스뱅크</td>
</tr>
<tr>
<td width="50%">103</td>
<td width="50%">SBI저축은행</td>
</tr>
<tr>
<td width="50%">218</td>
<td width="50%">KB증권</td>
</tr>
<tr>
<td width="50%">230</td>
<td width="50%">미래에셋증권</td>
</tr>
<tr>
<td width="50%">238</td>
<td width="50%">미래에셋증권</td>
</tr>
<tr>
<td width="50%">240</td>
<td width="50%">삼성증권</td>
</tr>
<tr>
<td width="50%">243</td>
<td width="50%">한국투자증권</td>
</tr>
<tr>
<td width="50%">247</td>
<td width="50%">NH투자증권</td>
</tr>
<tr>
<td width="50%">261</td>
<td width="50%">교보증권</td>
</tr>
<tr>
<td width="50%">262</td>
<td width="50%">하이투자증권</td>
</tr>
<tr>
<td width="50%">263</td>
<td width="50%">현대차투자증권</td>
</tr>
<tr>
<td width="50%">264</td>
<td width="50%">키움증권</td>
</tr>
<tr>
<td width="50%">265</td>
<td width="50%">이베스트증권</td>
</tr>
<tr>
<td width="50%">266</td>
<td width="50%">SK증권</td>
</tr>
<tr>
<td width="50%">267</td>
<td width="50%">대신증권</td>
</tr>
<tr>
<td width="50%">269</td>
<td width="50%">한화투자증권</td>
</tr>
<tr>
<td width="50%">270</td>
<td width="50%">하나증권</td>
</tr>
<tr>
<td width="50%">271</td>
<td width="50%">토스증권</td>
</tr>
<tr>
<td width="50%">278</td>
<td width="50%">신한투자증권</td>
</tr>
<tr>
<td width="50%">279</td>
<td width="50%">DB금융투자</td>
</tr>
<tr>
<td width="50%">280</td>
<td width="50%">유진투자</td>
</tr>
<tr>
<td width="50%">287</td>
<td width="50%">메리츠증권</td>
</tr>
<tr>
<td width="50%">888</td>
<td width="50%">토스머니</td>
</tr>
<tr>
<td width="50%">889</td>
<td width="50%">토스포인트</td>
</tr>
</tr>
</table>
<!--
현금영수증 관련 에러코드(2020/03/03)
현금영수증 API 연동 가맹점에서만 확인할 수 있는 에러코드라 임시삭제처리함
<tr class="active">
<td colspan="2" class="text-left"><strong>현금영수증</strong></td>
</tr>
<tr>
<td width="50%">CASH_RECEIPT_JOIN_MEMBER_FAIL</td>
<td width="50%">현금영수증 연동회원 신규가입이 실패하였습니다.</td>
</tr>
<tr>
<td width="50%">CASH_RECEIPT_REGIST_ISSUE_FAIL</td>
<td width="50%">현금영수증을 발행하지 못했습니다.</td>
</tr>
<tr>
<td width="50%">CASH_RECEIPT_ALREADY_ISSUE_FAIL</td>
<td width="50%">현금영수증이 이미 발행 되었습니다.</td>
</tr>
<tr>
<td width="50%">CASH_RECEIPT_ALREADY_CANCEL_FAIL</td>
<td width="50%">현금영수증이 이미 취소 되었습니다.</td>
</tr>
<tr>
<td width="50%">CASH_RECEIPT_CANCEL_ISSUE_FAIL</td>
<td width="50%">현금영수증 발행 취소를 하지 못했습니다.</td>
</tr>
<tr>
<td width="50%">CASH_RECEIPT_REVOKE_REGIST_ISSUE_FAIL</td>
<td width="50%">취소 현금영수증을 발행하지 못했습니다.</td>
</tr>
<tr>
<td width="50%">CASH_RECEIPT_GET_INFO_FAIL</td>
<td width="50%">현금영수증 정보 확인에 실패하였습니다.</td>
</tr>
<tr>
<td width="50%">CASH_RECEIPT_NOT_EXIST</td>
<td width="50%">발급된 현금영수증이 존재하지 않습니다.</td>
</tr>
<tr>
<td width="50%">CASH_RECEIPT_GET_POPUP_URI_FAIL</td>
<td width="50%">현금영수증 조회 링크를 가져오지 못했습니다.</td>
</tr>
<tr>
<td width="50%">CASH_RECEIPT_UNKNOWN_STATUS_CODE</td>
<td width="50%">존재하지 않는 현금영수증 상태코드 입니다.</td>
</tr>
-->
</div>
</div>
</div>
</div>
</body>
</html>