Post

[TIL] 삼성시그니처: 간편결제로 대리 결제 서비스 구현 전 결제로직에 대해

ISSUE 1. 간편결제 로직은 어떻게 수행될까?

문제상황

  • 삼성페이를 활용한 대리결제시스템을 개발하려고한다. 그러기 위해서는 간편결제를 사용하여 결제가 어떻게 진행되는지 알아야했다.

해결방법

  • 삼성페이를 활용하여 서비스를 개발할 것이기 때문에 간편페이를 삼성페이로 치환하여 결제로직을 설명하겠습니다.

    간편결제에 카드 정보 등록하기

    스크린샷 2024-04-29 오후 9 38 53

  1. 사용자가 삼성페이에 자신 명의의 카드 정보를 등록
  2. 삼성페이는 카드사(발행사)에 사용자가 입력한 카드정보를 전달
    • 이때 삼성페이에는 카드정보가 저장X, 카드사로 거쳐가는 통로역할
  3. 카드사(발행사)는 카드의 정보가 올바르다면 고정화된 인증토큰을 발행
  4. 인증 토큰은 삼성페이를 거쳐 사용자 디바이스의 Trust Zone(하드웨어)에 저장

위의 과정처럼 카드의 토큰이 저장되면 결제를 정상적으로 수행할 수 있습니다.

오프라인에서 간편결제를 사용한 결제로직

스크린샷 2024-04-29 오후 10 14 32

  1. 사용자가 삼성페이에 지문/얼굴 인식과 같은 생체인증으로 자신임을 인증
  2. 삼성페이에서는 사용자 디바이스의 Trust Zone에 저장된 인증 토큰을 VAN에 전달
    • VAN사란?
      1. 카드사를 대신하여 가맹점을 모집하고 단말기를 제공해 단말기를 통한 승인 중계 업무진행
      2. 매출 데이터 정리하고 금융기관을 대신하여 카드 전표 매입 업무를 담당
  3. VAN사는 결제정보와 인증 토큰을 카드사에게 전달
  4. 정상적인 인증토큰이라면 카드사는 결제를 승인

❗이러한 과정을 토대로 대리 결제를 수행한다면 어떤식으로 우리는 구현을 해야할까?

  • 카드마다 고정화된 토큰을 사용한다는 점을 사용
  • 우리 서비스인 삼성 시그니처의 사용자는 대리결제 요청자와 승인자로 구분
  • 그렇다면 삼성시그니처의 앱카드를 만들고 이 앱카드에 승인자의 토큰을 끼워넣는 식으로 구현하면 어떨까?
  • 삼성페이의 경우, 사용자가 생체인식 후 토큰 활성화 진행(50초 + a)
    • 그렇다면 우리 서비스에서는 승인자가 대리 결제 승인을 하면 토큰이 활성화 되도록 진행하자!
      • 25초(승인자가 생체인식하는 시간) + 50초(요청자가 생체인식 후 단말기에 삼성페이를 시도하는 시간) + a초(카드사까지 도달하는 시간) 으로 활성화 시간 추정

삼성 시그니처 오프라인 결제 로직

스크린샷 2024-04-29 오후 10 45 31

  1. 대리 결제 요청자가 삼성 시그니처에서 대리 결제해 줄 사람을 선택한 후 결제할 금액에 대한 요청을 보냄
  2. 삼성시그니처는 요청자가 선택한 사람에게 대리 결제 승인을 알람
  3. 대리 결제 승인자는 요청서 확인 후 대리 결제해줄 카드선택 후 생체인증 진행 → 이때 승인자의 토큰은 활성화!!!!
  4. 삼성시그니처는 승인자의 카드 토큰과 결제 금액과 같은 결제 권한을 암호화하여 시그니처 토큰을 생성
    • 이때 사용자를 특정하기 위해 대리 결제 요청자의 공개키로 암호화진행
    • 보낸 사람을 특정하기 위해 대리 결제 승인자의 개인키로 암호화 진행
    • 결제 권한을 포함하여 대칭키 암호화 진행
  5. 대리 결제 요청자가 삼성 시그니처에서 카드 선택하여 삼성페이의 시그니처 앱카드에 시그니처 토큰 넣음
  6. 삼성페이에서 대리결제 요청자가 생체 인증하면 시그니처 토큰 활성화
  7. 요청자가 오프라인 단말기에 시그니처 앱카드로 결제 시도
  8. VAN에서 요청자가 결제를 요청한 결제정보(금액, 상호명)등을 다시 삼성페이에 전달
  9. 삼성페이는 삼성시그니처로 시그니처 토큰 + 결제정보 전달
  10. 삼성시그니처는 결제 요청 정보를 토대로 시그니처 토큰 복호화진행
    • 현재 결제를 요청한 금액이 요청자가 신청한 금액보다 작은지? 등 결제 권한 검사
    • 비대칭키를 통해 요청자, 승인자 인증
  11. 정상적으로 인증이 완료됐을 경우, 삼성 시그니처는 삼성페이로 승인자의 카드 토큰을 전달
  12. 결제 승인

위와 같은 과정으로 시그니처의 오프라인 결제가 진행된다. 그래서 우리가 실질적으로 구현할 서버는 삼성 시그니처, 삼성 페이(카드 등록 api만), VAN(결제 요청 후 결제 권한을 다시 삼성페이로 보내기위해)이다.

이번 서비스의 비지니스 로직이 굉장히 어렵고 암호화 과정이 많아 공부할게 많다…! 화이팅이다!!!

참고자료

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.