728x90
반응형
1. 버튼과 버튼 클릭 이벤트 함수를 만들어준다.
const unSubscribeClickHandler = (e: any) => {
if (window.confirm('구독을 취소하시겠습니까?')) {
axios.post('/api/subscribe/unsubscribe', {
muser_id: loginData.userId
}).then(({ data }) => {
if (data.success) {
alert('구독취소가 완료되었습니다. 다시 로그인해주세요.')
router.push('/')
}
else {
alert('구독취소 오류입니다. 관리자에게 문의 바랍니다.')
}
})
}
else {
}
}
2. 백엔드에 구독을 취소하는 라우터를 만들어준다.
router.post("/unsubscribe", async function (req, res, next) {
try {
Subscribe.findOne({
where: {
subscribe_muser_id: req.body.muser_id,
subscribe_type: "기본정기결제예약"
},
order: [['subscribe_createdAt', 'DESC']],
}).then(async (result) => {
if (result) {
// 인증 토큰 발급 받기
const getToken = await axios({
url: "https://api.iamport.kr/users/getToken",
method: "post", // POST method
headers: { "Content-Type": "application/json" }, // "Content-Type": "application/json"
data: {
imp_key: process.env.IMP_API_KEY, // REST API 키
imp_secret: process.env.IMP_API_SECRET_KEY // REST API Secret
}
});
const { access_token } = getToken.data.response; // 인증 토큰
// 정기결제 예약 취소
const paymentResult = await axios({
url: 'https://api.iamport.kr/subscribe/payments/unschedule',
method: "post",
headers: { "Authorization": access_token }, // 인증 토큰을 Authorization header에 추가
data: {
customer_uid: result.subscribe_customer_uid,
merchant_uid: result.subscribe_merchant_uid, // 새로 생성한 결제(재결제)용 주문 번호
}
});
MUserInfo.update({
muser_subscribe_type: ""
}, {
where: {
muser_id: result.subscribe_muser_id
}
})
res.clearCookie('')
res.send({ success: true })
}
else {
res.send({ success: false })
}
})
}
catch (Err) {
console.log("Err : ", Err)
res.send({ success: false })
}
})
module.exports = router;
728x90
반응형
'Front-End > Next.js' 카테고리의 다른 글
Next.js | State로 반응형 웹 만들기 (0) | 2022.11.07 |
---|---|
Next.js | 아임포트 정기 결제(5) ( with TypeScript ) | 모바일 웹앱 환경에서 결제하기(KCP) (0) | 2022.05.18 |
Next.js | 아임포트 정기 결제(3) ( with TypeScript ) | 아임포트 웹훅 사용하기 (0) | 2022.05.17 |
Next.js | 아임포트 정기 결제(2) ( with TypeScript ) | 백엔드에서 토큰 인증받고 결제 요청하기 (0) | 2022.05.16 |
Next.js | 아임포트 정기 결제(1) ( with TypeScript ) | 클라이언트에서 빌링키 받기 (0) | 2022.05.16 |