나우 스윙 결제 구현 공식 참고 내용

2026. 1. 20. 10:39나의 참고 자료

반응형

1. 글로벌 표준 결제 계산 공식

글로벌 결제에서 가장 권장되는 할인 적용 순서는 **[수량 기반 총액 → 멤버십 할인 → 쿠폰 할인]**입니다.

최종 결제 금액 = ((판매가 × 수량) - 멤버십 할인 - 쿠폰 할인) + 세금 + 기타 수수료


2. 항목별 상세 로직 및 공식

① 멤버십 할인 (Membership Discount, Dm)

멤버십은 상시 혜택으로 가장 먼저 적용됩니다. **중간 계산 정밀도(4자리 이상)**를 유지하는 것이 핵심입니다.

  • 공식: Dm = (Price × Qty) × Rm
    • Price: 원래 판매가 (Base Price)
    • Rm: 멤버십 할인율 (예: 10% = 0.1)
    • Dm: 멤버십 할인 금액

② 쿠폰 할인 (Coupon Discount, Dc)

멤버십 할인이 적용된 후의 '잔액'에서 차감하는 방식이 일반적입니다.

  • 공식 (정률): Dc = ( (Price × Qty) - Dm ) × Rc
    • Rc: 쿠폰 할인율 (예: 5% = 0.05)
  • 공식 (정액): Dc = 고정 할인 금액 (예: $10)
  • 제약 조건: Dc는 설정된 '최대 할인 한도'를 초과할 수 없습니다.

③ 최종 결제 금액 (Final Payment)

모든 할인이 끝난 후 세금과 수수료를 더해 최종 금액을 산출합니다.

  • 공식: 최종 금액 = ( (Price × Qty) - Dm - Dc ) + Tax + Fees

3. 통화별 소수점 규격 (Currency Precision)

글로벌 시스템에서는 통화 코드(ISO 4217)에 따라 최종 금액의 자릿수를 다르게 처리해야 합니다.

통화 유형 해당 국가/통화 (예시) 소수점 자리수(Scale) 처리 예시
0단위 통화 KRW(한국), JPY(일본), VND(베트남) 0 1,234.56 → 1,235
2단위 통화 USD(미국), EUR(유럽), CNY(중국) 2 12.3456 → 12.35
3단위 통화 KWD(쿠웨이트), JOD(요르단), BHD(바레인) 3 1.2345 → 1.235

4. 실무 구현 핵심 체크리스트

  1. 계산 정밀도 (The 4-Decimal Rule):
    • 3자리 통화(KWD 등)가 존재하기 때문에, 모든 중간 할인 계산은 최소 소수점 4자리 이상에서 수행해야 반올림 오차를 완전히 방지할 수 있습니다.
  2. 연산 타입: double이나 float은 금지하며, Java의 BigDecimal이나 각 언어의 고정 소수점 라이브러리를 사용하세요.
  3. 최종 라운딩 (Final Rounding):
    • 모든 할인은 기준 통화(예: USD)의 4자리 정밀도로 계산을 마칩니다.
    • 실제 결제 요청 직전에만 해당 국가 통화의 자릿수(0, 2, 3)에 맞춰 반올림(HALF_UP) 처리합니다.
반응형