인앱 결제 검증을 해보자 - Google Play (1)

인앱 결제 검증을 해보자 - Google Play (1)

요즘 잘 팔린다는 앱들은 거의 무료 다운로드 후 인앱결제를 유도하고 있다. 솔직히 한 사람의 게이머로서 이런 트렌드가 반갑지만은 않지만 어쩔수 있겠나. 매출이 잘 나온다는건 사실인데. 그리고 인앱 결제를 달면 앱 해킹에 따른 매출 하락을 막을수도 있고. 하지만 인앱 결제를 단다고 해도 결제 우회를 통해 공짜로 게임을 하려는 사람은 항상 있기 마련. 불법 다운로드때문에 골로 가는 회사 여럿 봤다.

뚫는 사람은 어떻게든 뚫겠지만, 그렇다고 손 놓고 있으면 좋게 되는 결과를 가지고 올 수 있다. 어찌 보면 복잡할 수도 있는 결제 검증 절차를 천천히 따라 해보자. 길게 보면 너님의 월급을 지키는 길이다.


구매 검증 절차

구매 검증 절차는 대략 다음과 같이 이루어진다. 발로 그린 그림이지만 이해하기 어렵진 않을거시다. 이 절차는 사용자의 결제 및 아이템 정보가 개발사의 DB에 쌓인다는것을 전제로 둔 절차이므로 모든 케이스에 적용되지 않을수 있다.

발로 그린 Play Store의 구매 검증 절차

  1. 사용자가 Play Store에서 인앱 결제를 신청한다.
  2. 구글은 구매 정보를 DB에다 박아두고 결제 정보와 검증 문자열을 사용자의 디바이스에 돌려준다.
  3. 앱에서 구글에서 받은 검증 문자열을 다시 개발사측의 API 서버에 전송한다.
  4. API 서버에서 사용자로부터 받은 검증 문자열을 Play Store API에 던진다.
  5. 구글은 API 서버로 부터 받은 검증 문자열을 가지고 DB에 박아둔 구매정보의 일부를 개발사 API 서버로 반환한다.
  6. 구글로 부터 받은 구매 정보가 정상적이라면 인앱 결제로 구매한 아이템을 개발사측 DB에 적어준다. 그리고 사용자에게 정상적인 결제가 이루어졌다는 응답을 보낸다.

가장 중요한 포인트를 짚자면, 검증을 하는 주체는 사용자의 디바이스가 아니고 개발사측 서버 라는 것이다. 절대 클라이언트를 믿어서는 안된다.

라이브러리 준비

일단 필요한 라이브러리부터 챙기자. 나님은 빌드 관리를 위해 Maven을 사용하고 있으므로 간단히 dependency 추가만으로 라이브러리를 가져올 수 있었다. 아직도 안 쓰고 있다면 좀 쓰셈. (물론 Gradle 처럼 더 좋은것도 있지만)
Maven을 쓴다면 pom.xml 파일에 아래와 같이 추가해주면 된다.

<dependency>
    <groupId>com.google.apis</groupId>
    <artifactId>google-api-services-androidpublisher</artifactId>
    <version>v2-rev19-1.20.0</version>
</dependency>

구글 API 사용 설정

구글의 Play Store API를 사용하기 위해서는 구글 개발자 계정이 필요하다. 안드로이드 개발을 한다면 가지고 있겠지만. 구글 개발자 계정으로 로그인 한 후에 Google Developers Console 에 접속하자.

기존에 프로젝트를 만든적이 있다면 상단의 프로젝트 선택 드롭 박스에서 원하는 프로젝트를 선택하고 없다면 프로젝트 생성을 눌러서 새로운 프로젝트를 만들자. 그리고 나서 위 화면의 빨간 박스 내용을 어딘가에 적어놓자. 코드 작성할때 필요하다.

사용자 인증 정보 추가 버튼을 누르고 난 화면

사이드바의 [API 및 인증] - [사용자 인증 정보] 메뉴로 가보자. 그 다음 사용자 인증정보 버튼을 누르고 서비스 계정을 선택한 다음 키 유형을 p12 파일로 선택하자. JSON을 추천한다고 하지만 내가 구현할땐 p12 파일을 선택했으니 p12 파일로 가는거임.

생성을 하고 나면 자동으로 p12 파일이 다운로드 된다. 이 파일은 딱 한번만 다운로드 받을 수 있으니 잘 보관해야 한다. 그리고 팝업창에 떠 있는 p12 파일의 비밀번호도 잘 적어두자. 마찬가지로 코드 작성할때 필요하다.

[사용자 인증 정보] 메뉴로 돌아와 보면 엄청 긴 이메일 주소가 하나 생겼을 것이다. 잘 보관해 놓자. 물론 나중에 코드 작성할때 필요하다.

이번에는 [API 및 인증] - [API] 메뉴로 가자. API 정말 많은데 이중에 우리가 필요한건 Google Play Developer API 이다. 클릭하면 API 사용 설정이라는 버튼이 보인다. 누지르자. 여기서 할 일은 모두 끝났다.

구글 플레이 콘솔 설정

구글은 왜 그런지 모르겠지만 개발자 콘솔과 Play Store 콘솔을 분리해놨다. 물론 개발자가 볼 내용과 회계팀에서 볼 내용이 달라서 그렇겠지만, 좀 친절하게 링크라도 제공하는게 좋지 않을까 싶다. 왜 이런 소리를 하냐면 내가 이 부분을 처리 안하고 까먹으니 그렇다. -_-

이번에는 Google Play Developer Console로 접속한ㄷ.. 으잉?

사실 Google Play Developer Console은 구글에게 $25를 바친 개발자들만이 사용할 수 있다. 물론 인앱 결제 아이템을 등록한 마당에 여기에 돈을 안 바친 분들은 안 계시겠지만.. 나는 안 바쳤거든.. o<-<

일단은 여기까지

스크린샷을 찍을 수 없으니 내가 개발자 계정을 파서 새로 만들어야 할 것 같다. 일단 이 글은 이쯤에서 접고 다음 글을 기약해 주길 바란다.