trainers
trainers
UNAUTHORIZED_KEY 에러 관련 확인 요청드립니다
브랜드페이 시크릿키로 하니 잘되네요
9 replies
UNAUTHORIZED_KEY 에러 관련 확인 요청드립니다
브렌드페이 secretKey 로 다시 테스트 해보겠습니다
9 replies
UNAUTHORIZED_KEY 에러 관련 확인 요청드립니다
401 에러가 발생하여 로그가 안남고 있는 것 같습니다.
9 replies
next.js 에서 https://api.tosspayments.com/v1/brandpay/authorizations/customer-token 무한호출
아 그렇군요! 네 감사합니다
18 replies
next.js 에서 https://api.tosspayments.com/v1/brandpay/authorizations/customer-token 무한호출
네 맞습니다. 그런데 그러면 refresh token 을 사용해서 access token 발급을 안하고 계속해서 AuthorizationCode 형식으로만 access token 을 발급받는 것인데 문제가 없을지요?
18 replies
next.js 에서 https://api.tosspayments.com/v1/brandpay/authorizations/customer-token 무한호출
정보 제출이 안되네요
18 replies
next.js 에서 https://api.tosspayments.com/v1/brandpay/authorizations/customer-token 무한호출
시크릿키는 결제위젯 시크릿키가 아닌 자동결제・API 연동 키를 사용하였습니다
18 replies
next.js 에서 https://api.tosspayments.com/v1/brandpay/authorizations/customer-token 무한호출
위는 2의 백엔드 코드입니다
18 replies
next.js 에서 https://api.tosspayments.com/v1/brandpay/authorizations/customer-token 무한호출
방금 수정하면서 발견한 것인데요.
export async function brandpayCallbackAuth(ctx: KoaAppContext) {
if (!ctx.state.loginInfo) {
throw new CustomError(ResCode.AUTH_NEED_LOGIN);
}

const query: RequestBrandpayAccessTokenQuery = ctx.query;

const { no: memberNo } = ctx.state.loginInfo;

// const refreshToken = await orderSvc.getMemberBrandpayRefreshToken(memberNo);
// if (refreshToken) {
// query.grantType = 'RefreshToken';
// query.refreshToken = refreshToken;
// delete query.code;
// }
const result = await orderSvc.requestBrandpayAccessToken(query);

if (result.accessToken) {
const { transaction } = ctx.state;
if (!transaction) {
throw new CustomError(ResCode.REQUEST_TRANSACTION_GET_FAILED);
}
await orderSvc.setBrandpayRefreshToken(memberNo, result.refreshToken, transaction);
await orderSvc.setBrandpayCustomerKey(memberNo, query.customerKey, transaction);
return true;
} else {
throw new CustomError(ResCode.ORDER_PAYMENT_BRANDPAY_AUTH_FAILED);
}
export async function brandpayCallbackAuth(ctx: KoaAppContext) {
if (!ctx.state.loginInfo) {
throw new CustomError(ResCode.AUTH_NEED_LOGIN);
}

const query: RequestBrandpayAccessTokenQuery = ctx.query;

const { no: memberNo } = ctx.state.loginInfo;

// const refreshToken = await orderSvc.getMemberBrandpayRefreshToken(memberNo);
// if (refreshToken) {
// query.grantType = 'RefreshToken';
// query.refreshToken = refreshToken;
// delete query.code;
// }
const result = await orderSvc.requestBrandpayAccessToken(query);

if (result.accessToken) {
const { transaction } = ctx.state;
if (!transaction) {
throw new CustomError(ResCode.REQUEST_TRANSACTION_GET_FAILED);
}
await orderSvc.setBrandpayRefreshToken(memberNo, result.refreshToken, transaction);
await orderSvc.setBrandpayCustomerKey(memberNo, query.customerKey, transaction);
return true;
} else {
throw new CustomError(ResCode.ORDER_PAYMENT_BRANDPAY_AUTH_FAILED);
}
위 코드에서 주석 처리 한 부분을 주석 해제하면 해당 문제가 발생합니다. 즉 refreshToken 을 사용하여 access token 을 발급받는 과정을 추가하면 발생하는 문제네요.
18 replies
next.js 에서 https://api.tosspayments.com/v1/brandpay/authorizations/customer-token 무한호출
네 맞습니다.
18 replies
next.js 에서 https://api.tosspayments.com/v1/brandpay/authorizations/customer-token 무한호출
18 replies
brandpay 연동 중 UNAUTHORIZED_KEY
감사합니다!
25 replies
brandpay 연동 중 UNAUTHORIZED_KEY
해결되었습니다. 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 });
}
}
25 replies
brandpay 연동 중 UNAUTHORIZED_KEY
25 replies
brandpay 연동 중 UNAUTHORIZED_KEY
포스트맨은 안해봤는데 시도해볼게요!
25 replies
brandpay 연동 중 UNAUTHORIZED_KEY
방금 요청 하나 보내서 401 응답을 받았는데 혹시 확인이 안될까요?
25 replies
brandpay 연동 중 UNAUTHORIZED_KEY
상점 아이디 treineqe7n 에 해당하는 시크릿키도 사용해보았습니다
25 replies
brandpay 연동 중 UNAUTHORIZED_KEY
넵 상점 아이디 cp_treine8zj1 에 해당하는 자동결제API 연동키입니다
25 replies
brandpay 연동 중 UNAUTHORIZED_KEY
현재는 sk 이며, gsk 로 된 개발연동용 시크릿키도 사용해보았는데 동일한 오류 발생합니다.
25 replies