결제시스템 11

Springboot 세틀뱅크 카드/가상계좌결제(1) 결제창 호출

테스트 요청을 하고 https://develop.sbsvc.online/requestTest.do 세틀뱅크 개발 지원 서비스별 테스트 신청 develop.sbsvc.online 바로 테스트할 수 있다 1. 백엔드에서는 암호화만 잘해서 주면 된다 https://develop.sbsvc.online/24/bbsList.do 세틀뱅크 개발 지원 검색 조건 전체 제목 내용 검색어 검색 develop.sbsvc.online 여기서 jsp기준으로 설명하면 파일을 받아서 EncryptUtil.java 만가 져 온다 그리고 암호화 항목에 적용한다 여기서 거래금액(평문)은 200원 x=>200(0)이다 금액만 넣으면 된다 나머지 필수 값들을 잘 확인 후 요구조건대로 잘 가공해 넣어준다 가상계좌라면 입금 만료일만 추가해서..

Springboot/Api 2022.03.16

Springboot 결제시스템(4) 결제검증

pg사에서 받은 정보를 검증하는 로직을 만들자 간단하게 금액만 비교하고 넘겨주자 (원래 실무에서는 훨씬 많은 검증을 하겠지만) 카카오페이연동 https://cordingmonster.tistory.com/221?category=1085850 세틀뱅크연동 https://cordingmonster.tistory.com/226 Springboot 세틀뱅크 카드/가상계좌결제(1) 결제창 호출 테스트 요청을 하고 https://develop.sbsvc.online/requestTest.do 세틀뱅크 개발 지원 서비스별 테스트 신청 develop.sbsvc.online 바로 테스트할 수 있다 1. 백엔드에서는 암호화만 잘해서 주면 된다 https://de.. cordingmonster.tistory.com 흐름 r..

Jang_bo_go 2022.03.16

Springboot 카카오페이 연동(3) 환불하기

https://developers.kakao.com/docs/latest/ko/kakaopay/cancellation Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 환불은 더 쉽다 진짜 세상 결제 api가 모두 카카오 페이 같다면 얼마나 좋을까 필수 값들을(20220315 기준) 던 저주기만 하면 된다 너무 쉬워서 설명할 게 없다.. 카카오 정말 대단하다 결제시스템을 매번 구축하면서 생각하는건 pg사 호출보다 실용적인 로직을 태워서 호출하는게 더 어렵다는 생각이든다

Springboot/Api 2022.03.15

Springboot 결제시스템(3) redis에 저장하기

이제 만들어 진정보를 redis 임시저장후 pg사로 요청하자 흐름 redis저장->pg사 조건으로 변수들만듬->프론트 엔드 전달->프론트에서 pg사 결제창 호출 redis저장 redis 커스텀 객체 map으로 저장하기 모른다면 https://cordingmonster.tistory.com/216?category=1084481 Springboot redis 커스텀 객체넣기 아주 쉽게 넣을 수 있다 redis 연동글 https://velog.io/@devsh/Redis-8-Spring-Boot-Redis-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0 [Redis - 8] Spring Boot Redis 사용해보기 Mac OS CatalinaSpring Boo.. cordi..

Jang_bo_go 2022.03.11

Springboot 결제시스템(2) 쿠폰,상품,주소,거리,매장검증

이제 제일 어려운 구간이다 흐름 쿠폰 1차 유효성 검사-> 매장별로 제품을 꺼낸다->상품을 검증한다->쿠폰 2차 검증한다 제품별 결제정보 생성->매장 조건에 부합하는지 검증한다 1. 쿠폰 1차 검사 쿠폰 유효성 검사 후 받는다 couponVo couponVo=couponService.CheckAndGet(couponName); 2. 매장별로 제품을 꺼낸다 매장 꺼내기 storeVo storeVo=storeService.getVo(storeId); 검증 전 일단 배달 가능 지역인지 확인 if(checkDeliverRadius(storeVo.getSaddress(),storeVo.getDeliverRadius(),tryOrderDto.getAddress())){ 이 함수 안에서 카카오 주소 api를 호출해 ..

Jang_bo_go 2022.03.11

Springboot 결제시스템 리팩토링!(3) 가상계좌 입금전 부분취소 with 세틀뱅크

마지막 페이즈이다 제일 어려웠다 가상계좌는 입금 전/후로 나뉜다 거기서도 부분취소가 제일 문제가 된다 입금 후라면 그냥 환불이지만 입금 전이라면... 복잡해진다 일단 세틀 뱅크 사이트를 보는데 채번 수정? 은 찾지 못했다 대신 가상계좌 채변을 서버에서 다시 받을 수 있었다 그래서 이렇게 만들었다 시나리오 부분 취소-> 새로 채번 받기->db수정-> 기존 채번 취소 paymentService는 똑같으므로 참고 바랍니다 https://cordingmonster.tistory.com/162 Spring boot 결제취소/예약취소 리팩토링!(1) with 세틀뱅크/카카오페이 일반 결제 취소 = 카드/카카오페이/가상계좌 입금 후 = 돈이 들어온 후 환불만 해주면 됨 시나리오 요청-> 취소가능 여부 검증-> 예약/..

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 결제시스템!(2) 아임포트 번외편 포트포워딩+웹훅!

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

Springboot 결제+예약(2) 부분취소/환불 하기 with 아임포트

예약 취소는 db에 있는 imp_uid를 사용하면 된다 예약을 했다면 imp_uid도 같이 들어가 있다 이제 삭제 로직을 만들건대 개별 취소가 가능해야 하기 때문에 가격이 들어올 수 있게 코드를 바꾸자 restcontroller reservationdto.setPrice(seatInforVo.getPrice()); dto에 넣어주고 vo @Column(name = "price",nullable = false) private int price; this.price=reservationdto.getPrice(); 추가해주면 테이블이 바뀌고 save 할 때 자동으로 들어간다 service는 바꿀 필요가 없다 이제 환불을 구현해보자 service 검증을 해준다 존재하는 예약인지 올바른 예약인지 그리고 맞다면 객..

Springboot 결제+예약!(1) 당일 예약 시스템 with 아임포트 ,j쿼리,HttpSession

이전 예약 시스템은 결제 시스템이 없는 시스템이었다 예약하는데 꼭 결제 시스템을 넣어 보고 싶어서 이틀 동안 고생한 결과 아임 포트를 이용해서 성공했다 다만 순수 자바스크립트가 아닌 j쿼리의 힘을 어느 정도 빌려서 만들었다 시작해보자! 예약결제 자체는 아임 포트에서 자체적으로 제공해줘서 별로 어렵지 않다 하지만 검증/취소가 서버 쪽에서 이뤄져야 해서 아임 포트 api를 열심히 뒤져서 만들었다 html 그다음 좌석에 맞는 예약 가능 시간을 가져온다 j쿼리를 사용해서 서버에서 예약 가능 시간을 가져와서 개수만큼 체크 박스를 만들어준다 $('#requesthourdiv').append(""+alreadytime[i]+"시~"+ii+"시"); 정말 편리하다 j 쿼리 서버소스는 이전에 여기서 구현했다 https:..