결제가 취소될 때는 모든 '피결제건'이 '원복'되어야 한다

엽토군·2021년 3월 23일
0

개발 메모

목록 보기
3/4

기본개념

현대 자본주의 사회에서 결제가 갖는 위력은 막강하다.
돈 낸 사람은 그 지불액만큼 왕이다.
뒤집어 말하면, 그분이 냈던 돈을 회수하는 순간, 그 돈 덕분에 일어났던 일은 전부 전면적으로 '없던 일'이 되어야 된다.

말하자면, 결제에는 크게 두 가지 사건이 존재하는데:

  1. 결제 사건 그 자체 (이하 '결제건')
  2. 결제로 인해 파생되는 사건들 (이하 '피결제건')

피결제건들은 결제건에 필연적으로 종속적이며, 따라서:

  • 피결제건이 발생하지 않은 한 결제건은 번복 가능하다.
  • 결제건의 번복은 필연적으로 모든 피결제건의 번복을 요구한다.

이렇게 보면 쌀로 밥 짓는 소리인데, 실무로 들어가면 왕왕 잊어버리게 되는 원칙이다. (심지어 기획서에서도 당연한 거 아니냐는 식으로 생략되는 경우가 허다함)
그냥 개발자가 유념하고 있는 편이 피차 속편하다.

응용

  • 고객이나 사내전산 도구를 이용해 결제를 취소할 때, 피결제건들이 적절히 처리되지 않는다면, 그건 문제가 있다.

  • 유료 팟캐스트 구독을 결제한 뒤, 하나도 실제 시청을 하지 않았을 때는, 구독을 취소하고 환불을 받을 수 있다.

    • 결제건: 유료 팟캐스트 구독
    • 피결제건: 팟캐스트 에피소드를 실제로 시청하기
    • 팟캐스트 에피소드를 실제로 시청한 적이 한 번이라도 있는가?를 검증하는 로직이 준비돼 있어야 함
    • 구독을 취소하고 환불을 받을 때, 더 이상 그는 팟캐스트 에피소드는 접근이 불가하도록 하는 paywall이 있어야 함
  • 유료 멤버십 기간을 미리 주는 경우, 멤버십 해지 시점은 둘 중 하나다. 멤버십이 아직 시작하지 않았을 때, 멤버십 기간이 남아있을 때.

    • 결제건: 다음 멤버십 기간 이용권리 구매
    • 피결제건: 특정 기간 동안 멤버십 이용
    • 멤버십 이용을 시작도 못 했다면 당연히 그 이용권리는 취소(revoke) 가능하다. 그러나 멤버십이 시작이 됐다면 얘기는 행정적으로 좀 귀찮아진다.
      '이건 멤버십이 이미 이용 시작이 돼서 취소 못해요'라고 대응해 버리는 경우가 많은데, 대부분의 사내 결정권자들은 이를 이해하지 못한다. 정해진 기간 동안까지는 쓸 수 있게 해줄지, 그날 그시로 만료되도록 기간 정보를 변경할지 정책 정해달라고 해야 한다.
profile
4년차 PHP 개발자입니다.

0개의 댓글