가상계좌 결제 현금영수증 발급 관련 문의입니다.
안녕하세요
한국생산성본부 자격검정 홈페이지 유지보수를 맡고있는 개발자입니다.
가상계좌 결제 현금영수증 발급 관련 문의입니다.
단체(학교,학원 등)가의 접수 결제시 가상계좌 발급 받아 가상계좌에 입금하여 접수 완료가 되는데
단체 소속의 각 개인들에게 현금영수증 발급(예를 들면 각 개인들 휴대폰번호, 금액을 파라미터 전송)
이 가능한가요?
따로 API가 있는지요?
감사합니다.
25 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
네 말씀하신대로라면, 결제창에서 현금영수증 신청을 받지 마시고, 별도 현금영수증 API를 이용하시기 바랍니다.
혹시 기존의 결제는, xpay / 결제위젯중 어떤방식으로 연동하셨나요?
최근 결제 올라온것을 보니 결제위젯(sdk) 방식으로 연동하신것 같습니다. 아래 현금영수증 API를 참고하시기 바랍니다.
https://docs.tosspayments.com/reference#%ED%98%84%EA%B8%88%EC%98%81%EC%88%98%EC%A6%9D-%EB%B0%9C%EA%B8%89-%EC%9A%94%EC%B2%AD
코어 API | 토스페이먼츠 개발자센터
토스페이먼츠 API 엔드포인트(Endpoint)와 객체 정보, 파라미터, 요청 및 응답 예제를 살펴보세요.
JSP_SmartXPay_1.0 입니다
네 JSP_SmartXPay_1.0 를 쓰면 아래 링크의 현금영수증 모듈을 참고하시면 되겠습니다.
https://drive.google.com/file/d/1ws0W3SXkbh60ztD72EKnE1YBs6jTNHE4/view?usp=drive_link
Google Docs
TossPayments_no_session_JSP.zip
라이브러리 및 conf 파일은, 기존 결제와 동일하게 공유하시면 되고, 위 압축파일내의 샘플 (CashReceipt.jsp) 을 참고하시면 됩니다.
매뉴얼링크 : https://docs.google.com/document/d/1NL5Uqb3LY75offgTjsee8t6qodmAhLjPiQ6st4i0Fjk/edit?usp=drive_link
매뉴얼에서 현금영수증 연동 부분을 참고하시면 됩니다.
Google Docs
XPay_결제연동매뉴얼_v1.0.2
▪ 개정 이력 No. 일자 버전 개정후 1 2020.08.01 1.0.0- 전자결제 서비스 법인 전환에 따른 사명 및 CI변경 2 2020.10.21 1.0.1 현금영수증 테스트서버 포트 수정(9091) 목 차 1. XPay 결제 4 2. 개발환경 확인사항 5 3. 빠른 테스트를 위한 가이드 7 4. XPay 연동 샘플파일 안내 12 4.1. 샘플파일 구성 및 설명 14 5. XPay 결제를 위한 개발사항 24 5.1. XPa...
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
CashReceipt.jsp 샘플을 보면
xpay.Set("LGD_OID", LGD_OID);
xpay.Set("LGD_TID", LGD_TID);
주문번호와 거래번호를 넘기는데
하나의 주문번호(거래번호) 에 여러 건의 현금영수증 발행이 가능한거죠?
주문번호,거래번호는 각 지불수단별로 중복체크를 하기 때문에 , 상점아이디 (MID)별로 유일한 값을 넣어야 합니다.
무통장입금 단독발행건 (PG를 타지 않고, 상점 입금계좌로 직접 입금/결제한 건)의 경우에만 LGD_TID를 빈값으로 요청합니다. 주문번호는 중복되면 안됩니다.
다시 풀어서 설명하자면
1. 총10만원 가상계좌 발급 - 총5명 각2만원
2. 총10만원 가상계좌 입금
3. 하나의 주문번호(거래번호) 에 결제 및 접수 완료 처리
4. 개인별 5명에게 각2만원 현금영수증 발급
현재 3단계 처리 중이고
4단계 즉 단체 소속의 각 개인들에게 현금영수증 발급이 목적입니다.
그런데 설명해 주신 내용으론 불가능한게 맞는거죠?
혹시 다른 방법은 없나요?
일종의 단체접수 개념으로 보이는데요,
a. 가맹점에서 자체적으로 주문번호를 두가지 형태로 운영하셔야 할듯 합니다. (그룹용 대표주문번호 : 대표주문번호 하위개념의, 각 고객별 개별 주문번호)
b. 가상계좌 신청시 (10만원) 에는 그룹용 대표주문번호를 저희쪽에 넘겨주시면 됩니다. 대신 결제창에서 현금영수증 자동발급은 하지 않습니다 (중복발행을 막기 위해)
c. 입금이 확인되면, 현금영수증 API를 이용하여 총 5건의 현금영수증을 발급합니다.
xpay.Set("LGD_PAYTYPE", "SC0100"); // 무통장입금 단독발행
xpay.Set("LGD_OID", LGD_OID); // 고객별 개별 주문번호
xpay.Set("LGD_TID", LGD_TID); // 셋팅하지 않습니다.
위 방법은 , 모 시험접수기관에서 단체접수시 처리하는 방법입니다.
(결제는 개별접수자의 합산으로 결제 , 현금영수증 발행은 각 접수자별로 개별발행)..모델이 유사해 보여 혹시 이 방법으로는 진행이 가능하실까요?
참고로 위에 언급한 그룹용 대표주문번호, 개별주문번호간 매칭은 가맹점에서 자체적으로 처리해주셔야 합니다.
그리고 위에 고객별 개별 주문번호라고 기재는 했습니다만, 한글만 아니면 64byte 이내에서 자유롭게 셋팅이 가능합니다. 고객ID + 발행일시 (YYYYMMDDhhmmssmis) 등으로 넘겨주셔도 무방합니다. (중복만 안되면 됩니다)
실제 가상계좌 결제에 사용된 주문번호와 현금영수증용 주문번호번호가 달라도 되는거군요?
네 단독발행은 관계없습니다.
단독발행 내에서 주문번호가 겹치지 않으면 됩니다.
다만 보통은, 원 결제건과 현금영수증 발행건을 주문번호로 매칭하기 때문에 , 주문번호를 동일하게 셋팅합니다..말씀하신 경우라면 결제 : 현금영수증 발행이 1: N 이기 때문에, 개별주문번호로 발행하고, 자체적으로 매핑작업을 하셔야 할것 같습니다.
자체적으로 매핑작업이라 하면 추후 정산관련 문제 때문인건가요?
현금영수증은 정산과는 관계없습니다.
저희 관리자 페이지에서 현금영수증 발행내역을 보면, 고객별 개별 주문번호로 확인될 것인데요. 이 발행건의 원거래가 무엇인지 알아야 하기 때문입니다.
ex) 최초 가상계좌 결제 10 만원을 할때는 그룹용 대표주문번호 123456789012345 를 넘기고 결제를 합니다. 저희 상점관리자 가상계좌 입금내역에는 123456789012345 로 입금내역이 잡힙니다.
이후 현금영수증 발급을 총 5명에게 해야 하니, 각 개인별 개별 주문번호를 셋팅해서 2만원씩 총 다섯번을 발행합니다.
이후 저희 상점관리자 현금영수증 발행내역을 보시면 주문번호항목에 개별주문번호 (ex: buyer1_12345 , buyer2_12345 , buyer3_12345 , buyer4_12345 , buyer5_12345) 로 무통장입금 단독발행건으로 발행건이 확인될겁니다.
buyer1_12345 은 어떤 결제에 대한 발행건인지 알려면, 가맹점에서 자체적으로 이 정보를 가지고 있에야 한다는 의미였습니다.
ex) groupOrderId (단체결제때 PG사로 넘기는 주문번호) | personnalOrderId (현금영수증 발급때 각 개인별로 부여하고 PG사로 넘기는 주문번호)
123456789012345 | buyer1_12345
123456789012345 | buyer2_12345
123456789012345 | buyer3_12345
123456789012345 | buyer4_12345
123456789012345 | buyer5_12345
아하 감사합니다.
한가지 더 질문 있습니다.
5명 중 1명 결제 취소한 경우 현금영수증 발급 취소도 건별 가능한가요?
네 그 이유때문에, 개별주문번호로 발행요청을 안내드렸습니다
저 5건 발행시, 개별 TID가 응답될텐데요..취소자 발생시, 응답받은 TID로 전체 취소를 하시면 됩니다.
전체취소를 하려면, 취소를 5번 돌려야 겠네요
ex) groupOrderId (단체결제때 PG사로 넘기는 주문번호) | personnalOrderId (현금영수증 발급때 각 개인별로 부여하고 PG사로 넘기는 주문번호) | 현금영수증 발급 TID
123456789012345 | buyer1_12345 | TID1234567
123456789012345 | buyer2_12345 | TID2345678
123456789012345 | buyer3_12345 | TID3456789
123456789012345 | buyer4_12345 | TID4567890
123456789012345 | buyer5_12345 | TID5678901
해당 현금영수증 프로세스는 테스트가 불가능한 부분이죠?
가능합니다. 현금영수증 발급 / 취소시 테스트모드로 해서 하시면 됩니다
대신 상점관리자에서는 테스트 발급건 확인이 어려울수 있습니다.
몇가지 추가문의 사항 있습니다.
1) 현금영수증 발급 신청 및 취소 Response 명세서
2) 가상계좌 입금 테스트 어디서 하나요?(MID:itqpg)
3) 50% 취소(2만원 결제 후 1만원만 환불)가 있는데 이런 경우 현금영수증 발급 취소 해야하나요? 현금영수증 재신청해야 하나요?
4) 현금영수증 출력은 https://pgweb.tosspayments.com:9091/WEB_SERVER/js/receipt_link.js 사용하면 되는건가요?
1) https://docs.google.com/document/d/1KsKVGGpu663offCDr6apsR_XD-_ziMo3/edit?usp=drive_link&ouid=102910184933088943289&rtpof=true&sd=true 입니다
2) 가상계좌 발급후
https://pgweb.tosspayments.com:18443/pg/wmp/Home2009/demo/xpaydemo/httpCasDeposit.jsp 에서 테스트 진행하시면 , 실입금을 하지 않더라도 입금통보를 받을수 있습니다.
3) 기존건 전체취소후 , 잔액만큼 재발행처리 해주시기 바랍니다.
4) 맞습니다.
Google Docs
현금영수증_연동매뉴얼_v1.0.doc
▪ 개정 이력 No. 일자 버전 개정후 1 2020.08.01 1.0.0- 전자결제 서비스 법인 전환에 따른 사명 및 CI변경 목 차 1. 개발환경 확인사항 4 2. 현금영수증 발급/취소 API 연동 샘플파일 안내 5 2.1. 샘플파일 구성 및 설명 6 2.2. 환경설정 파일 설명 10 3. 현금영수증 발급/취소 요청 페이지 개발 12 3.1. 현금영수증 발급/취소 요청 및 결과처리 페이지 개발 12 3.2. API 현금영수증 발급/취소 ...
영수증 출력관련 상세내용은 위 1)에 드린 링크 문서의
"부록 II. 현금영수증 발급/취소/부분취소 출력 영수증 예" 를 참고바랍니다.
3) 기존건 전체취소후 , 잔액만큼 재발행처리 해주시기 바랍니다.
A.
>> 10만원 1건 개인별 5명에게 각2만원 현금영수증 발급
>> 한명 50% 결제 취소 환불
>> 5명 현금영수증 발급 취소
>> 4명(2민원) 현금영수증 재발급 신청, 1명(1만원) 현금영수증 재발급 신청
B.
>> 10만원 1건 개인별 5명에게 각2만원 현금영수증 발급
>> 1명 현금영수증 발급 취소
>> 1명(1만원) 현금영수증 재발급 신청
B가 맞는거죠?
네 B가 맞습니다.
결제는 부분환불을 하면 되고, 현금영수증은 개인별 개별발행건을 전체취소후 재발행 하면 됩니다.