조엘파파
조엘파파14mo ago

결제위젯 결제처리도중 사용자가 취소한 경우에 어떤 작업을 하고 싶은데 어떤 이벤트에 작성을 해야할까요?

위젯을 쓰고 있는데 결제버튼을 누르면 우선 장바구니데이타와 배송지등을 이용해서 주문테이블을 생성한후에 결제승인과정들이 이루어지거든요 근데 결제창이 떠있어서 진행될때 그냥 위젯을 닫아버리면 그 생성했던것을을 지우고 싶거든요 위젯창을 사용자가 닫아버렸을때는 어떤 이벤트에서 해야되나요?
11 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
이실장
이실장14mo ago
PC는 promise로 에러 catch 해보시면 될 것 같아요. 모바일은 failUrl로 이동하고요
조엘파파
조엘파파OP14mo ago
자바스크립트예제가 있을까요? 프로미스를 사용하는?
조엘파파
조엘파파OP14mo ago
감사합니다.
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.
조엘파파
조엘파파OP14mo ago
기존게 paymentWidget.requestPayment({ orderId: orderId, orderName: orderName, successUrl: "http://localhost:8080/order/success", failUrl: "http://localhost:8080/order/fail", customerEmail: email, customerName: name }); 이렇게 있었다면 paymentWidget .requestPayment({ // 결제 정보 파라미터 // successUrl, failUrl, windowTarget 파라미터를 넘기지 마세요. orderId: orderId, orderName: orderName }) .then(function (data) { // 성공 처리: 결제 승인 API를 호출하세요 // success처리하는 api 를 콜하게 ajax로 콜하는 function하나 만들어 그걸 실행 // successApi() }) .catch(function (error) { // 에러 처리: 에러 목록을 확인하세요 // https://docs.tosspayments.com/reference/error-codes#failurl로-전달되는-에러 if (error.code === 'USER_CANCEL') { // 결제 고객이 결제창을 닫았을 때 에러 처리 // orderId로 생성된 orders, orderDetail, payinto를 삭제하는 api를 ajax로 부르면 되나요? 아니면 그일을 하는 메소드를 아래 만들어서 그 메소드를 콜하면 되나요? // rollbackGenerateOrder(orderId); } else if (error.code === 'INVALID_CARD_COMPANY') { // 유효하지 않은 카드 코드에 대한 에러 처리 } }) 이렇게 하는건가요?
유부장
유부장14mo ago
catch 안에서, 명시된에러코드에 따라, 어떤 액션이 수행되는지는 구현해서 넣으시면 될것 같습니다. 내부 API 호출, 아니면 그 일을 하는 메서드 등등.. 원하시는 방향으로 편하게 진행 하시면 될듯 합니다.
조엘파파
조엘파파OP14mo ago
// successUrl, failUrl, windowTarget 파라미터를 넘기지 마세요. orderId: orderId, orderName: orderName 이부분 맞게 된건가요? 저 두개만 넣고 successUrl: 등 다른거 지우면 되나요? 아 customerEmail: email, customerName: name은 넣나요? 위젯에서 성공하면 paymentKey랑 orderId, amount, maymentType를 파라미터로 success페이지로 가잖아요? 근데 promise에서 처리하는건 성공url 실패url않넣고 어떻게 하는지 잘 모르겠네요..... 승인요청은 /order/success 처리하는 콘트롤러에서 불러서 처리하거든요....
이실장
이실장14mo ago
paymentWidget.requestPayment({
orderId: 1111,
orderName: '토스 티셔츠 외 2건',
successUrl: 'http://320948230',
failUrl: 'http:239847293847',
customerEmail: 'customer123@gmail.com',
useEscrow:false,
useInternationalCardOnly: true,
customerName: '김토스'
}).catch(function (error) {

if (error.code === 'USER_CANCEL') {
// 결제 고객이 결제창을 닫았을 때 에러 처리
console.log(error.code)
} else if (error.code === 'INVALID_CARD_COMPANY') {
// 유효하지 않은 카드 코드에 대한 에러 처리
}
}) ;
paymentWidget.requestPayment({
orderId: 1111,
orderName: '토스 티셔츠 외 2건',
successUrl: 'http://320948230',
failUrl: 'http:239847293847',
customerEmail: 'customer123@gmail.com',
useEscrow:false,
useInternationalCardOnly: true,
customerName: '김토스'
}).catch(function (error) {

if (error.code === 'USER_CANCEL') {
// 결제 고객이 결제창을 닫았을 때 에러 처리
console.log(error.code)
} else if (error.code === 'INVALID_CARD_COMPANY') {
// 유효하지 않은 카드 코드에 대한 에러 처리
}
}) ;
그냥 이렇게 하면 됩ㄴ디ㅏ ㅇㅔ러만 캐치하시면되요
조엘파파
조엘파파OP14mo ago
감사합니다.

Did you find this page helpful?