GithubHelp home page GithubHelp logo

payment-system's Introduction

브라우저 익스텐션을 이용한 URL 간편 결제시스템 구축

네이버 Hackday에서 진행

주제 선정 배경

  • 카페, 블로그 등에 등록된 상품을 간편하게 결제를 할 수 있으면 좋겠다.
  • url 기반으로 상품을 구별하여 간편하게 결제를 할 수 있으면 좋겠다.
  • 익스텐션을 이용하여 창 이동 없이, 간편하게 결제를 할 수 있으면 좋겠다.

개발 요구사항

  • 상품 및 결제 API 설계 및 서버 구현.
  • 익스텐션을 이용한 결제 페이지 구현.
  • url 기반 상품 매핑 시스템 구현.

개발 선택사항

  • 상품 등록 페이지(admin) 구현.
  • 댓글, 좋아요등의 부가적인 기능 구현.

개발 스택

  • Django+ javascript + mysql

맡은 역할

  • 김재윤(결제,상품 API 설계 및 서버 구현)
  • 조민국(익스텐션 결제 페이지 구현)
  • 최예진(고객 API 설계 및 서버 구현)

링크

Wiki

회고

기본기능

스토리보드

payment-system's People

Contributors

g-onl avatar yegenieee avatar j-minkuk avatar wkdgusdn3 avatar

Watchers

James Cloos avatar

payment-system's Issues

기본기능

기본 기능 정의 및 DB 테이블 정의

  1. 회의 주제

    • 기본 기능 정의
    • DB 테이블 정의
  2. 회의 일시

    • 2018/11/24(토) 18:00 ~ 22:10
  3. 참여자

4. 내용

브라우저 익스텐션을 이용한 URL 간편 결제시스템 구축

  • 기능 정의
    1. 고객 (구매자, 판매자) 정보 관리 (CRUD)
    2. 토큰 (jwt) or 인증번호 발급 ( 해당 구매자가 인증된 사용자인지 검증 및 해당 사용자가 발생시킨 결제인지 확인하는 용도)
    3. 결제 정보 관리 (CRUD)
      • 결제 정보 Create
      • 결제 준비 / 결제 연동 (PG사와 연동) / 결제 요청 (PG사에 요청) / 결제 승인 / 결제 완료 에 따른 상태 Update
        • 결제 연동과 결제 요청의 경우 PG사와 연동 및 요청 되었다고 가정함
        • 일단 해당 기능은 PG사 서버 연동 요청 없이 결제 관련 state 만 update 할 예정
        • 추가적으로, 시간이 된다면 200 OK만 보내는 PG사 API 서버 구현 생각중
      • 결제 시 제품 구매 가능 여부 검사 (수량 검사)

DB 테이블

screen shot 2018-11-25 at 10 29 09 pm

paymentsystem

payment_system_db_20181125_23_35.txt

  • 역할 분담
    • 사용자 정보 관리 CRUD : @yeGenieee (최예진)
    • 토큰 or 인증 번호 발급 : @yeGenieee (최예진)
    • 결제 정보 Create : @G-ONL (김재윤)
    • 결제 State Update : @G-ONL (김재윤)
    • 결제 관련 로직 (수량 검사 등) : @G-ONL (김재윤)
    • 크롬 익스텐션 : @MinGOODdev (조민국)
    • 판매자 상품 등록 기능 : @MinGOODdev (조민국) --> 부가적인 사항 (Milestone 2)

5. TDL

  • 기능 정의 컨펌 받은 후 구체화
  • 서버 몇 대 사용할 것인지 결정
  • 코딩 컨벤션
  • 서버 환경 세팅
  • 통신 규칙 정리
  • URL - 상품 매핑 시스템 로직 생각해보기

스토리보드

간단한 스토리보드? 워크플로우?

스토리보드.pptx

상품 페이지 접속

storyline1

1. 고객 정보 입력

storyline2

2. 주소 입력

storyline3

3. 사용자 인증

storyline4

4. 결제 준비

storyline5

5. 결제 연동

storyline6

6. 결제 요청

storyline7

7. 결제 승인

storyline8

8. 결제 완료

screen shot 2018-11-25 at 8 15 17 pm

이를 바탕으로, 기능을 나눔

  1. 사용자 정보 API
  2. 토큰 or 인증번호 발급 API
  3. 결제 API

프로젝트 회고

역할 및 담당

결제 API, 말 많은 아이 담당

개발 진행시 중점을 둔 부분 및 상세 내용

'완성' - 지금까지 매번 프로젝트를 진행해오면서 시간 내에 완성을 시키는 것이 우선 제일 중요하다고 생각을 해왔었습니다. 또한 실력이 부족한 탓에 민폐를 끼치기 싫어서 맡은 부분은 꼭 완성하자는 생각을 했습니다. 그래서 짧은 시간내에 완성시키는 것을 중점으로 하였고, 추가적으로는 복잡해지는 로직에서 모듈화를 하여 최대한 간결하고 보기좋게 로직을 짜보자는 생각을 했습니다.

자랑하고 싶은 코드

views.py (extension_payment_system/DjangoServer/payment/views.py)
결제에 관한 로직을 모두 구현해 놓았다. 작은 로직이지만 트랜잭션 부분까지 생각을 해보게 되었다.

본인이 개발한 내용 중에 아쉬웠던 부분

사실 혼자서 개발을 하다보니 API 통신을 직접 구현을 해본적이 없었습니다. 그러다보니 API설계, 구현, Serializer를 잘 모르고 있고, Restframework 사용도 해본적이 없어 다루는데 있어서 아쉬웠숩니다.
개발 내용중에 아쉬운 부분이 자랑하고 싶은 코드 부분에 있는데 위에도 언급했듯이 Serializer를 다루는 것이 부족하여 Request에서 들어오는 부분을 그대로 Payment에 저장을 한 다음 필요한 부분을 수정하는 식으로 진행을 하게 되었다. 불필요하게 DB를 두 번이나 건드리는 것이 코드 구현 부분에 있어서는 가장 아쉽습니다.
다른 부분으로는 내가 API 명세를 작성한대로 클라이언트쪽에서 넘겨줄수 있다고 확신하고 로직을 구현한 것이 후에 그렇게 진행 될 수 없었을 때 불필요한 코드가 생기고 더러워졌던 것이 아쉽습니다. 이 부분은 클라이언트쪽에 대해 조금만 생각을 해보았다면 그것을 Request에 명시를 할 수 없었을 텐데 하는 부분이 있습니다. 또한 API 명세를 작성하고 수정하면서 익스텐션쪽 구현하시는 민국님과의 이야기가 많이 되지 않았던 것 같아 아쉽습니다.
또한 개인적으로 확인 한 통신에서는 성공을 해서 본인이 원하는 부분까지는 모두 구현을 했지만 최종적으로 통신을 익스텐션과 확인을 못해서 완성시키지 못한 것이 너무 아쉽다. 처음부터 부분,부분 익스텐션쪽과 통신을 해보고 진행을 했으면 어땠을까 생각을 해봅니다.

프로젝트를 진행하면서 배운점 및 느낀점

개발에 입문한지 얼마 되지 않았지만 짧은 시간 달려오면서 내가 이렇게 개발을 하는 것이 맞을까? 개발의 방향성을 잡지 못하고 헤메고 있었습니다. 주변의 물어볼 친구도, 선배도 없었습니다. 그래서 그냥 코드를 짜고 돌아가고 하면 넘어가는 방식으로 개발을 매번 진행했습니다. 특히 취업 준비를 하다보니, 개발에 대한 방향성과 더불어 진로에 대한 방향성도 모르겠고, 연이은 취업 실패로 자신감도 하락하면서 슬럼프가 찾아왔습니다. 그 와중에 네이버 핵데이에 운 좋게 뽑혀서 참가를 하게 되었고, 개발,진로 방향성을 잡게 된 것이 가장 첫 번째로 좋았습니다. 지쳐가는 취준생의 열정에 기름을 붓게 된 계기가 되었고, 다시 한 번 뛸 수 있게 만들어준 계기가 되어서 너무 고맙습니다.
두 번째로는 이렇게 협업을 해본게 처음이라 Git을 사용하는 방법이라던지, 형상관리법등을 배운게 너무 좋았습니다. 이런 방법을 실제 현장에서도 사용한다는게 무엇보다 뜻 깊었습니다.
세 번째로는 팀 바이 팀이겠지만 좋은 개발 문화가 무엇인지에 대해 생각해볼 수 있었습니다. 처음에 팀 미팅 당시에 자연스러운 존칭과 '님' 문화가 좋았고, pull reqeust를 통해 코드 리뷰를 했던 것, 모르는 부분을 계속해서 질문을 하는데도 친절하게 답해주시는 것, 중간 중간 생각해볼만한 문제들을 집어주시면서 생각을 물어보시는 점 등 .. 좋은 개발 문화가 있는 곳에 가서 근무를 하고 싶다는 생각을 많이 하게 되었습니다. 그리고 더 불어서 내가 여기서 근무를 하게 되면 성장을 많이 하겠구나라는 생각도 했습니다.
네 번째로는 결제 시스템에 대한 생각해볼 시간을 가졌다는 것도 좋았습니다. 한 주제를 가지고 개발을 할 때 도메인지식이 필요한데 결제라는 도메인 지식에 대해 공부를 해볼 수 있었고, 팀원들과 다같이 모여서도 결제가 어떻게 일어나는지 같이 확인을 해보면서 평소에는 그냥 지나쳤서 몰랐지만 세부적인 결제 단계에 대해서도 놀랐습니다. 그래서 우리가 생각하는 결제 로직을 생각해서 스토리보드를 작성하고 그대로 구현해 보았던게 좋았습니다.
다섯 번째로는 API에 대한 공부를 많이 하게되었고 배워갑니다. API 명세부터 시작하여 RESTful 하게 url을 작성하고 직접 통신하고 로직까지 구현하면서 공부가 진짜 많이 되었습니다. 설계하면서 PUT과 POST에 대한 부분을 직접 사용하면서 확실한 이해를 했습니다. 이 부분을 멘토님이 다시 한 번 언급하셔서 설명해주셨던 부분도 좋았습니다.
마지막으로는 완성 못한 것이 너무 아쉽습니다. 각자의 기능은 모두 구현을 하고 테스트도 별도로 진행을 하고 이상이 없음을 확인해 금방 완성을 할 수 있었을 것 같았는데 합치는 과정에서의 생각보다 긴 시간소요와 이슈발생으로 끝내 완성을 못했습니다. 이후에 학기가 끝난 후에 완성을 해볼 계획입니다. 익스텐션(Client)와 유저,상품,결제(Server) 통신을 하고 기능들을 잘 합쳐서 구현을 할 생각입니다. 추가적으로는 url parttern까지 생각도 못해본 것도 너무 아쉽습니다. 멘토님이 언급해주셨던 방법인 패턴을 우선 페이지별로 나눠서 저장을 시켜놓고 후에는 모델을 학습시켜서 적용시키는 방법이 지금으로써는 제일 좋고 실현 가능성이 있는 방법인 것 같습니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.