• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [셸위:게임 친구 매칭 사이트] 토스 페이먼츠 API - 서브몰 생성 기능
        2024년 09월 25일
        • Song hyun
        • 작성자
        • 2024.09.25.오후07:17
        728x90
        반응형

        [셸위:게임 친구 매칭 사이트] 토스 페이먼츠 API - 서브몰 생성 기능

         

         

        이번에는 서브몰 생성 기능에 대해 이야기해보려고 한다. 지금은 Seller라고 이름이 바뀌었는데... 구현할 때까지만 해도 서브몰이었다. 내가 구현한 기능은 유저가 서브몰 생성 신청을 하면, 관리자 측에서 그 요청을 승인해서 Toss Payments API로 승인 요청을 던지는 기능이었다.

         

         

        서브몰(=셀러)란 플랫폼에 입점한 하위 상점, 판매자와 같은 개념이다. 대금 지급 요청을 할 때 필요한데, 돈을 받을 사람의 정보를 담은 객체라고 생각하면 편할 것 같다. 우리가 은행어플로 돈을 보낼 때, 받는 사람의 계좌가 필요한 것처럼 말이다.

         

        절차는 아래와 같다.

         

        유저가 서브몰을 신청할 때,

        (1) 현재 충분한 금액이 있는지

        (2) 통장 계좌가 있는지 (계좌실명인증)

        등을 (1) js, (2) DB상의 데이터를 통해 검증하게 되기 때문에, 서브몰 생성 신청에서는 큰 검증 걸차는 없다.

         

        1. DB에서 유저의 계좌 정보, 유저의 이름등 개인정보를 조회하고 취합해,
        2. 랜덤한 submallId를 생성해 객체를 만들어 DB에 저장한 다음,
        3. TossAPI에 전송하면 끝이다!
        	/**
        	 * 유저 정보를 통해 계좌 정보 조회
        	 * @param userId
        	 * @return
        	 */
        	public BankDTO getBankInfoById(int userId) {
        		return registerSubmallRepositroy.getBankInfo(userId);
        	}
        	
        	/**
        	 * 새로운 서브몰 등록
        	 * @return 
        	 * @throws InterruptedException 
        	 * @throws IOException 
        	 */
        	public boolean makeNewSubmall(RegisterSubmall submall, User user, BankDTO bank) throws IOException, InterruptedException {
        		// 서브몰 ID 생성
        		UUID uuid = UUID.randomUUID(); // 랜덤값 생성
        		String orderId = (String)(user.getUserId()+"_"+uuid); // 서브몰 ID 생성
        		String submallId = orderId.substring(0,19); // 서브몰 ID 20자리 제한 - 20번째에서 자르기
        		
        		BankDTO bankInfo = bankService.getAccountByUserIdAndBankId(user.getUserId()); // 유저 명의의 bank 객체 찾기
        		
        		// 서브몰 객체 생성
        		Submall newSubmall = Submall.builder().submallId(submallId)
        											.accountId(bank.getBankId())
        											.email(user.getEmail())
        											.phoneNumber(user.getPhoneNumber())
        											.build();
        		// JSON 문자열을 직접 생성
                String requestBody = String.format(
                		"{\"subMallId\":\"%s\",\"account\":{\"bank\":\"%s\",\"accountNumber\":\"%s\",\"holderName\":\"%s\"}," +
        		        "\"type\":\"CORPORATE\",\"email\":\"%s\",\"phoneNumber\":\"%s\",\"companyName\":\"%s\"," +
        		        "\"representativeName\":\"%s\",\"businessNumber\":\"%s\"}",
        		        newSubmall.getSubmallId(), // 서브몰 ID
        	            bankInfo.getBankId(), // 은행 고유 코드
                        bankInfo.getAccountNumber(), // 계좌번호
                        user.getUsername(), // 계좌 주
        		        newSubmall.getEmail(), // 이메일
        		        newSubmall.getPhoneNumber(), // 전화번호
        		        "셸위-게임 친구 매칭 사이트", // 회사명
        		        user.getUsername(), // 대표명
        	            "1200220000" // 사업자번호
        		    );
        		
        		
                // Http-POST 메세지 만들기
        		HttpRequest request = HttpRequest.newBuilder()
        			    .uri(URI.create("https://api.tosspayments.com/v1/payouts/sub-malls"))
        			    .header("Authorization", "Base64 인증키")
        			    .header("Content-Type", "application/json")
        			    .method("POST", HttpRequest.BodyPublishers.ofString(requestBody))
        			    .build();
        		
        		// TOSS 서버에서 응답 받아오기 - 서브몰 등록
        		HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
        		
        		// 응답 메세지 String 으로 변환
        		String result = response.toString();
        		
        		
        		// 결과가 정상적으로 반환되었다면
        		if(result != null || !result.contains("null")) {
        			// 서브몰 객체 DB에 생성
        			submallRepository.addNewSubmall(newSubmall.submallId,user.getUserId(),newSubmall.accountId,newSubmall.email,newSubmall.phoneNumber);
        			// 서브몰 신청내역 상태 변경
        			submallRepository.updateRegisterSubmallStatus(submall.id);
        			
        			return true;
        		} else {
        			return false;
        		}
        	}
        728x90
        반응형

        '💡My project > 셸위 : 게임 친구 매칭 사이트' 카테고리의 다른 글

        [셸위:게임 친구 매칭 사이트] 토스 페이먼츠 API - 서브몰 지급 정산 기능  (0) 2024.09.25
        [셸위:게임 친구 매칭 사이트] 토스 페이먼츠 API - 잔액 조회 기능  (0) 2024.09.25
        [셸위:게임 친구 매칭 사이트] 토스 페이먼츠 API - 결제 취소 기능  (0) 2024.09.25
        [셸위:게임 친구 매칭 사이트] 카카오 페이 API - 결제 취소 기능  (5) 2024.09.25
        [셸위:게임 친구 매칭 사이트] 카카오 페이 API - 결제 기능  (0) 2024.09.25
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
      • [셸위:게임 친구 매칭 사이트] 토스 페이먼츠 API - 서브몰 생성 기능
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바

      단축키

      내 블로그

      내 블로그 - 관리자 홈 전환
      Q
      Q
      새 글 쓰기
      W
      W

      블로그 게시글

      글 수정 (권한 있는 경우)
      E
      E
      댓글 영역으로 이동
      C
      C

      모든 영역

      이 페이지의 URL 복사
      S
      S
      맨 위로 이동
      T
      T
      티스토리 홈 이동
      H
      H
      단축키 안내
      Shift + /
      ⇧ + /

      * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.