.png)
결제에도 종류가 있다.
-일반결제
-정기결제
일반 결제와 정기 결제에서도 사용할 수 있는 방식이 여러 개가 있다.
카드결제, 계좌이체, 무통장입금 등등
결제방식에 따라 기능을 하나하나 따로 만들어 줘야한다.
무통장입금 - 가상계좌
환불할 때 가상계좌이기 때문에 환불계좌 입력하게 만들어 줘야함
결제기능을 한 번에 넣는 것이 아니라 하나씩 따로 규격에 맞춰 만들어 줘야 하기 때문에 결제 기능을 구현하는 것이 굉장히 복잡하고 오래 걸린다.
PG(Payment Gaeteway)사를 통해 각 카드사에서 결제를 할 수 있지만
PG사에서 요구하는 포맷에 맞춰서 기능을 만들어야 하는 것이 또한 복잡하고 보안도 신경 써야 하기 때문에 중간에서 이러한 것들을 대신해 주는 결제 솔루션을 통해서 쉽게 결제기능을 사용할 수 있다.
-아임포트 , 부트페이 등등
결제 솔루션을 이용할 건지 PG사를 통해서 직접 하든지 서비스의 규모나 상황에 따라 결정하면 된다.
금액이 커지면 PG사로 가는 편이 이득이고
소액이면 결제 솔루션을 이용하는 편이 이득.
결제 솔루션 중 오늘 아임포트를 통한 결제를 배웠다.
결제를 하고 imp_uid 받아와서
아임포트 유아이디를 해당하는 뮤테이션에 넘겨주면 백엔드를 통해 디비에 저장되고 결제정보를 알 수 있게 된다. 정보 관리나 결제 취소, 부분 취소등 다양한 기능을 제공한다.
그러나 이렇게 결제 솔루션을 이용해도 결제 기능을 구현하는데는 상당한 시간이 소요되는데
아임포트에서 PG사와의 연동하기 위한 가입, 계약서 작성등을 하는데 1주일정도의 시간이 걸리고
각 카드사 별로 테스트 해보고 통과여부를 정하는데 2주일 정도 걸린다고 한다.
카드사 거절 사유
-경매, 도박 관련된 결제 스타트업에선 거절당한다.
-직접입력방식의 결제
-도메인 없는 테스트 서비스
이처럼 고정적으로 소요되는 기간이 꽤 길기 때문에 서비스를 만들 때는 결제 기능을 구현하는 데 걸리는 시간을 잘 계산해서 서비스를 기획해야겠다.
아임포트
모바일(웹)으로 결제 시
새로운 창이 뜨는 것이 아니라 아예 주소가 바뀌면서 다른창으로 넘어가기 때문에 결제가 되고서 redirect라는 기능을 사용해서 결제하기 전 페이지로 다시 연결을 해주어야 한다.
시간 관련 Issue
프론트엔드에서
newDate() 가급적 사용하지 않는 것을 추천하는데 컴퓨터마다 날짜가 다르게 적용될 수 있기 때문에다.
따라서 백엔드서버에서 mutation을 받았을 때 날짜를 일괄적으로 처리해주는 것이 좋다.
해외 서비스 시의 시간 문제
국가별로 시간이 다르기 때문에 세계표준시간인 UTC로 기본적인 시간을 저장해두고 각 국가에서 사용 시 그 국가에 맞는 시간으로 바꿔서 보여주는 방식을 사용하면 된다.
이러한 것을 쉽게 처리할 수 있는 라이브러리가 있다.
'moment'
무려 1600만 다운로드이다. 이런 라이브러리들은 어딜가도 사용할 가능성이 높고 앞으로도 사용할 가능성이 높기 때문에 따로 공부를 해두는 것이 좋다고 한다. 아무리 유용한 라이브러리들이 있어도 있는 것을 모르거나 사용법을 모른다면 소용이 없다!
또한 클릭을 해서 실행하는 게 아니고 특정 시간에 자동으로 실행하게 하는 프로그램도 있다.
'크론탭'이라는 프로그램인데 리눅스에 설치된 프로그램이라고 한다.