이성호
이성호
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
아 loadPaymentWidget 2번째 인자가 시크릿키가 아니라 customer의 고유한 값을 넣어줘야 하는 거군요?? 확인 감사합니다! 수정해서 사용하도록 하겠습니다
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
사이에 어떤 코드없이 정의 직후 requestPayment에 넣어주고 있어요
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
requestPayment 전에 body param이 어떤 거죠?? requestPaymentDto 이거 말씀이시라면 찍어봤는데 코드와 동일합니다
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
const paymentWidgetRef = useRef<PaymentWidgetInstance | null>(null);
const paymentMethodsWidgetRef = useRef<PaymentWidget | null>(null);

const initToss = useCallback(async (amount: number) => {
const key = process.env.NEXT_PUBLIC_TOSS_CLIENT_KEY;
const secret = process.env.NEXT_PUBLIC_TOSS_SECRET_KEY;
if (!key || !secret) {
throw new Error("토스 결제창 설정이 잘못되었습니다.");
}
const paymentWidget = await loadPaymentWidget(key, secret);

const paymentMethodsWidget = paymentWidget.renderPaymentMethods(
"#payment-widget",
amount
);
paymentWidget.renderAgreement("#agreement");

paymentWidgetRef.current = paymentWidget;
paymentMethodsWidgetRef.current = paymentMethodsWidget;
}, []);

useEffect(() => {
if (!isFree) {
initToss(order.finalAmount);
}
}, [initToss, isFree, order.finalAmount]);
const paymentWidgetRef = useRef<PaymentWidgetInstance | null>(null);
const paymentMethodsWidgetRef = useRef<PaymentWidget | null>(null);

const initToss = useCallback(async (amount: number) => {
const key = process.env.NEXT_PUBLIC_TOSS_CLIENT_KEY;
const secret = process.env.NEXT_PUBLIC_TOSS_SECRET_KEY;
if (!key || !secret) {
throw new Error("토스 결제창 설정이 잘못되었습니다.");
}
const paymentWidget = await loadPaymentWidget(key, secret);

const paymentMethodsWidget = paymentWidget.renderPaymentMethods(
"#payment-widget",
amount
);
paymentWidget.renderAgreement("#agreement");

paymentWidgetRef.current = paymentWidget;
paymentMethodsWidgetRef.current = paymentMethodsWidget;
}, []);

useEffect(() => {
if (!isFree) {
initToss(order.finalAmount);
}
}, [initToss, isFree, order.finalAmount]);
@Tosspayments/payment-widget-sdk에서 제공하는 loadPaymentWidget를 통해 초기 값을 세팅하고
const callbackBaseUrl = `${window.location.origin}/orders/${order.code}`;
const orderName = displayItemsWithLimit(
order.items.map((item) => item.product.name),
1
);

const requestPaymentDto = {
orderId: prepareResult.data.paymentId,
orderName,
customerName,
customerEmail: email,
customerMobilePhone: mobile,
successUrl: `${callbackBaseUrl}/success`,
failUrl: `${callbackBaseUrl}/fail`,
};

await paymentWidget
.requestPayment(requestPaymentDto)
const callbackBaseUrl = `${window.location.origin}/orders/${order.code}`;
const orderName = displayItemsWithLimit(
order.items.map((item) => item.product.name),
1
);

const requestPaymentDto = {
orderId: prepareResult.data.paymentId,
orderName,
customerName,
customerEmail: email,
customerMobilePhone: mobile,
successUrl: `${callbackBaseUrl}/success`,
failUrl: `${callbackBaseUrl}/fail`,
};

await paymentWidget
.requestPayment(requestPaymentDto)
paymentWidget의 requestPayment을 호출합니다. 외에 /confirm에 헤더로 시크릿키를 base64 인코딩하여 보내는 코드만 있습니다
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
nextjs에서 결제 위젯으로 requestPayment 부르고 있어요
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
clt2kexz50005yatibxq21wx1 입니다
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
https://apigw-sandbox.tosspayments.com/payment-gateway-window/open/api/v1/route 여기 API가 위젯을 통해 호출이 되는 것으로 파악되는데 시크릿키들은 제가 보낸 파라미터 값이 아닌 위젯에서 기본 포함하여 보내는 코드로 판단됩니다. 보안 이슈가 있지 않을까요?
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
혹시 답변 중에 이런 내용이 있었는데 넘겨도 되는 부분일까요? 2) customerKey 로 시크릿키 보내고 계시는데요. 시크릿키 보내시면 안됩니다. 지워주세요. 3) customerId 로도 시크릿키 보내고 계시는데요. 시크릿키 보내시면 안됩니다. 지워주세요. 시크릿키는 결제승인에서 base64 인코드 된 API header로만 보내주셔야 하고 파라미터로 보내는 값이 아닙니다. 전체 코드 다시 확인해봤는데 customerKey와 customerId 관련된 코드는 없으며, 시크릿키는 base64로 인코딩하여 오직 헤더로만 보내고 있습니다. (/confirm API) 또 결제 관련 코드는 requestPayment만 있는데 토스 제공 위젯을 통해 orderId, orderName, customerName, customerEmail, customerMobilePhone, successUrl, failUrl 이것만 보내주고 있습니다.
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
_skipAuth: "FORCE_SUCCESS", 인지하게 된 곳 찾았습니다! https://docs.tosspayments.com/guides/payment-widget/integration?frontend=react Checkout.jsx 쪽에 파라미터로 넘기고 있길래 똑같이 넣었습니다
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
네 공식 문서 참고해서 전반적인 코드 다시 확인하겠습니다!
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
requestPayment에서는 { orderId: prepareResult.data.paymentId, orderName, customerName, customerEmail: email, customerMobilePhone: mobile, successUrl: ${callbackBaseUrl}/success, failUrl: ${callbackBaseUrl}/fail, }; 이렇게만 보내고 있습니다
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
https://velog.io/@gonggi_bab/%EC%A3%BC%EB%AC%B8-%EA%B8%B0%EB%8A%A5-%EA%B0%9C%EB%B0%9C%EA%B3%BC-%ED%86%A0%EC%8A%A4-%ED%8E%98%EC%9D%B4%EB%A8%BC%EC%B8%A0-%EB%8F%84%EC%9E%85 이 블로그를 중점적으로 처리한 거 같습니다! _skipAuth는 제가 어디서 정보를 얻었는지 안찾아지네요 ㅠ customerKey, customerId 이부분은 어디서 보내고 있는지 확인이 안됩니다.
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
_skipAuth를 지우고 잘 되는 거 확인했습니다!
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
아마 블로그 글을 참고한 거 같아서 정확히 기억은 안납니다... 혹시 _skipAuth 이슈일까요?
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
'도*** 주식회사' 입니다
37 replies
테스트 결제에서 카드사 인증 화면이 뜨게 하는 방법이 뭔가요? (PG 최초 계약 작업)
아니요 아직 라이브 키가 없습니다. 테스트 키만 있고, 테스트 키로 진행한 결과입니다. 주문번호는 clt2bt0tt0007vuimibusk2n9 입니다. 테스트 키로 연동을 붙여두고 심사를 넣어뒀는데 저 화면을 캡쳐하는 절차를 진행하라는 안내를 받았습니다
37 replies