가상계좌를 자바스크립로 연동하려는데 에러가 나요.
가상계좌에서 동의를 하고 은행을 선택할 수 있게 하려고 하는데 창이 안 뜹니다.
{"code":"Y","msg":"Y","data":{"clientKey":"XXXXXXXXXXXX","accountDuration":"48"}}
(clientKey는 감췄습니다.) 이렇게 리턴이 되면 성공아닌가요?
어떻게 수정을 해야 할까요?

14 Replies
지금 참고해서 연동 중이신 페이지 공유해주시겠어요?
메일로도 주신것 같은데요.
주문번호를 string으로 넣어 보실수 있을까요?
페이지 공유면...파일을 말씀하시는 걸까요?
<script src="https://js.tosspayments.com/v1/payment"></script>
<script>
document.addEventListener("DOMContentLoaded", function () {
$(document).on('click', '.btn_pay', function () {
$('#orderTotal').val(parseInt($('#orderTotal').val()) - parseInt($('#usePoint').val()));
$.ajax({
type : "POST", dataType:"json", async:true, cache:false, contentType:"application/x-www-form-urlencoded;charset=UTF-8",
url : "/order/tossInfo.json",
failure : function(_response) { alert("error"); return false; },
success : function(object, status) {
if (status === "success") {
callToss(object.data.clientKey, object.data.accountDuration);
} else {
alert("error");
}
}
});
});
});
function callToss(clientKey, accountDuration) {
tossPayments = TossPayments(clientKey);
tossPayments.requestPayment('VIRTUAL_ACCOUNT', { // 결제 수단 파라미터
// 결제 정보 파라미터
amount : $('#orderTotal').val(),
orderId : $('#orderNo').val(),
orderName : '[[${cartDto.orderProductName}]]',
customerName: '[[${userVo.memberNm}]]',
successUrl : 'http://localhost:8003/order/paymentSuccess',
failUrl : 'http://localhost:8003/order/paymentFail',
validHours : accountDuration,
cashReceipt : {
type: '미발행',
},
})
.catch(function (error) {
if (error.code === 'USER_CANCEL') {
// 결제 고객이 결제창을 닫았을 때 에러 처리
alert("결제를 취소하셨습니다.");
return;
} else if (error.code === 'INVALID_CARD_COMPANY') {
// 유효하지 않은 카드 코드에 대한 에러 처리
alert("에러입니다.");
return;;
}
})
}
</script>
일단....토스페이 호출하는 부분은 이렇게 생겼습니다
jquery, thyeleaf 사용해서 작성되었습니다.
orderId : $('#orderNo').val(),
여기를 '로 감싸주시기 바랍니다.
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
그거 감싸고 했는데도 동일합니다
금액이 "NaN" 로 되어 있네요. 이 부분도 체크 부탁 드려요.
그건 실행된 후에 값이 변경된건데...그렇게 안 되게 하고서 다시 체크해 보겠습니다.
감사합니다
말씀해 주신 부분 체크해서 해결 되었습니다.
감사합니다.
가상계좌 발급의 경우 이용자가 입금을 할 때 입금해야 할 금액과 다른 금액을 입금이 가능한가요?
불가능 합니다.
네..알겠습니다. 감사합니다
그리고 가상 계좌 결제 성공하고 리턴값이 paymentKey={PAYMENT_KEY}&orderId={ORDER_ID}&amount={AMOUNT} 이렇게 세 개를 보내준다고 설명이 되어 있던데 계좌 정보는 전달해 주지 않는지요?
네, 결제요청에 성공하면 리턴되는 값이구요. /v1/payments/confirm 을 호출하여 가상계좌 발급에 성공하면 virtualAccount 객체가 응답값으로 내려갑니다.
이해 하기가 어렵습니다....계좌 정보를 받을 수 있다는 말씀이신지요?
아래 링크의 3번 부분을 보시면 될 것 같네요.
https://docs.tosspayments.com/guides/payment/integration#%EA%B2%B0%EC%A0%9C%EC%B0%BD-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0
결제창 연동하기 | 토스페이먼츠 개발자센터
카드, 계좌이체, 휴대폰, 상품권 결제를 연동하는 방법을 알아보세요.
네 감사합니다