본문 바로가기

기록

약정이 있는 구독상품 개발

이번에 새롭게 런칭하는 신규 서비스에 참여하게 되었고, 프로젝트도 마무리 되어 기능 구현한것에 대해서 기록을 남겨보려고 한다.

 

신규 서비스에 대해서 간단히 설명하자면 구독 서비스 상품이다. 다른 구독 서비스 상품과 조금 다른 점은 약정기간을 걸 수 있는 상품이라는 것이다. (어떻게 보면 휴대폰 요금제와 비슷하다고 보면 될 것 같다.)

 

신규 서비스의 요구사항 부터 간단하게 정리해보자

1. 약정 상품이 존재하고, 약정기간 동안에는 가격이 변동되더라도 약정금액을 유지해야한다.

2. 상품의 가격은 한달에 한번씩 변동 가능성이 있으며, 약정이 끝난 상품 or 무약정 상품의 경우에는 변동된 가격을 바라보고 결제를 진행해야한다.

 

어떤식으로 변동되는 가격을 구현하였는가?

일단 판매 상품은 할인 가격, 기본 가격 2가지의 가격을 갖게 끔 구현을 하였고, 한달에 한번씩 변동 가능성이 있을 수 있으므로, 각각의 가격들은 가격과 시작시간, 종료 시간 을 갖도록 하였다.

 

( 각각의 가격에 대해서 간단하게 설명하자면 할인 가격의 경우 실제로 결제되는 금액이며, 기본가격은 약정이 끝나면 결제 되는 할인 가격이라고 보면된다 )

 

그래서 만약 비지니스팀이 상품 가격을 바꾸고 싶다면 할인 가격과 유지기간을 insert 하고, 기본가격도 할인가격과 같은 가격으로 insert 하도록 하였다.

할인가격과 기본가격을 insert 하는 이유는 가격을 update치게 되면 기존 약정을 구매한 유저들의 경우 약정기간을 유지 시킬 수 없으므로 가격을 계속 쌓는 방식으로 구현을 하였다.

 

위의 방식대로 변동되는 가격에 대해서 구현을 하였고, 어떻게 재결제시에 약정상품의 가격을 유지시켰는지 적어보려고한다.

 

어떤식으로 재결제가 되도록 하였는가?

일단 재결제 시 나올 수 있는 유형은 1) 약정중인 유저 2) 무약정중인 유저 3) 약정이 종료된 유저 총 3가지가 존재한다고 보았다. 

 

약정중인 유저의 경우 약정테이블을 확인하여 해당 유저가 약정이 끝났는지 체크를 하고, 끝나지 않으면 해당 상품의 할인가격으로 결제하게끔 하였다. 만약 마지막 약정날짜까지 종료가 되면 약정 종료를 표시하도록 하였다.

 

무약정중인 유저와 약정이 종료된유저는 기본가격으로 결제하게 끔 개발을 하였다.

유형은 다르지만 결국 무약정 유저와 약정 유저 둘다 할인가격을 유지할 필요는 없고, 변동되는 가격에 따라 결제 하면 되기 때문에 할인가격이 아니라 기본가격을 바라보도록 하여 결제를 하도록 하였다.