분류 전체보기 269

Springboot 결제시스템!(6) 아임포트 환불!(미완성)

경우의 수가 있었다 1. 결제된 상품 환불/부분 환불 2. 가상계좌로 결제된 상품 환불/부분 환불 3. 미입금 계좌 환불/부분 환불 테스트 계정으로 할 수 있는 건 1번이었다 2/3번은 세틀 뱅크로 하면 가능 하지만 현재 isp카드결제에서 오류가 나서(j999) 문의를 넣어놓은 상태이다 토이 프로젝트여서 더는 시간을 끌 수 가없다 다음 토이 프로젝트에서 집중적으로 다뤄봐야 할 거 같다 그래서 문의를 했다 디렉트로 pg사로 테스트할 수없는지 kg이니시스는 사업자 등록이 꼭 필요하다고 해서 불가능했다 설명도 딱히 할 게 없다 코드도 길어지기만 했고 미완성인 상태이다 재밌게 만들고 있었는데 김이 확 빠졌다 대충 하고.. 게시판으로 가자 설명도 딱히 할 게 없어서 사진 한 장으로 대체한다 optional은 까먹..

Springboot 재고정리 시스템!(1) 가상계좌 재고정리 spring batch+ spring Scheduled

5분에 한 번씩 자동 재고 정리가 될 수 있도록 만들어 보자 spring Scheduled/batch를 사용하려면 의존성 주입이 필요하다 그리고 어노테이션을 붙혀줘야한다 여기에 어노테이션 붙이는 건 처음이다 그리고 batch를 위한 세팅을 해야 한다 여기를 참고하자 https://acet.pe.kr/799 springboot 2.x 이상 springbatch table문제 해결 방법! id 'org.springframework.boot' version '2.3.2.RELEASE'를 사용 중! 그리고 springbatch개발을 하고 있다! 그런데? 스프링배치를 수행하면서 아래의 오류 발생~~! bad SQL grammar [SELECT JOB_INSTANCE_ID, JOB_.. acet.pe.kr appl..

Springboot 예약내역페이지!(1) 예약내역 보여주기(페이징)+ jpa+mysql inner join

이제 예약내역을 확인 할수 있게 뿌려주자 기능은 예약취소/기간별 예약조회 이렇게 두개를 만들었다 (예약취소는 구현중이다) 프런트 서버 html js 최초입장시 로그인 이메일 표시해주는 함수 function getEmail() 최초 입장시 예약내역을 불러와주는 함수 getReservation() (밑에 사진에 자세하게 나와있다) 예약 취소관련함수 function cancleReservation() 페이지다음버튼 function next() 스크립트로 테이블 목록들을 그린다 document.getElementById('header').innerHTML=("예약번호예약일자사용일자예약자리취소결제상황계좌번호/결제수단결제기한/결제완료일금액"); 예약이 없다면 아무것도 표시하지 않는다 if(reservations==..

Springboot 결제시스템!(5) 가상계좌입금확인 +예약시스템 with아임포트

자 이제 테스트 페이지에서 입금 확인을 만들어주자 시나리오 입금확인->어떤종류인지 확인(예약인지/상품인지)->DB수정 웹 훅을 해야 하기 때문에 포트 포워딩을 꼭 해야 한다 restcontroller 아임 포트 여기로 던져준다 cancel/ready/paid든 paymentService 머 스타치 id가 vbank로 시작하는지 검사하자 if(status.equals("paid")&&merchantUid.startsWith("vbank")) 맞다면 impid를 이용해 찾는다 vBankDto vBankDto=vbankDao.findByPaymentId(paymentId); 상품/예약에 따라 테이블에 접근해 상태를 수정해준다 if(vBankDto.getKind().equals("reservation")) 결제..

Springboot 결제시스템!(4) 가상계좌 +예약시스템 with아임포트

이제 검증/예외처리를 해보자 검증은 일반 결제랑 비슷하다 토큰 받고->정보 받고->검증 iamportService 오우 쒯 너무 길다 구매자 정보 확인 confrimBuyerinfor(userDto, buyInfor, totalPrice) 가상계좌라면 else if(status.equals("ready")) vbank테이블에 들어갈 클래스 vbankPayment vbankPayment=new vbankPayment() 예외 터질 시 매번 취소를 위해 세션에 정보 저장 httpSession.setAttribute("merchantUid",buyInfor.get("merchant_uid"))외 6줄 일반 결제랑 크게 다를 게 없다 다만 채번 취소가 좀 다르다 채번 취소 errorRestController 예..

Springboot 결제시스템!(3) 가상계좌 날짜 발급 with아임포트

놀랍게도 가상계좌 테스트도 가능한 아임 포트였다 진짜 카카오/네이버/아임 포트 진짜 감사합니다 시나리오 일반 결제 일반 결제 선택-> 서버에서 가격 전송-> 완료-> 검증-> 입금완료-> 예약 시도 가상결제 가상계좌 선택-> 서버에서 가격 전송-> 서버에서 입금일 생성-> 완료-> 검증-> 입금완료-> 예약 시도(임시) 가상계좌 입금 확인은 웹 훅을 이용해 야하기 때문에 포트 포워딩을 해야 한다 https://cordingmonster.tistory.com/140?category=1043621 Springboot 결제시스템!(2) 아임포트 번외편 포트포워딩+웹훅! 검증의 또 하나의 방법이 있는데 이건 이제 주로 가상계좌입금 확인용으로 쓰는 거 같다 아임 포트 관리자 페이지에 가면 웹 훅 설정이 있다 그래..

Springboot 예약+결제시스템 리펙토링!

1. 아임 포트에서 가상계좌 테스트를 지원한다 2. 부트 페이는 이제 없어도 된다 3. 구조변경이 불가피 해졌다 abstract클래스 이클래스는 결제 검증이 끝나고 예약 dto에게 전달해줄 변수들을 들고 있다 nomalPaymenrtClazz 추상 클래스를 상속받아 일반 결제 결제 검증 후-> paidproduct테이블에 insert 할 때 사용된다 현재는 paymethod하나이지만 나중에 더 많아질 때를 대비해 만들어 놓았다 vbankpaymentclazz 가상계좌 요청 시 사용되는 클래스이다 역시 추상 클래스의 상속 후 사용한다 vbank테이블에 insert 할 때 사용된다 reservationService 흐름도 바뀌었다 결제 검증 우선 후 paymentabstract paymentabstract=..

Springboot jwt인증 리펙토링

예를 들어 로그인 후에 마이 페이를 들어간다면 토큰을 던져서 이상이 없으면 db에서 정보를 가지고 와서 시큐리티 세션에 부여해주고 거기서 꺼내 쓰면 된다 근데 현재는 그 방식이 아니라 검증 시 잘못된 방식으로 세션에 부여해주는 탓에 또 db를 들렀다 오게 되었다 그래서 수정하려고 한다 jwtService 아이디/비밀번호가 아닌 principaldetail을 넣어주고 비밀번호는 null로 해주자 어차피 로그인을 한 사용자이다 userService 기존에는 db를 또 다녀왔다면 이번엔 시큐리티 세션에서 꺼내서 비밀번호만 지운 후 던져주자!

Springboot->html+자바스크립트로!

지금 까지 프런트엔드도 스프링 부트로 프로젝트를 진행하고 있었다 하지만 예약 페이지/예약 내역 페이지를 구현하면서 음 그냥 자바스크립트 window.onload로 하면 되겠다는 생각이 들었다 물론 보안 면에서는 더 떨어지는 선택이지만 리액트는 아니지만 프런트엔드+백엔드 서버가 좀 더 명확히 분리된 느낌으로 토이 프로젝트를 만들고 싶었다 1. 톰캣 설치 https://myhappyman.tistory.com/134 VS Code - 로컬에서 JSP 작업 환경 구성하기 ~.html 파일에 HTML, CSS, JS등으로 웹 페이지를 열심히 만들고 결과물을 전달해주는 과정에서 스프링프로젝트로 들어가는건지 모르겠지만 html파일을 전부 JSP로 변경해서 넘겨달라는 요청사항이 있 myhappyman.tistory...

Springboot 예약시스템!(3) 일반결제+예약+예외처리+아임포트

결제가 끝나면 오게될 예약 서비스를 봐보자 restcontroller dto 기본적인 유효성 검사를 해준다 reservationService confrimContents 롤백을 위해 사용 @Transactional(rollbackFor = Exception.class) 일반결제시->결제완료 테이블 저장 가상계좌시->가상계좌 테이블 저장 최종 예약테이블 저장 인데 이과정중 예외가 하나라도 발생하면 모든 과정이 취소되고 환불되야하기 때문이다 추가 유효성 검사 confrimInsert(reservationInsertDto); 결제검증 payMentInterFace payMentInterFace=confrimPayment(reservationInsertDto); 예약시도 insertReservation(rese..