https://test.test.com/payment_success?paymentType=NORMAL&orderId=250015&paymentKey=eduli202505221111
결제성공했다고 뜨는데... 카드결제내역에는 안보입니다.
결제위젯을 사용했습니다.
19 Replies
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) :
- 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요.
* 주말/공휴일에는 답변이 늦을 수 있어요.
payment_success 에서 confirm API 를 호출해 주셔야 합니다. 이부분을 호출하셨는지 확인부탁드립니다.
아 안한것 같네요..
got
.post("https://api.tosspayments.com/v1/payments/confirm", {
headers: {
Authorization: encryptedSecretKey,
"Content-Type": "application/json",
},
json: {
orderId: orderId,
amount: amount,
paymentKey: paymentKey,
},
responseType: "json",
})
.then(function (response) {
// 결제 성공 비즈니스 로직을 구현하세요.
console.log(response.body);
res.status(response.statusCode).json(response.body)
})
.catch(function (error) {
// 결제 실패 비즈니스 로직을 구현하세요.
console.log(error.response.body);
res.status(error.response.statusCode).json(error.response.body)
});
});
감사합니다. 작업해보고 안되면 또 문의드릴게요
네 감사합니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
혹시 python flask confirm api 사용예제 있을가요?
toss_secretkey = os.getenv("toss_clientkey")
encoded_key = base64.b64encode(f"{toss_secretkey}:".encode()).decode()
headers = {
"Authorization": f"Basic {encoded_key}",
"Content-Type": "application/json"
}
payload={}
payload["orderId"]=orderId
payload["amount"]=amount
payload["paymentKey"]=paymentKey
response = requests.post(
"https://api.tosspayments.com/v1/payments/confirm",
headers=headers,
json=payload
) 이런 식으로 했는데 response 가 빈값이네요
postman 테스트해도 안되네요.. 어디가 문제일가요?

url = "-"
secertkey = "-"
userpass = secertkey + ':'
encoded_u = base64.b64encode(userpass.encode()).decode()
headers = { "Authorization" : "Basic %s" % encoded_u, "Content-Type": "application/json" }
params = { "orderId" : orderId, "amount" : amount, "paymentKey" : paymentKey, }
res = requests.post(url, data=json.dumps(params), headers=headers) toss_secretkey = os.getenv("toss_clientkey") 이 부분이 문제 일것 같아요 toss_clientkey 라는 값이 시크릿키가 아닐것 같아요
headers = { "Authorization" : "Basic %s" % encoded_u, "Content-Type": "application/json" }
params = { "orderId" : orderId, "amount" : amount, "paymentKey" : paymentKey, }
res = requests.post(url, data=json.dumps(params), headers=headers) toss_secretkey = os.getenv("toss_clientkey") 이 부분이 문제 일것 같아요 toss_clientkey 라는 값이 시크릿키가 아닐것 같아요
toss_secretkey = "test_gsk_docs_OaPz8L5KdmQXkzRz3y47BMw6"
userpass = toss_secretkey + ':'
encoded_u = base64.b64encode(userpass.encode()).decode()
headers = {
"Authorization" : "Basic %s" % encoded_u,
"Content-Type": "application/json"
}
payload={}
payload["orderId"]="250020"
payload["amount"]=73
payload["paymentKey"]="tedul20250522143015a5uI4"
response = requests.post(
"https://api.tosspayments.com/v1/payments/confirm",
headers=headers,
data=json.dumps(payload)
)
return str(response)
시크릿 바꿔서 했는데도.. 그냥 리턴값이 비어있습니다.
금액부터 100원 이상으로 해보실래요?
toss_secretkey = "test_gsk_docs_OaPz8L5KdmQXkzRz3y47BMw6"
userpass = toss_secretkey + ':'
encoded_u = base64.b64encode(userpass.encode()).decode()
headers = {
"Authorization" : "Basic %s" % encoded_u,
"Content-Type": "application/json"
}
params = {
"orderId" : "250020",
"amount" : 72,
"paymentKey" : "tedul20250522143015a5uI4",
}
response = requests.post(
"https://api.tosspayments.com/v1/payments/confirm",
headers=headers,
data=json.dumps(params)
)
return str(response)
아 잠시만요
그냥 빈값이네요
toss_secretkey = "test_gsk_docs_OaPz8L5KdmQXkzRz3y47BMw6"
userpass = toss_secretkey + ':'
encoded_u = base64.b64encode(userpass.encode()).decode()
headers = {
"Authorization" : "Basic %s" % encoded_u,
"Content-Type": "application/json"
}
params = {
"orderId" : sp_ordernum,
"amount" : int(amount),
"paymentKey" : paymentKey,
}
response = requests.post(
"https://api.tosspayments.com/v1/payments/confirm",
headers=headers,
data=json.dumps(params)
)
return str(response)
postman 에서는 403 Forbidden 그냥 이거가 뜨네요
return str(response) 을 하고 있는데....
json 응답을 보려면
res = response.json()
print(res)
이런식으로 하는 등 requests 기능에 맞는 응답처리를 하셔야 할것 같고요
Postman 에서는 header 에서 authorization 설정을 잘못 하셨을것 같고요
python requests 로 restful API 호출 및 json 응답 처리에 대해서 조금 더 알아보시면 좋을것 같아요
postman 에서
authorization, header 부분에서 무엇을 설정했는지도 스크린샷으로 전달 해주세요
결제승인은,
결제인증 (카드사 창에서 액션) 완료하고 진행하고 계시는것 맞으시지요?
response.json() 하니까 응답이 나오네요
{
"code": "ALREADY_PROCESSED_PAYMENT",
"message": "\uc774\ubbf8 \ucc98\ub9ac\ub41c \uacb0\uc81c \uc785\ub2c8\ub2e4."
}
결제승인은,
결제인증 (카드사 창에서 액션) 완료하고 진행 해야 해요
새롭게 결제 만들어서 진행 하세요
네 됩니다. 감사합니다

username 에 넣었습니다
postman 설정방법도 부탁드립니다.

Authorization 을 하거나
Header 를 하거나 둘중에 하나만 하고
Authorization 으로 하려면, username 에는 base64 인코드된 값이 아니라 키 값 그대로 넣으세요