16 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
status
예시를 남겨주시겠어요?
어떤 부분에 문제가 있었는지
https 통신의 status 는 200 이고
저희 payment 객체의 status 는 DONE 으로 내려갑니다.
secretkey = "live_sk_xxxxxxxxxxxxxx:"
url = "https://api.tosspayments.com/v1/payments/confirm"
data = "{""paymentKey"" : """ & paymentKey & """, ""orderId"" : """ & orderId & """, ""amount"" : """ & amount & """}"
authorization = "Basic " & base64Encode(secretkey)
set req = Server.CreateObject("MSXML2.ServerXMLHTTP")
req.open "POST", url, false
req.setRequestHeader "Authorization", authorization
req.setRequestHeader "Content-Type","application/json;charset=UTF-8"
req.send data
set myJSON = JSON.parse(req.responseText)
httpCode = req.status
req.status 가 200으로 알고 있는데, 성공하면 다음 페이지에서 sql 처리를 하는데, 가끔 처리가 안되어서....
간편결제의 경우 카드, 계좌/머니로 결제 가능한데 계좌/머니로 결제할 때는 카드 정보는 내려가지 않습니다.
저장안되는 케이스의 주문번호를 남겨주세요.
104_37_01090658878_20250313104305
저희쪽에서는 정상처리 된것으로 보이는데요.
혹시 /v1/payments/confirm 호출할때 timeout 을 얼마로 설정해 두셨나요?
토스는 일반 은행계좌에서 토스머니로 충전 시 최대 10초의 타임아웃 시간을 설정합니다. 따라서, 가맹점에서는 10초 + 3~5초 정도의 대기 시간을 잡아주시면 타임아웃으로 인한 대사 불일치 거래건이 발생하지 않습니다. (처리 지연으로 가맹점은 취소 처리했으나 토스는 승인되는 케이스 방지) 토스 이슈가 아닌 은행망 이슈를 제외하면 타임아웃으로 인한 거래 지연은 발생하지 않습니다.
결제수단 구분 없이 모두 동일하게 설정하셔도 무방합니다.
양사간 거래 확인을 위하여 정산대사를 함께 연동하시길 권장드립니다. 요청 가맹점에 한하여 별도로 제공해 드리고 있으며, 신청은 support-pay@toss.im 으로 주시기 바랍니다.
이 부분 말씀하시는 것인가요? 어떻게 하는 것인가요?
아뇨 실제로 API 호출할때 timeout 설정하신 값 말씀드리는 겁니다.
지금 알려주신 거래건의 경우 저희쪽에서 1초가 조금넘게 처리 시간이 걸렸는데 혹시 timeout 을 1초로 설정하셔서 값을 못받으시는게 아닌가 싶어서요.
냥과장님 말씀해주신 것처럼 혹시 /v1/payments/confirm 호출할때 timeout 확인이 필요합니다.
보내주신 주문번호는 정상 카드결제되어 카드사와 카드BIN 번호 확인이 가능했어야 합니다.
지금 보고계신 문서도 전달주시겠어요?
asp 로 코딩한 것인데, timeout 걸지 않아서 시간 때문에 못받는 것은 아닌 것 같습니다. / 토스에는 정상처리된 것인데, 저희쪽에 응답이 안된 것인지, 유실된 것인지, 가끔 발생해서 더 골치아픕니다.
104_37_01090658878_20250313104305 이 거래건 로그를 봤는데,
승인 요청이 두번 있었습니다.
첫번째 요청은 Mar 13, 2025 @ 10:43:54.602
두번째 요청은 Mar 13, 2025 @ 10:44:12.516
첫번째 요청에 대해서는 정상적으로 응답이 나갔으나,
두번째 요청에 대해서는 {"code":"ALREADY_PROCESSED_PAYMENT","message":"이미 처리된 결제 입니다."} 이렇게 응답이 나갔습니다.
1) 승인호출하는 사이트로, 결제한 고객이 뒤로가기 등으로 다시 접근했을 가능성이 있습니다.
승인이 완료되면, 해당 페이지로 고객이 다시 돌아가는 등의 액션을 수행할 수 없도록, 리다이렉션으로 다른 페이지로 이동시켜서 해당 페이지에서 결제 이후의 작업을 하게 하는 등 조치가 있어도 좋습니다.
단, 이는 저희의 예상이므로, "승인이 두번되어, 첫번째 응답 처리를 못하고 두번째 요청만 바라봐서 문제 인것 같다" 라는 것이 중심인것을 꼭 인지해주세요.
2) API 요청에 대해 실패가 발생하면, 반드시 이를 로깅해두는 것을 추천 드립니다. 이래야 발생한 문제에 대해 더 객관적으로 파악할 수 있습니다.
아 감사합니다. / 상세한 내용. 위 말씀이 맞는 것 같습니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.