스프링부트 112

Springboot 결제 시스템 리팩토링!(1) 카드/가상계좌 세틀뱅크

바보였다 테스트 신청하자마자 하면 되는 거였는데 3일 전에 알고 부랴부랴 시스템을 개편했다 진짜 힘들었다 변동사항 결제 요청 이전 아임 포트-> 세틀 뱅크 현재 세틀 뱅크 디렉트 연결 예약시스템 이전 총액 받기->가상계좌라면 날짜 받기 현재 필요 정보 한 번에 다 받기 예약+결제 이전 예약 시도-> 결제 후 검증-> db저장 현재 예약 시도-> 결제/상품 임시 테이블 저장-> 결제 검증-> 메인테이블 저장 임시 테이블은 재고에 안 잡히고 결제 영향도 없는 테이블이다 그냥 스프링 스케줄러+배치로 하루에 한 번씩만 비워주면 될 거 같다 테이블 구조도 변경하였다 예약은 예약정보만/결제는 결제정보만 들고 있을 수 있게 했다 결제 테이블도 card/vbank/kakaopay 이렇게 종류별로 나눴다 아 개편하는데 ..

Springboot 리팩토링(1) 네이버로그인 change 팝업창+리다이렉트 with response.sendRedirect

궁금했던 기술이 있었다 예를 들어 네이버 로그인이면 팝업창을 띄우고 그 팝업창에서 로그인이 이뤄지고 팝업창이 꺼지고 부모창이 홈페이지로 가는 기능이었다 도저히 어떻게 하는 거지? 하던 순간 어..? 생각이 났고 실행했다 문제는 이거였다 콜백 url에서 회원가입/로그인 처리 후 바로 index.html로 보내는 게 아니라 페이지를 거치게 하면 됐던 것이다 프런트 서버 loginPage.html hidden으로 태그를 하나 만들어준다 서버와 통신을 해서 얻은 url let naverLoginUrl=xhr.response; hidden태그에 value 밀어 넣기 document.getElementById('oauthLoginUrl').value=naverLoginUrl; 자식창열기 child=window.op..

javaFx/리팩토링 2021.09.12

Springboot 결제시스템!(8) 환불하기 카카오페이/아임포트

환불을 해보자 restcontroller 예약상품이든 /일반상품이든 여기로 요청한다 paymentService 어떤 종류 안지 받는다 String kind=aboutPayEnums.valueOf(tryCanclePayDto.getKind()).getString(); 다중 선택이 가능하므로 list에 넣어준다 List idArray=tryCanclePayDto.getId(); 예약상품이라면 예약 서비스로 간다 if(kind.equals(aboutPayEnums.reservation.getString())) (일반상 품 아직 미구현) tryCanclePayDto reservationService 예약 내용+가격을 조인해서 가져온다 reservationAndPriceInters.add(reservationDa..

Springboot 결제시스템 (7) 카카오페이 연동

가상계좌를 다룰 방법을 찾았다 세틀 뱅크 테스트는 매번 취소는 불가능하지만 입금 전 수정/카드결제가 가능했다 그래서 카카오페이를 직접 연동하기로 하고 세틀 뱅크를 pg사로 붙였다 네이버 페이는 사업자 등록증이 필요하다 테스트 계정 범위 1. 세틀 뱅크로 입금 전 수정 가능 2. 세틀 뱅크 일반 결제 가능 3. 카카오페이 불가능 -따로 직접 붙임 4. 입금 후 부분 취소 불가능 -db만 수정해주고 기분만 내야겠다 5. 일반 결제는 동일하게 부분 취소/환불 가능 카카오페이를 붙이면서 현재 예약시스템도 뜯어고쳤다 이전에는 예약/일반상품을 따로 구별하려고 했다 하지만 이제는 물건을 구매했을 때 예약상품이든 일반상품이든 요청을 하면 결제 검증을 하고 예약/상품에 따라 crud가 일어난다 우선 카카오페이를 붙여보자..

Springboot 게시판만들기!(2) 글쓰기 썸네일 출력+aws s3

이미지를 저장하는 데는 두 가지 방법이 있다 로컬/클라우드 대세는 클라우드이기도 하고 aws를 쓰고싶기도 해서 도전했다! 이글에 셋팅을 적어놓았다 https://cordingmonster.tistory.com/152 Springboot aws s3연동하기! aws s3권한 설정(정책생성기) 게시판 만들기 전 사진 저장을 위해 aws s3을 사용해보자 버킷을 만들고 폴더를 만들었다 권한 설정을 해주자 권한-> 버킷 정책-> 정책 생성기를 클릭하고 붙여 넣기 해주자 (기존 정책이 있어서 cordingmonster.tistory.com 아 로컬로 혹시이미지를 저장하고 싶다면 외부에서 접근 경로를 지정해줘야 한다 안 그러면 사진이 저장되어도 404가 나타난다 (한참 고생했었다) 어쨌든 다시 aws로 오면 이영상..

aws/S3 2021.09.07

Springboot aws s3연동하기! aws s3권한 설정(정책생성기)

게시판 만들기 전 사진 저장을 위해 aws s3을 사용해보자 버킷을 만들고 폴더를 만들었다 권한 설정을 해주자 권한-> 버킷 정책-> 정책 생성기를 클릭하고 붙여 넣기 해주자 (기존 정책이 있어서 붙여 넣기는 하지 않았다) 프로젝트 메이븐 레포지토리에서 얻었다 implementation group: 'javax.xml.bind', name: 'jaxb-api', version: '2.4.0-b180830.0359' 없으면 이상한 오류가 나서 찾아보다 넣었다 엥근데 지금은 저거를 주석 처리해도 잘 작동한다 무슨 javax java 버전 어쩌고 오류였는데 일단 같은 오류가 난다 싶으면 넣어보자 일주일 전에 연동해 서 그런가 가물가물하다... 끝 이제 게시판을 만들러 가보자! 사진에 빠졋는데 정책 생성시 ge..

aws/S3 2021.09.07

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")) 결제..