분류 전체보기 269

Springboot 예약시스템!(2) 가격 계산해서 전달하기!

두 가지 시나리오가 있다 일반 결제 시 자리 선택-> 시간선택-> 일반 결제-> 검증-> 결제 검증-> 예약 완료 가상계 좌시 자리 선택-> 시간선택-> 가상계좌-> 검증-> 계좌발급-> 임시 예약 완료-> 입금 확인-> 예약 완료 일단 일반 결제부터 시작해보자! 프런트 서버 예약하기를 누르면->총가격을 서버에서 받아온다->결제-> 결제 후 서버로 전송 예약하기를 누르면 buy()가 실행된다 selectTime 체크되어있는 체크박스 값들을 가져온다 getprice 가격을 가져오는데 비동기가 아닌 동기로 가져와야 한다! 값이 0원이라면 message를 표시해주자 iamport 결제 로직 후 doInsert(rsp.imp_uid)로 검증을 하러 간다 doInsert json으로 검증에 필요한 정보를 던져주고..

Springboot 결제시스템!(2) 아임포트 번외편 포트포워딩+웹훅!

검증의 또 하나의 방법이 있는데 이건 이제 주로 가상계좌입금 확인용으로 쓰는 거 같다 아임 포트 관리자 페이지에 가면 웹 훅 설정이 있다 그래서 정보를 받을 url을 입력하면 되는데 그전에 포트 포워딩을 해야 한다 localhost로는 받을 수없기 때문이다 (이걸로 한 시간 반 동안 고민했다) iptime에서 포트 포워딩 설정을 해주고 https://www.youtube.com/watch?v=cI-_sx2wTkQ 이영상을 보면 된다 포트만 자기 꺼에 맞게 해 주고 ddns를 해주자 그리고 아임 포트로 가서 http://kim80800.iptime.org:8080/auth/payment url을 적어주고 백엔드 서버로 가자! 백엔드 서버 restcontroller 이렇게 테스트를 진행해보자 아임 포트에서 ..

Springboot 결제시스템!(1) with 아임포트 결제 성공시

이제 예약에 들어가기 전에 결제시스템을 연동해보자 이전 프로젝트에 처음으로 연동했었다 https://cordingmonster.tistory.com/76?category=1032073 Springboot 결제 시스템 만들기! (1) 토큰 발급받기 with 아임포트, HttpHeaders ,RestTemplate,Response 진짜 죽는 줄 알았다 결제만 몇 번 한 건지 모르겠다 오후 2시 부터 했는데 현재 8시이다 일단 결제 시스템을 만든 이유는 사실 예약 변경/수정/삭제는 이제 db에서 delete/update/insert 하는 일만 남았 cordingmonster.tistory.com 이제 더 멋지게 코드를 써보자 시나리오는 같다 결제->결제정보아임포트전송->결제정보 백엔드 전송 프런트 서버 코드는..

Springboot 예약시스템 만들기!(1) 연/월/일/요일 뿌리기!

이전에 kimscafe에서는 '당일' 예약만 가능한 시스템이었다 이번엔 언제든 가능한 예약시스템을 사용해보자! 시나리오 자리 선택->년/월/날짜 표시-> 날짜 선택-> 시간표시-> 예약 프런트 서버 html 서버에 정보가 오면 뿌려줄 자리를 만들어 놓는다 js 같은 코드가 겹치는데 나중에 리팩토링 해주고 지금은 백엔드에 최대한 집중하자! 자리를 선택하면 function showDate(seat,month,year)함수가 작동한다 서버와 통신을 하고 성공시 년/월 다음/이전 버튼 $('#nextButton').append(""); $('#beforeButton').append(""); $('#nextButton2').append(""); $('#beforeButton2').append(""); 날짜들을 뿌..

Springboot 예외처리! with IllegalArgumentException

항상 가지는 고민이 있었다 예를 들어 userDto dto= dao.findByEmail(email) 했을 때 잘못된 값이 와서 null 반환된다면? 물론 try catch로 묶어서 throw new 런타임 익셉션으로 던지면 되지만 제네릭을 사용해서 dto를 널을 검사하고 null이면 예외를 던지면 어떨까...? 라는 생각을 하고 구현해봤다! 새로운 클래스를 만들었다 제네릭을 이용해서 dto 받은 다음 null이라면 예외를 일으킨다! errorRestController 테스트 전화인증 로직에서 말도 안 되는 값을 넣어놨다 완료! 사실 제네릭 한번 써보고 싶었다 ㅋㅋㅋ

Springboot 마이페이지!(3) 비밀번호 변경!

이제 비밀번호 변경을 해주자 프런트 서버는 현재 비밀번호/새 비밀번호/새 비밀번호 확인 이렇게 던져주면 된다 백엔드 서버 restController service 현재 비밀번호/새 비밀번호가 if(!passwordEncoder.matches(pwdDto.getNowPwd(), userDto.getPwd())) if(!pwdDto.getNewPwd().equals(pwdDto.getNewPwd2())) 일치하는지 검증해주고 시큐리티 비밀번호 인코더를 사용해서 새 비밀번호를 입력해주자! userDto.setPwd(passwordEncoder.encode(pwdDto.getNewPwd())); 테스트 변경 전 현재 비밀번호 불일치 유효성 4~10자 사이 3개 중 하나라도 유효성 검사를 통과하지 못하면 새 비밀..

Springboot 마이페이지!(2) 휴대폰변경하기

이제 휴대폰 변경 구현을 해보자 역시나 기존 로직을 끌어다가 사용하면 된다 https://cordingmonster.tistory.com/131?category=1041862 Springboot 인증 시스템 리팩토링!(1) with interface 이전 글 https://cordingmonster.tistory.com/108?category=1038496 Springboot Jwt+휴대폰인증!(2) 인증번호 확인 이제 인증번호가 맞는지 안 맞는지 판별해보자 프런트 js json형태로 번호/입력 전송 let dat.. cordingmonster.tistory.com https://cordingmonster.tistory.com/132?category=1041862

Springboot 마이페이지 (1) 주소변경하기!

마이페이지에서는 주소/전화/이메일 인증/비밀번호 변경이 가능하게 만들것이다 주소부터 봐 보자! 프런트 서버 그냥 회원가입 때 썼던 카카오 우편번호 서비스를 한 번 더 넣어 놓으면 된다 다시 한번 카카오에게 감사를 전합니다! restController 빨리 리액트 공부하고 싶다 백엔드+백엔드 서버통신도 아니고 참 백엔드 서버 restController service 테스트 서울대병원으로 해보자 변경 완료! 재밌다 아주

Spring boot 예외처리! with Transactional

kim's cafe에이어 kim's shop을 만드는 도중 치명적인 오류가 있었다 무려 Transactional어노테이션이 먹히지 않았다.. 아예 작동하지 않았다 UPDATE문도 던지지 않고.. 근데 업데이트야 뭐 sql문을 던지면 되지만 제일 두려운 게 rollback이었다 어노테이션 덕에 rollback을 쉽게 알아서 해주는데 그걸 사용할 수 없게 된 거 같았다.. 결론 일단 해결했다 어노테이션 위치가 잘못되어있었다 흐름은 이렇다 프런트(3030)에서 요청->(8080)으로 전달 -> controller->confrimService->senPhone함수-> sendSms함수-> updateconfrim함수 이전에 난 updateconfrim에 어노테이션을 붙여 놓았다 즉 마지막에 SET이 이뤄지는 곳..

Springboot 인증 시스템 리팩토링!(2) with interface

이전소스 https://cordingmonster.tistory.com/107?category=1038496 Spring boot Jwt+휴대폰인증!(1) with Coolsms 이제 전화인증을 구현할 건데 아임 포트를 사용하려 했으나... 다날 서비스를 신청해야 하고 다날 서비스 신청에는 사업자등록증이 필요해서 허접하지만 직접 구현했다! 1. 세션 인증을 요청-> cordingmonster.tistory.com 검증 로직을 리팩터링 했으니 이제 보내는 로직도 리팩터링 해보자! 트랜잭셔널 어노테이션을 다시 사용하였다! https://cordingmonster.tistory.com/133 Spring boot 예외처리! with Transactional kim's cafe에이어 kim's shop을 만드는..