안경잡이개발자

728x90
반응형

  구글 인 앱 결제(IAP)는 특정한 애플리케이션의 사용자가 인 앱 결제를 이용할 수 있도록 해주는 기능입니다. 일반적으로 인 앱 결제 기능을 앱에 넣는 경우, 앱에서 사용자가 특정한 물품을 구매한 뒤에 서버의 결제 완료 API를 호출하게 됩니다. 그러면 서버의 결제 완료 API는 앱 사용자에게 아이템을 지급하는 등의 처리를 하게 됩니다.

 

  하지만 많은 서버 개발자들은, 구글 인 앱 결제(In App Purchasing)검증 로직을 넣지 않습니다. 이는 매우 위험하다고 할 수 있습니다. 인 앱 결제 기능을 이용할 때는 클라이언트가 서버 결제 완료 API를 호출했을 때, 해당 사용자가 진짜로 결제를 했는지 확인해야 합니다. 예를 들어, 특정한 악성 클라이언트는 실제로 결제를 하지 않았음에도 서버 API 주소를 알아내서, 해당 API를 무한정 호출해 부당한 이익을 취할 수 있습니다.

 

  따라서 이번 시간에는 구글 인 앱 결제(IAP) 인증을 위한 구글 개발자 API를 사용하는 방법을 소개합니다.

 

  ▶ Google Cloud Platform API Library: https://console.cloud.google.com/apis/library

 

  구글 라이브러리는 위 링크에서 모두 확인할 수 있습니다.

 

 

  이후에 다음과 같이 [Google Play Android Developer API]를 검색하여 확인할 수 있도록 합니다.

 

 

  이후에 [Google Play Android Developer API]를 사용하겠다고 설정하시면 됩니다.

 

 

  이 때 [프로젝트]가 없는 경우 [프로젝트 만들기]를 진행하고, [새 프로젝트 생성] 이후에 [사용 설정]을 하시면 됩니다. 반면에 이미 구글 플레이 콘솔에 올라가 있는 앱과 연동되어 있는 프로젝트가 있는 경우 해당 프로젝트에서 그대로 확인하시면 됩니다. 우리가 해야 할 일은 바로 [사용자 인증 정보]를 만드는 것입니다. 다시 말해 특정한 안드로이드 앱의 사용자 결제 내역을 확인할 수 있는 권한을 가지고 있는, '사용자 인증 정보'를 생성해야 하는 것입니다.

 

 

  따라서 [사용자 인증 정보]로 이동한 뒤에 [사용자 인증 정보 만들기]를 눌러 [서비스 계정 키] 탭에 들어갑니다.

 

 

  이후에 [새 서비스 계정]을 선택한 뒤에 [서비스 계정 이름]을 설정합니다. 그리고 역할은 [소유자]로 선택할 수 있습니다. 이제 [생성] 버튼을 눌러서 JSON 파일을 생성하시면 됩니다. 생성 이후에는 JSON 파일이 생성되므로, 이 파일을 저장해주세요. 향후 서버에서 이 JSON 파일을 이용하여 구글 인 앱 결제 인증을 수행할 수 있습니다.

 

  이제 구글 플레이 개발자 콘솔에 업로드가 되어 있는 앱을 확인합니다.

 

▶ 구글 플레이 개발자 콘솔: https://play.google.com/apps/publish

 

  다음과 같이 Play Console에서 [설정] 탭에 들어가 [API 액세스]를 확인합니다. 그리고 만들어진 서비스 계정에 [액세스 권한 부여]를 진행하고, [앱 정보 보기] 및 [재무 데이터 보기]만 체크하여 [사용자 추가]를 진행하시면 됩니다.

 

 

  결과적으로 다음과 같이 [재무 데이터 보기] 권한이 있도록 해주시면 되는 것입니다.

 

 

  이제 재무 데이터를 볼 수 있는 권한이 추가되었으므로, 실제로 서버에서 API를 호출하여 인 앱 결제 내역을 확인할 수 있게 되었습니다. 서버 프로그램에서 이를 구현하기 위해서는, API 문서를 읽어 보시면 됩니다.

  

▶ 구글 결제 관련 개발자 API 명세서: https://developers.google.com/android-publisher/api-ref/purchases/products

 

  명세서 내용을 확인하면, 어떠한 방식으로 인 앱 결제 정보를 가져올 수 있는지 나타납니다. 핵심이 되는 내용은 다음과 같습니다.

 

 

  구글 결제 관련 개발자 API 사용 방법은 다음과 같습니다. 저는 PHP를 기준으로 설명했습니다.

 

cd /home/ubuntu
sudo vi composer.json
# Google API 설치 내용 작성하기
{
  "require": {
    "google/apiclient": "^2.0"
  }
}
# Composer로 설치하기
sudo composer install
ls
# 해당 폴더에 설치되어 있는 vendor 이용하기
# 연동을 위해 Google의 API JSON 키 파일을 /home/ubuntu의 위치에 두기
# 이후에 다음과 같이 사용하기 (클라이언트로부터 product_id와 purchase_token을 받도록)
$client = new Google_Client();
$client->setAuthConfig('/home/ubuntu/IAP.json');
$client->addScope('https://www.googleapis.com/auth/androidpublisher');
$service = new Google_Service_AndroidPublisher($client);
$package_name = "패키지 이름";
$purchase = $service->purchases_products->get($package_name, $product_id, $purchase_token);
# 이후에 다음의 Getter 함수로 각 상태 값 확인 가능
$purchase->getPurchaseState()
$purchase->getPurchaseType()

 

  (+추가) PHP 코드에 대한 자세한 내용은 다음의 포스팅에 기록해 놓았습니다.

 

https://ndb796.tistory.com/296

 

PHP 서버에서 안드로이드 인 앱 결제(IAP) 여부를 검증하는 API 개발하는 방법

일반적으로 안드로이드 어플리케이션을 개발할 때에는 인 앱 결제(IAP) 기능을 구현해야 할 때가 많습니다. 다만 이러한 인 앱 결제 기능을 구현할 때 알아 두어야 할 점이 있습니다. 그것은 바로 클라이언트가 제..

ndb796.tistory.com

 

728x90
반응형