자동결제 카드 등록시 높은 확률로 에러 코드를 받습니다.
$url = 'https://api.tosspayments.com/v1/billing/authorizations/issue';
위 API 포인트로 curl 을 작동시키면, 간간히 200이 뜨고 대부분 에러 코드가 뜹니다. 확인하실 수 있게 http 데이터도 사진에 첨부하겠습니다. 보안상 유출되서는 안되는 값이 있을 경우 관리자 권한으로 사진을 삭제해주시면 감사하겠습니다.
상점 아이디 : tbill_deite7gos
40 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
에러가 뜨는 요청의 값을 알려주세요. 로그 확인 해보겠습니다.
authKey, customerKey 같은 요청시 사용한 값을 알려주시면 됩니다.
customerKey: fb7c7a76ff
authKey: bln_6ZJ9141Nd0J"}"}
입니다.
네 아닙니다. php 코드로 되어 있으며, 토스 깃헙레포 예시코드와 동일합니다.
아 브라우저 콘솔을 캡쳐해 주셔서 착각했네요.
.API 응답으로 받은 에러 내용 확인은 어려우신가요?
저희 로그상으로는 요청 자체가 안들어 온것으로 확인됩니다.
뭔가 요청자체가 저희쪽으로 전송이 안되는것 같아요.
이렇게 pr 찍어서 확인해봤는데, 애초에 네 리턴값 자체가 없는거지 않을까 싶기도 합니다. 그럼 어디쪽 문제일까요..
혹시 성공하신 authKey 도 알수 있을까요?
{
"authKey": "bln_aPgony4Jdw4",
"customerKey": "884db967c2"
}
입니다.
그런데 여기서, authKey 안에 }, " 같은 특수문자가 들어가있게끔 만들어지는게 정상적인가요?
아뇨 저희 가 보내드리는 값에는 없습니다.
}와 "가 두개씩 들어가있는걸로 보아, authKey를 만들어내는 과정에서 파싱이 잘못된 것도 생각해볼수 있지 않을까요
네 그러면 파싱을 잘못하시는 것같아요
bln_6ZJ9141Nd0J"}"}
저희가 보내드린건 bln_6ZJ9141Nd0J 여기까지일겁니다.
그런데 제 쪽 코드 보시면, 보내오는 authKey 값을 그냥 바로 받아서 다시 curl 쏴주는거 뿐이라서 (토스 깃헙레포와 완전 동일하게) 값을 건들이는 과정이 전혀 없습니다.
{
"authKey": "bln_Z11zwvjaNGJ",
"customerKey": "b4a0c2ff6e"
}
" 와 } 가 없음에도 에러가 났던 authKey와 customerKey 입니다.
bln_Z11zwvjaNGJ 이것도 요청이 안왔어요.
bln_aPgony4Jdw4 이거는 요청이 들어온것이 확인됩니다
혹시 서버를 2대 이상 사용하시나요/
아니요 서버는 하나입니다.
authKey를 만들어 보내주는 곳에 토스페이먼츠 서버니까 거기서 authKey generation 로그를 확인해볼 수 있지 않나요?
아마도 저는 받은 authKey를 토스 서버에 보내는데, 토스 서버는 "우리는 그런 authKey"를 만들어준 적이 없어! 에서 에러가 생기는게 아닐까 싶은데요
혹시 web access log 확인 되세요?
보내주신 authkey는 전부 저희가 생성해 드린게 맞는데
에러가 발생하셨다고 하는 authkey 는 빌링키 발행요청이 저희 서버에 없습니다.
어떻게 보여드리면 될까요?
빌링키 결제창 호출 할때 전달한 successUrl 로 이동되고,
이때 전달되는 query string param 전달 할텐데요
web access log 에 남겨진, parse 전의 full url 확인 해볼수 있나요?
개발자의 끄적끄적
[php] php curl print error example / php curl 에러 출력하는 방법
[php] php curl print error example / php curl 에러 출력하는 방법 php 에서 api 통신을 개발하는 경우에 curl 을 많이 사용합니다! 그중에서 curl 이 오류가 나는 경우를 잡아야 할때에는 아래와 같이 옵션을 추가하면 됩니다. curl_setopt($ch, CURLOPT_FAILONERROR, true); 위에 옵션을 추가한뒤 아래와 같이 curl_error 를 출력하시면 됩니다! echo curl_error($ch); 참고들 하세요!
이거 보시고 billing_confirm 요청에 대해 curl_error 를 출력해 보실수 잇을까요?
넵 해보고 다시 댓글 올리겠습니다
Argument 4
Type: string
Value: "Could not resolve host: api.tosspayments.com"
이렇게 출력됩니다.
구글링해보면 대충 해결책은 제쪽 서버의 DNS 설정을 바꾸면 된다는데,,, 꼭 서버 설정을 바꾸어야만 이를 해결할 수 있을지요...?
서버에서 외부 통신 제한 같은거 있으세요?
Could not resolve host 면 api.tosspayments.com 의 IP 를 찾지 못하시는거라 지금 사용하시는 DNS 에 문제가 있는겁니다.
아니요 딱히 없을건데,, 패스트파이브 입주 사무실이라 거기랑 또 복잡하게 뭐가 있을수도 있는건가...
지금 테스트는 로컬서버에서 구현해서 진행 하고 있나요?
네
그럼 우선 로컬 PC 에서 모바일테더링 등의 public 네트워크로 전환하고 테스트 해보고, 문제가 없으면
지금 입주하고 있는 공용사무실 네트워크 외부통신 관련해서, 냥과장 매니저님께서 설명주신 이슈가 있는겁니다.
모바일테더링으로 전환 해도 문제가 있다면?
지금 로컬에 구성한 서버의 설정에 문제가 있는겁니다.
또 가끔씩은 200 성공 코드 뜨면서 hostname을 잘 찾아가는 것도 웃기네요
모바일 테더링으로 전환해서 테스트 해보시고 공유 주세요.
아 제가 잘못 말씀 드렸던게 있습니다.
원격 컴퓨터에서 서버가 돌아가고 있고, 저는 그 원격 환경에 ssh로 접속해서 개발중인 상황입니다.
이를 깜빡 잊고, 제 개인용 노트북에 서버가 돌아가는걸로 착각했네요.
이렇게 착각을 하여, 제 노트북 인터넷을 모바일 테더링으로 바꿔서 하면 "잘 되겠지 뭐" 생각하고 해봤더니 잘 됩니다. 왜 잘되는거죠??? 그저 서버가 호스팅하고 있는 웹페이지에 접속하는 유저 ip가 바뀐 것 뿐일텐데??
제 노트북을 다시 패스트파이브 와이파이에 연결하니, 다시 couldn't resolve host 에러가 뜹니다!!
서버 환경은 그대론데, 유저가 누구냐에 따라서 토스 페이먼츠 API를 못찾고 리퀘스트가 실패하는 경우가 있나요???
그리고, 똑같은 서버에서 토스페이먼츠 결제 위젯 API도 사용하도록 구현해놨는데, 그쪽 API에서는 "Could not resolve host: api.tosspayments.com" 에러가 전혀 발생하지 않았습니다.
+ 그리고
경험적으로 느끼는 바는, billingKey 발급을 받은 카드를 짧은 시간 내에 한번 더 발급 요청을 할 경우에, 성공 확률이 더 낮아지는 것 같습니다.
혹시 이와 관련되어 설정값 같은게 있을까요? 물론 에러코드인 "Could not resolve host: api.tosspayments.com" 와 연관성은 저도 잘 모르겠습니다.
패스트파이브 측에 네트워크 확인 요청 바랍니다. DNS Firewall등으로 api.tosspayments.com 접근을 차단하고원활하지 않는 경우가 있는 것 같습니다.
국내 통신3사 일반 DNS 및 구글 DNS(8.8.8.8), Cloudflare사 DNS(1.1.1.1)등에서는 api.tosspayments.com 접근이 가능하니. 실행환경 측 DNS를 일반적인 DNS로 고정/수정하시거나, 네트워크 확인요청을 해보시는게 좋을 것 같습니다.
1. 차단하고 있다기엔, 가끔씩 통신이 잘 되는 경우도 있습니다.
2. 구글 namespce 를 추가해주었지만 문제는 여전히 발생하고 있습니다.
nslookup api.tosspayments.com
해당 명령어를 실행환경 측 커맨드라인에 입력하고 어떻게 응답되시는지 확인부탁드립니다.구글 nameserver를 기존 namserver보다 우선적으로 활용하도록 하여 성공 확률을 높였습니다. 어떤 사이드 이펙트가 생길지 모르겠다만.. 일단 이제 빌링키 api 는 통신 잘 되는거 같네요...
참고로 구글 네임서버에서 api.tosspayments.com 잘 resolve됩니다.
혹시나 다시 문제가 생기거나 사이드이펙트 발생 시, 실행환경 hosts 파일에 직접 아이피를 설정하셔도 되지만, 최후의 수단으로 활용해야 합니다.
넵 감사합니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.