본문 바로가기

공부

구글 인 앱 빌링(php)

구글 인 앱 빌링 처리하기


프로젝트 등록 후 


https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri=  "프로젝트에 나오는 redirect uri"   &client_id= "프로젝트에 나오는 클라이언트 id"


를 인터넷 주소입력창에 입력하면 동의를 거쳐서 특정코드를 발급한다

발급받은 코드를 잘간직한 후


$url = "https://accounts.google.com/o/oauth2/token";

$content = array(); 

$post_data = array(

'code' => '발급받은 코드',

'client_id' => '클라이언트 ',

'client_secret' => '클라이언트 시크릿',

'redirect_uri' => '리다이렉트 uir',

'grant_type' => 'authorization_code'    //(고정)

);


$ch = curl_init();

curl_setopt ($ch, CURLOPT_URL,$url); //접속할 URL 주소

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 인증서 체크같은데 true 시 안되는 경우가 많다.

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt ($ch, CURLOPT_SSLVERSION,3); // SSL 버젼 (https 접속시에 필요) 

curl_setopt ($ch, CURLOPT_HEADER, 0); // 헤더 출력 여부

curl_setopt ($ch, CURLOPT_POST, 1); // Post Get 접속 여부

curl_setopt ($ch, CURLOPT_POSTFIELDS, $post_data); // Post 값  Get 방식처럼적는다.

curl_setopt ($ch, CURLOPT_TIMEOUT, 30); // TimeOut 값

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); // 결과값을 받을것인지


돌리면 



{

    "access_token": "액세스토큰",

    "token_type": "Bearer",

    "expires_in": 3600,

    "refresh_token": "리프레쉬 토큰"

}


위와 같은 답변이 떨어진다(예시)  

expires_in의 경우는 유효시간이다(초단위)  



이제 상품을 구입해보자


{

"orderId":"주문번호",

"packageName":"패키지네임",

"productId":"프로덕트아이디",

"purchaseTime":1435910545435,

"purchaseState":0,

"purchaseToken":"구매토큰"

}


위와 같은 값이 나온다 우리는 위에서 패키지네임, 프로덕트 아이디, 구매토큰 세가지를 사용한다




$url = "https://www.googleapis.com/androidpublisher/v1.1/applications/패키지네임/"; 

$url.= "inapp/프로덕트 아이디/";

$url.= "purchases/위에서 받은 구매토큰";

$url.= "?access_token=위에서 발급받은 액세스토큰";

$content = array();  

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url); //접속할 URL 주소

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 인증서 체크같은데 true 시 안되는 경우가 많다.

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_SSLVERSION,3); // SSL 버젼 (https 접속시에 필요) 

curl_setopt($ch, CURLOPT_HEADER, 0); // 헤더 출력 여부

curl_setopt($ch, CURLOPT_TIMEOUT, 30); // TimeOut 값

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 결과값을 받을것인지



완료시

아래와 같은 모양의 완성이다



{

    "kind": "androidpublisher#inappPurchase",

    "purchaseTime": "1436169587695",

    "purchaseState": 0,

    "consumptionState": 0,

    "developerPayload": ""

}



아직 리프레쉬 토큰을 사용하여 시간만료에 대한 재갱신은 준비가 안되었다

일단은 여기까지 포스팅


728x90

'공부' 카테고리의 다른 글

ip 2진법 계산  (1) 2016.06.23
php short_open_tag  (0) 2016.04.19
amazon ec2 putty 와 keygen  (0) 2015.06.02
php.ini timezone 설정  (0) 2015.04.22
aws lamp setting tutorial  (0) 2015.04.15