80 Replies
안녕하세요. 결제창 방식으로 연동도 가능하며,
추가로 설명드리겠습니다! 결제창 호출하여 은행 선택 후, successURL로 이동하게 됩니다. 이후 successURL로 전달된 paymentKey를 가지고 결제승인API를 추가로 호출해주셔야 마무리 됩니다.
가상계좌관련 추가 질문입니다~ 웹훅url 넘기는방법을 잘 모르겠습니다. 또한 저희쪽에서는 어떻게 입금이 됐는지 확인을 받아야할까요?
개발자센터 (developers.tosspayments.com)에서 가상계좌 웹훅을 등록하실 수 있습니다.
로그인 후 우측상단 '내 개발정보'를 눌러주세요
웹훅 없이는 사용할 수 없을까요?
자체적으로 결제 내역을 DB관리하시나요?
네 관리하고 있습니다
그러면 웹훅으로 받아보셔야 합니다! 고객이 가상계좌 발급 후 언제 입금할지 알수 없기 때문에 웹훅으로 보내드리고 있습니다
자체 DB여쭤본건, 따로 관리하지 않으시면. 상점관리자(admin)페이지에서 조회해보실 수 있기때문에 여쭤봤습니다.
웹훅 url은 파라메터값으로 넘어온 주소를 넣어주면 되는 것 인가요?
음 먼저 웹훅 기능에 대한 설명이 필요하실까요?
등록 방법을 안내해드리면 될까요?
둘다 가능할까용??
일단 웹훅은 특정 이벤트가 발생했을 때,
토스페이먼츠 > 상점에서 미리 지정한 URL로 json 형태의 데이터를 보내드리는 것을 의미합니다.
그래서 상점에서는 언제 특정 이벤트(ex 가상계좌 입금)이 발생하는지 계속 조회해볼 필요없이.
저희가 보내드리는 data를 받아보시기만 하면 됩니다.
이 부분 까지는 이해가 되실까요?
넵넵!
개발은 어떤 언어로 진행 중이신가요?
PHP로 진행중입니다
가상계좌 입금 이벤트가 일어나면 아래와 같이 json post 방식으로, 등록해주신 url로 데이터를 보내드립니다.
{"createdAt":"2022-09-08T14:28:37.597181""secret":"ps_5mBZ1gQ4YVXRgPPmb098l2KPoqNb""orderId":"C220908-23594789""status":"DONE""transactionKey":"DF857E088A0AEAF42958EA1D4C7B47C5”}
상점에서는 아래 데이터를 받아 관리해주시면 됩니다.GitHub
payment-samples/va_callback.php at main · tosspayments/payment-samp...
Contribute to tosspayments/payment-samples development by creating an account on GitHub.
아래는 php 샘플데이터입니다. 데이터를 받는 부분까지만 구현되어있으니, 받아서 가맹점에서 관리를 해주시면 됩니다.
웹훅주소는 위에 말씀드린 개발자센터에서 등록해주시면 됩니다.
transactionKey와 lastTransactionKey가 일치해야하는것은 맞을까요?
네 일치해야 합니다.
가상계좌 발급 후 리턴해드리는 secret기준으로 웹훅과 매칭하시면 됩니다.

코어 API | 토스페이먼츠 개발자센터
토스페이먼츠 API 엔드포인트(Endpoint)와 객체 정보, 파라미터, 요청 및 응답 예제를 살펴보세요.
사용자가 결제하는 시점에 저희쪽으로 데이터를 보내주시는데 그러면 저희가 페이지를 따로 만들어서 등록을해주면 된다는 이야기일까요?!
사용자가 입금하는 시점에 보내드립니다
웹훅주소에서 해당데이터를 어떻게 처리할지는 상점로직에 맞춰구현해주시면 됩니다
저기위에만 등록해주면 될까요?
토스페이먼츠 > 상점에서 미리 지정한 URL은 정확히 무엇일까요??
계속 친절한답변 감사합니다
상점에 미리 지정된 URL이 있다는게 기본url이 설정되어 있었다는 말씀이실까요..?

저것이 정확이 무엇인지 모르겠어서 드린 질문입니당!
빨간 박스 친부분에 등록하는 url을 말씀드린겁니다
근데 url을 저걸 등록하신걸까요..?
네,, 일단 들어가나 파라메터로 넘어온것중 하나를 넣어보았었습니다ㅠㅠ
파라미터에 넘어오는걸 등록하는게 아닙니다..!
본인 서버에 직접 구현하신 웹페이지 주소를 입력해주셔야해요!

저기에는 어떤 URL을 넣어야 할까요?


해당 URL을 등록 하고 가상계좌 발급 후 입금을 했습니다
해당 URL에 로그를 달아보았는데 호출이 되지 않고 있습니다
무엇이 문제일까요??
[웹훅 발송] Url: https://www.igunsul.net/payment/virtual_confirm
Body: {"createdAt":"2022-10-14T16:46:01.844762","secret":"ps_aBX7zk2yd8yA0M4BLqq8x9POLqKQ","orderId":"igunsul_2023_diary_1_141665733532392_ioio852","status":"DONE","transactionKey":"85406B1751409D994AD05ED84C474093"}
[응답값] Status: 200
Response: {"headers":{"connection":["keep-alive"],"content-type":["text/html; charset=UTF-8"],"date":["Fri, 14 Oct 2022 07:46:01 GMT"],"keep-alive":["timeout=5"],"server":["nginx"],"set-cookie":["PHPSESSID=hgv7145i01j93qcdsfifbrmrfbsdlbif; path=/; HttpOnly"],"transfer-encoding":["chunked"],"vary":["Accept-Encoding"]},"body":"\n <!DOCTYPE html>\n <html lang='ko'>\n <head>\n <meta http-equiv='Content-Type' content='text/html;'>\n </head>\n <body>\n \t\t\t<form method='post' name='form' action='/login' target='_top' /><input type='hidden' name='url' value='/payment/virtual_confirm' /> </form>\n \n <script type='text/javascript'>\n if('' != ''){ alert(''); }\n document.form.submit();\n </script>\n </body>\n </html>\n ","statusCode":"OK","statusCodeValue":200}
저희는 위와 같이 data를 보내드렸고, 정상적으로 수신받아 아래처럼 HTTP 200응답을 보내주셨습니다.저희는 해당 URL에서 테스트중이어서 따로 로그확인만 달아두고 별도로 작업해둔게 없는데 어떻게 OK가 떨어진걸까요?
테스트용으로 URL을 추가해서 그런것일까용??
해당 페이지가 에러없이 정상적으로 호출되어 그렇습니다.
저희쪽에서 로그를 달아두었는데 저희쪽에서 접속했을때는 알림이 오는데 결제시에는 알림이 오지 않습니다. 정상적으로 해당 URL을 호출하고 있는게 맞을까요??ㅠㅠ
응답값에보이는 html소스가 페이지내 직접구현하신 소스아닌가요?
네 저희쪽에서 직접 구현한 소스입니다
네 보시는 것처럼 해당url 정상적으로 호출중입니다!
보내드리는 post json 형식의 데이터를 수신하는지 확인해주세요

저 URL을 호출하시는것일까요??!
해당 파라미터 사용보다는 위 개발자센터에 등록하는걸 권고드립니다.
등록도하고 센터에 등록도 했습니당 ㅠㅠ

해당 url 접속해보니 바로 login화면으로 redirect처리되는데요
확인 감사합니다!!
안녕하세요~ 지난주 작업 이어서 여쭈어볼 것이 있습니다

보내주신 소스에서 주소는 저희쪽 주소를 써두는것이 맞을까요?
그부분 수정하지 마세요 !
아 그대로 두는것인가요?
네네
post로 넘어온 data받는 영역입니다.
아래 $secret등 변수만 받아서 관리하시면되요
감사합니다:)

현금영수증 부분은 사용하고 싶지 않은데 어떻게 처리하면 될까용?!
가상계좌 결제창 연동하기 | 토스페이먼츠 개발자센터
고객이 원하는 은행으로 가상계좌를 발급한 뒤 입금받아 결제하는 방식입니다.
cashReceipt 파라미터를 사용하시면 됩니다! 위 docs에 해당 파라미터가 설명되어있습니다~!
결제처리가 된 건들도 계속 호출이 되는데 무엇이 문제일까요???
감사합니다!
결제 처리 되셨으면 HTTP RESPONSE 코드 200 으로 보내주셔야 합니다.
계속 호출 처리 되는 주문번호를 알수 있을까요?
createdAt ==> 2022-10-17T15:11:24
secret ==> ps_oeqRGgYO1r5GneO41L23QnN2Eyaz
status ==> DONE
orderId ==> igunsul_2023_diary_2_171665987048509_ioio852
transactionKey ==> 953E46486EC411D5ED8C2B2ECABD4DC3
입금통보시에 아래와 같이 500 응답을 주신것으로 확인됩니다.
[500 Internal Server Error] during [POST] to [https://www.igunsul.net/payment/virtual_confirm]
웹훅으로 전달되는 건 200 응답을 잘보내주고 계신데, 입금통보로 전달되는건 500 으로 응답을 보내주시는 것으로 확인됩니다.
Unable to load the requested class: Diary_lib
500에 저 오류 메시지를 보내주시는거 같네요.
❤️ 토스페이먼츠 사용 경험을 나눠주세요!
제품 발전에 큰 도움이 됩니다. (1분 내외 소요)

위와 같이 만료되었다는 메시지와 404가 찍힙니다! 해결방법이 있을까요??
해당 오류는 인증을 진행하신후(successurl 에서 paymentkey 를 받으신후) 승인 API 를 10분이후에 호출하셔서 발생하는 오류입니다.
오결제를 막기위해 successURL 이동후 10분안에 paymentkey 를 이용해서 승인 요청을 해주셔야 합니다.
저 결제건 이후로 계속 만료오류가 뜨는데 승인을 따로 해줄수는 없는건가요?
지금 동일한 paymentKey로 계속 승인 요청을 하고 계시는 걸까요?
만료된 결제는 승인이 불가합니다. 다시 가상계좌 결제청 이용해서 paymentkey 를 새로 받아서 요청해 주셔야 합니다.
감사합니다!
하나만 더 문의하겠습니다! 웹훅한 상점당 하나만 가능할까요??
네
상점당 1개만 가능합니다.

이 페이지를 안 뜨게 할 방법은 없나용?
https://docs.tosspayments.com/guides/windows/virtual-account#2-%EA%B2%B0%EC%A0%9C%EC%B0%BD%EC%9D%84-%EB%9D%84%EC%9B%8C%EB%B3%B4%EC%84%B8%EC%9A%94-
보면 useEscrow파라미터가 있습니다.
가상계좌 결제창 연동하기 | 토스페이먼츠 개발자센터
고객이 원하는 은행으로 가상계좌를 발급한 뒤 입금받아 결제하는 방식입니다.