결제위젯 등록 시, 배포 환경에서만 실패
현재 아래 링크를 통해 테스트용 결제위젯을 연동하였습니다.
https://docs.tosspayments.com/guides/v2/payment-widget/integration
로컬에서는 성공적으로 결제 성공까지 정상적으로 나오지만, 실제 배포 환경에서는 결제 성공창으로 리다이렉트 되는 과정에서 실패합니다. 로컬호스트와 배포 환경 모두 CORS 설정은 정상적으로 진행했습니다.
1. 서버에서 특정 방화벽을 허용해야하는 이슈일까요?
2. 위 링크에서 제공하는 테스트키를 사용했는데, 따로 개발자 센터에서 발급받은 테스트키를 사용해야하는지?
연동하기 | 토스페이먼츠 개발자센터
토스페이먼츠의 간편한 결제 연동 과정을 한눈에 볼 수 있습니다. 각 단계별 설명과 함께 달라지는 UI와 코드를 확인해보세요.
12 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
결제 요청시에 보내셨던 payload 를 공유해주세요.
redirect가 안된다면 결제창을 호출하신 결제창을 호출한 domain 과 successURL 의 domain 이 다른것 같아요.
실제 payload 말씀이실까요?
payload = {"paymentKey": data.payment_key, "orderId": data.order_id, "amount": data.amount}
async with httpx.AsyncClient() as client:
response = await client.post(
"https://api.tosspayments.com/v1/payments/confirm",
headers=headers,
json=payload,
)
일단 코드는 위와같이 구성되어 있습니다.
requestpayments 호출할때 넣으셨던 파라미터 값을 알려주세요.
Toss confirm payload: {'paymentKey': 'tgen_202508181620123BEp3', 'orderId': 'order_2e2245aa-17d4-4cd8-8acb-f05ce590eab7_1755501611517', 'amount': 1900}
redirect url형식은 아래와 같습니다!
http://localhost:5173/success?paymentType=NORMAL&orderId=order_2e2245aa-17d4-4cd8-8acb-f05ce590eab7_1755501611517&paymentKey=tgen_202508181620123BEp3&amount=1900
실제 배포 환경에서는 결제 성공창으로 리다이렉트 되는 과정에서 실패라고 하셨는데 거기도 이렇게 보내신건가요? 실제 배포 환경은 localhost 가 아니실것 같은데요.
requestpayments 호출할때 넣으셨던 파라미터는 아래와 같습니다! 혹시 문제가 될 요소가 있을까요?
await paymentWidgets.requestPayment({ orderId: orderId, orderName: "내용증명서 작성 서비스", successUrl:
await paymentWidgets.requestPayment({ orderId: orderId, orderName: "내용증명서 작성 서비스", successUrl:
${window.location.origin}${import.meta.env.VITE_BASE_PATH}success
,
failUrl: ${window.location.origin}${import.meta.env.VITE_BASE_PATH}fail
,
});orderId 에 들어갔던값 알려주세요.
Toss confirm payload: {'paymentKey': 'tgen_202508181620123BEp3', 'orderId': 'order_2e2245aa-17d4-4cd8-8acb-f05ce590eab7_1755501611517', 'amount': 1900}
이게 배포 서버에서 요청하셨던 건가요?
아뇨, 로컬에서 요청했던 건이였습니다. 배포 서버에서 요청한 값 파악하여 전달드리도록 하겠습니다. 일단 배포서버 로그에는, 로컬과 달리 아래와 같은 로그가 기록되어 있습니다.
INFO:httpx:HTTP Request: POST https://api.tosspayments.com/v1/payments/confirm "HTTP/1.1 400 Bad Request"
tgen_202508181620123BEp3 로 16:21 에 이미 결제 성공 응답을 받으셨는데, 16:28 에 동일한 paymentKey 로 승인 요청을 다시 주셔서 400 에러 응답을 받으셨네요.
{"code":"ALREADY_PROCESSED_PAYMENT","message":"이미 처리된 결제 입니다."}
해결하였습니다! 감사합니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.