가상계좌 결제에 웹훅 연동을 하였는데, 입금이 될때 secret값으로 확인을 하고 있는데 값이 없는데도 웹훅에서는 성공으로 나오네요.
해당값으로 컨트롤 할수는 없는걸까요?
25 Replies
질문이 조금 이상한데 처음 결제했을떄 secret값을 db에 저장하고, 웹훅으로 왔을떄 secret값을 가져와서 비교하는데 db에 값이 없는데도 DONE이 떨어지고 있는 현상입니다.
DONE 는 토스페이먼츠에서 드리는것이구요
비교는 가맹점에서 해주셔야 하는 것입니다.
둘 사이의 로직을 확인하시면 될거같아요
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
네 그러닌깐 저희쪽에 secret값이 없을때는 상태값을 다르게 놔야 하는건가요?
secret 값의 비교 로직을 만들고 운영하신다면(권장사항입니다)
가상계좌 발급시에 받으신 secret 값을 DB에 넣으시고
실 입금이 확인 되었다는 웹훅응답을 받으셨을때 secret 값을 orderId 기준으로 select 하셔서 비교하시면 됩니다.
비교의 if/else 문은
동일하다면 정상거래, 이후 프로세스 지속진행
다르다면 비정상거래, 뭔가 잘못되었다는 가정으로 분기를 하시면 됩니다
네 맞습니다. 해당값을 db에 넣어두고 값이 없는데도 처리가 되었다는것은
아마도 해당 페이지가 200이 떨어지면 바로 반영이 되는걸까요?
@김세현 님 정하기 나름입니다.
위에 김차장님께서 설명해주셨지만 다시 설명드릴게요.
가상계좌는 승인 API를 호출하면 가상계좌가 발급됩니다. 이후 고객의 입금시점을 모르기 때문에 webhook을 통해서 입금 완료를 전달하고 있습니다.
이때 status는 DONE이 되는 것이구요.
누군가 악의적으로 webhoook을 호출 할 수 있기 때문에 secret 값을 가맹점에서 비교하여 주문서 상태를 결제완료로 변경하는 방식입니다. 이 부분은 권장사항이구요.
웹훅을 수신하는 곳에 로직 처리는 디버깅을 해보셔야 하며 해당 응답이 200으로 떨어지기 전에 가맹점 주문서를 업데이트하실 것이기 때문에 해당 로직을 보셔야해요.
네 수습님 말씀대로 가맹점 주문데이터를 가져왔는데 NULL 인데도 정상처리가 되었다는것인데 이 부분은 맞는걸까요?
그 부분은 가맹점에서 구현한 영역이기 때문에 저희가 말씀드리기 어려운 것이에요.
웹훅 수신부의 코드를 보시면 아실거에요.
1. 가상계좌 발급
2. DB에 입력중 오류 발생으로 DB입력 오류
3. 가상계좌가 발급되었으니 입금
4. 입금하고 나서 웹훅으로 정보조회를 했는데 아무것도 안나왔는데 젤 위체 캡쳐처럼 완료인거 같아서
문의드린거에요
웹훅으로 던졌을때 값이 없으면 Exception 처리를 했는데 다른 처리가 필요한것인지
2번 가상계좌 발급후 정보가 DB에 업데이트 안된 것인가요?
DB에 인서트가 안된상황인거죠.
그리고 4번 웹훅 수신은 받으신거구요?
네 맞습니다.
웹훅 수신을 받았는데 정보가 없는데 입금처리가 되어버려서
이 부분은 구현하기 나름일 것 같아요.
입금처리는 DB에서 말고. 은행에서.
음성 채팅 가능하신가요?
핸드폰으로 해야 되는데
제가 핸드폰으로 디스코드 로그인을 다시 할께요
음성 가능합니다
왼쪽 메뉴에서 Live Talk 스테이지 클릭하시면 됩니다.
죄송해요 ㅎㅎ
어디로 가야 할까요?
초대드렸어요
제가 디스코드를 이용을 몇번 안해봐서요
메뉴에 웹훅처리관련 채널 보이시나요?
{'data': {'logs': [{'responseBody': '',
'responseCode': '200',
'responseHeader': {'connection': ['Keep-Alive'],
'content-language': ['ko'],
'content-length': ['97'],
'content-type': ['text/html;charset=UTF-8'],
'date': ['Thu, 28 Nov 2024 02:20:22 '
'GMT'],
'keep-alive': ['timeout=5, max=100'],
'request-context': ['appId=cid-v1:0bd3c8ff-9103-4525-961c-2c90a9b46bf5'],
'server': ['Apache/2.4.37 (Red Hat '
'Enterprise Linux) '
'OpenSSL/1.1.1k '
'mod_jk/1.2.49'],
'set-cookie': ['JSESSIONID=EDEEDBFAE8786ECDAD44E36EA6C5625E; '
'Path=/; Secure; '
'HttpOnly']},
'sendAt': '2024-11-28T11:20:22',
'tryCount': 1}],
'messageId': '8eb2fd85-98dd-4621-a7a9-2d6185134087',
'status': 'SUCCESS'},
'error': None,
'result': 'SUCCESS'}
음성채팅으로 내용 정리되었습니다.
웹훅을 받은 시점은 이미 입금이 완료되었기 때문에 예외처리(강제 취소)할 수 없음.
가맹점에서 환불을 위한 고객 계좌번호, 은행명 수취하여 취소 진행해야함.