(지식공유) 이중결제 피하는 방법

결제 시스템에서 발생할 수 있는 가장 심각한 문제 중 하나는 고객에게 이중 청구오전.

그래서 결제 시스템을 설계할 때 결제에 대해 정확히 한 번만 실행되도록 하는 것이 중요합니다.

하다.

한 번만 실행하는 방법은 다음과 같습니다.

1. 최소 한 번 실행됩니다.

(다시 해 보다)
2. 최대 한 번만 실행합니다.

(멱등성)

아래 그림을 통해 Retry와 Idempotency를 어떻게 하는지 알아보자.


다시 해 보다

네트워크 오류 또는 시간 초과로 인해 결제 거래를 다시 시도해야 하는 경우가 있습니다.

위 그림과 같이 결제 실패 시 결제가 성공할 때까지 재시도를 하게 되므로 재시도는 최소 1회 이상 결제를 보장합니다.

하지만 무한 재시도를 하면 계속해서 실패하면 서버 자원을 잡아먹기 때문에 무한대로 설정하는 것은 좋은 선택이 아니다.


멱등성

개념은 동일한 요청이 여러 번 실행되더라도 결과가 항상 동일하도록 보장하는 것입니다.

즉, 동일한 요청을 여러 번 수행하더라도 시스템에 영향을 주지 않고 오류를 방지하는 방법입니다.

동일한 지불 요청이 두 번 전송되더라도 한 번만 지불되었음을 보장할 수 있습니다.

이는 네트워크 문제 또는 기타 문제로 인해 결제 요청이 중복 전송될 수 있는 경우에 특히 유용합니다.

결제 요청 시 일정 시간이 지나면 만료되는 고유식별자(UUID)를 생성하여 요청과 함께 전송합니다.

서버는 요청을 처리하고 해당 식별자를 기반으로 응답합니다.

이러한 식별자를 사용하여 중복 요청을 거부하고 결제가 이미 처리되었음을 나타낼 수 있습니다.