grantPromotionRewardForGame 중복 지급 방지 로직 관련

이 글의 성격은 무엇인가요?

질문 / 문제 해결

내용을 설명해주세요

프로모션 보상 중복 지급 방지를 직접 구현해야 하는 것으로 알고 있습니다.

그런데 grantPromotionRewardForGame의 경우 클라이언트에서 토스 서버에서 발급해 준 Key 등이 없어도 보상을 받을 수 있는 구조로 보입니다.

이러면 클라이언트 레벨에서 동일한 userKeyForGame, PromotionCode 쌍에 대해서 중복 지급을 방지하는 로직을 작성하더라도 클라이언트 변조에는 취약한 구조아닌가요?

  1. 현재 grantPromotionRewardForGame는 클라이언트 변조 시 중복 지급이 가능한 구조가 맞을까요? (원천적으로 방지가 불가능한 것이 맞을까요)
  2. 토스 측에서 권장하는 검증 방식에 대해 안내 부탁드립니다.

제가 생각한 검증 흐름은 대략 이러한데 비슷한 구현이 가능한지, 아니면 추후 이러한 검증 장치가 추가될 수 있을지 궁금합니다.

  1. (클라이언트 → 게임 서버) 프로모션 보상 수령 요청 (userKeyForGame, promotionCode 전달)
  2. ( 게임 서버 → 토스 서버) 프로모션 지급 내역 확인 (userKeyForGame + promotionCode)
  3. (게임 서버 → 토스 서버) 지급 내역이 없다면 프로모션 지급 Key생성 요청
  4. (게임 서버 → 클라이언트) 프로모션 지급 key 전달
  5. (클라이언트 → 토스 서버) 프로모션 지급 key로 보상 수령

안녕하세요 :slight_smile:
현재 게임 앱에서의 프로모션 지급 내역 확인은 별도로 프로모션 지급 내역 API를 제공하고 있지 않습니다.
userKeyForGame로 반환된 hash 를 기준으로 자체 서버에서 promotionCode와 매핑하여 지급 내역 여부를 확인 후 지급하는 프로세스가 가능할 것 같습니다.