Inapp 결제 확인(안드로이드 AOS) -2

 이전글 : Inapp 결제 확인(안드로이드 AOS) -1 


이제 다운로드 받은 JSON파일로 구매 인증을 검증하는 코드를 작성하도록 하겠습니다.


먼저 하나의 폴더를 생성하고 그안에 node 프로젝트를 생성합니다.


$ npm init --y




이제 해당 프로젝트에서 index.js파일을 생성합니다.


$ touch index.js


먼저 해당 프로젝트에서 node npm module를 설치합니다.


$ npm install google-play-billing-validator


그리고 다운로드 받은 json파일로 프로젝트에 옮깁니다.




해당 json파일의 명칭을 pemkey.json으로 변경하였습니다. 그리고 구매 내역을 확인하기 위해서 purchaseData.json을 만들고 이 안에는 실제 앱에서 검증을 요청하는 데이터를 넣었습니다. 키이름은 아래에 있습니다.

purchaseID, productID, transactionData, serverVerificationData, localVerificationData, source, pendingCompletePurchase


이제 index.js파일을 아래와 같이 코딩을 해줍니다.


// 구글 인증을 위한 npm모듈
const Verifier = require("google-play-billing-validator")
// 파일을 읽고 쓰기 위한 node 내장 모듈
const { readFileSync } = require("fs")

// 구글 클라우드에서 받은 pem키(json파일)
const jsonData = JSON.parse(readFileSync("./pemkey.json", "utf8"))

// 앱에서 제공받은 구매이력(json파일)
const localVerificationData = JSON.parse(
JSON.parse(readFileSync("./purchesData.json", "utf8"))[
"localVerificationData"
]
)

// options 설정하기
const options = {
key: jsonData.private_key,
email: jsonData.client_email,
}

// 영수증 작성하기
const receipt = {
packageName: localVerificationData.packageName,
productId: localVerificationData.productId,
purchaseToken: localVerificationData.purchaseToken,
}

const verifier = new Verifier(options)

const aosResult = async (receipt) => {
let promiseData = verifier.verifyINAPP(receipt)
return await promiseData
.then(function (res) {
// 구매완료. then을 확인해 주시기 바랍니다.
console.log("AOS 구매 확인(res) : ", res)
return true
})
.catch(function (error) {
console.log("inapp error : ", error)
// throw new BadRequestException('AOS 영수증이 인증되지 않았습니다.');
return error
})
}

console.log("error : ", aosResult(receipt))


작성을 하고 해당 코드를 실행하면 아래와 같이 나옵니다.



'The current user has insufficient permissions to perform the requested operation'은 해당 Service Account가 아직 구글에서 인증을 해주지 않았다는 것입니다. 보통 최소 24시간 이상을 기다려야 합니다.


시간이 지나서 구글에서 허용을 한다면 아래과 같이 return값을 받게 됩니다.






댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)