trainers
trainers17mo ago

brandpay 연동 중 UNAUTHORIZED_KEY

현재 브랜드페이 사용 계약은 완료했고 카드사 심사 진행중인데요. 상점 테스트용 결제위젯 연동 키로 브랜드페이를 띄우고, 사용자가 카드를 등록하는 상황입니다. 백엔드에서 자동결제・API 연동 키 로 grandType authorizationCode 로 accessToken 을 요청하는데 계속해서 UNAUTHORIZED_KEY 에러가 발생합니다.
export async function requestBrandpayAccessToken(
param: RequestBrandpayAccessTokenQuery
): Promise<RequestBrandpayAccessTokenResponse> {
try {
logger.debug('param: ', { data: param });
logger.debug('header: ', { data: `Basic ${Buffer.from(SECRET_KEY + ':', 'utf8').toString('base64')}` });
const result = await axios.post(`https://${HOST_NAME}/v1/brandpay/authorizations/access-token`, {
data: param,
headers: {
Authorization: `Basic ${Buffer.from(SECRET_KEY + ':', 'utf8').toString('base64')}`,
'Content-Type': 'application/json',
},
});

const data = result.data as RequestBrandpayAccessTokenResponse;
return data;
} catch (err: any) {
if (err instanceof AxiosError) {
logger.error('axios error: ', { data: err });
}
throw new CustomError(err.response.data.code, { data: err });
}
}
export async function requestBrandpayAccessToken(
param: RequestBrandpayAccessTokenQuery
): Promise<RequestBrandpayAccessTokenResponse> {
try {
logger.debug('param: ', { data: param });
logger.debug('header: ', { data: `Basic ${Buffer.from(SECRET_KEY + ':', 'utf8').toString('base64')}` });
const result = await axios.post(`https://${HOST_NAME}/v1/brandpay/authorizations/access-token`, {
data: param,
headers: {
Authorization: `Basic ${Buffer.from(SECRET_KEY + ':', 'utf8').toString('base64')}`,
'Content-Type': 'application/json',
},
});

const data = result.data as RequestBrandpayAccessTokenResponse;
return data;
} catch (err: any) {
if (err instanceof AxiosError) {
logger.error('axios error: ', { data: err });
}
throw new CustomError(err.response.data.code, { data: err });
}
}
요청코드는 위와 같습니다. param 에는 {"grantType":"AuthorizationCode","customerKey":"trainers_zONnNzyHAhKwFt9nIF8KZ","code":"G57Eba3GxOQMmb7PEVpWDOxm"} 위와 같은 값이 들어갑니다.
14 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
이실장
이실장17mo ago
secretKey는 개발자센터에서 어떤거 사용하셨을까요 위젯키 쓰셨을까요? 중간에 gsk 인지 sk인지 궁금합니다 .
trainers
trainersOP16mo ago
현재는 sk 이며, gsk 로 된 개발연동용 시크릿키도 사용해보았는데 동일한 오류 발생합니다.
이실장
이실장16mo ago
우선 sk를 사용해주셔야해요 인코딩된 값 한번 남겨주실 수 있으세요? 채팅 확인하시고 남겨주시면 제출할 수 있는 링크 드릴게요 확인하고 지웠습니다.
trainers
trainersOP16mo ago
넵 상점 아이디 cp_treine8zj1 에 해당하는 자동결제API 연동키입니다 상점 아이디 treineqe7n 에 해당하는 시크릿키도 사용해보았습니다
이실장
이실장16mo ago
일단 cp_treine8zj1것을 쓰는게 맞고 인코딩도 잘 되었습니다. 그런데 저희쪽 요청들어온 내용이 없네요
trainers
trainersOP16mo ago
방금 요청 하나 보내서 401 응답을 받았는데 혹시 확인이 안될까요?
이실장
이실장16mo ago
해당 에러 받으면 원래 저희쪽으로 로그가 안남습니다. postman 등으로 실행해도 동일한가요?
trainers
trainersOP16mo ago
포스트맨은 안해봤는데 시도해볼게요!
이실장
이실장16mo ago
code부터 새로 받아서 한번 부탁드려요
trainers
trainersOP16mo ago
넵 해결되었습니다. axios.post 함수 사용 시 두번째 인자에 param 을 넣어주니 잘 되네요 ;;
export async function requestBrandpayAccessToken(
param: RequestBrandpayAccessTokenQuery
): Promise<RequestBrandpayAccessTokenResponse> {
try {
logger.debug('param: ', { data: param });
logger.debug('header: ', { data: `Basic ${Buffer.from(BRANDPAY_SECRET_KEY + ':', 'utf8').toString('base64')}` });
const result = await axios.post(`https://${HOST_NAME}/v1/brandpay/authorizations/access-token`, param, {
headers: {
Authorization: `Basic ${Buffer.from(BRANDPAY_SECRET_KEY + ':', 'utf8').toString('base64')}`,
'Content-Type': 'application/json',
},
});

const data = result.data as RequestBrandpayAccessTokenResponse;
return data;
} catch (err: any) {
if (err instanceof AxiosError) {
logger.error('axios error: ', { data: err.toJSON() });
}
throw new CustomError(err.response.data.code, { data: err });
}
}
export async function requestBrandpayAccessToken(
param: RequestBrandpayAccessTokenQuery
): Promise<RequestBrandpayAccessTokenResponse> {
try {
logger.debug('param: ', { data: param });
logger.debug('header: ', { data: `Basic ${Buffer.from(BRANDPAY_SECRET_KEY + ':', 'utf8').toString('base64')}` });
const result = await axios.post(`https://${HOST_NAME}/v1/brandpay/authorizations/access-token`, param, {
headers: {
Authorization: `Basic ${Buffer.from(BRANDPAY_SECRET_KEY + ':', 'utf8').toString('base64')}`,
'Content-Type': 'application/json',
},
});

const data = result.data as RequestBrandpayAccessTokenResponse;
return data;
} catch (err: any) {
if (err instanceof AxiosError) {
logger.error('axios error: ', { data: err.toJSON() });
}
throw new CustomError(err.response.data.code, { data: err });
}
}
이실장
이실장16mo ago
고생하셨습니다.
trainers
trainersOP16mo ago
감사합니다!
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?