요실금치료기 웨이브케어 6개월 동안 직접 사용해보았다

요실금치료기 웨이브케어 6개월 동안 직접 사용해보았다

매트릭스 TV 라이브 배경 스크린 99 Free 화면에 애니 매트릭스 코드 효과적인 라이브 배경스크린 앱입니다. 무작위로 깜박이는데 전구의 순서를 기억해서 맞추는 두뇌게임 앱입니다. 좀비 , RPG, 총게임 서바이벌, 오픈월드 게임, 액션의 요소를 결합한 서바이벌 좀비 생존 게임 앱입니다. 나만의 스타일로 무기를 갖추어 좀비를 도살하는 게임 앱입니다.


Service Account 권한 설정
Service Account 권한 설정


Service Account 권한 설정

11. IAM 및 관리자 IAM 권한 액세스 권한 부여 12. 서비스 계정 email 추가, 역할 Service Account Actor 선택 후 저장 13. Google Play Console에서 서비스 계정 확인 Play Console 권한 보기 14. 권한 계정 권한 재무 데이터 권한 2개 부여 15. API 호출에 필요한 앱 package name도 저장해둡니다.

영수증 요청
영수증 요청

영수증 요청

새 구매는 서버가 클라이언트로부터 결제정보를 받는 것으로 시작합니다. 이 글에서는 클라이언트를 다루지 않기 때문에 필수로 필요한 필드에 대해서만 다루겠습니다. 필드 이름은 클라이언트에 따라 상이할 수 있습니다. productId 우리들이 판매하는 인앱 상품 id 입니다. packageName 우리 애플리케이션의 패키지 이름입니다. urchaseToken 인앱 상품을 구매할 때 소비자 기기에 제공된 토큰입니다.

packageNamecom.some.thingproductIdcom.some.thing.inapp1purchaseTokenincafcigbkclcgbnbk . 해당 필드 값을 사용해서 플레이스토어에게 영수증을 요청합니다. 영수증 호출은 구글의 androidpublisher 객체를 통해 진행합니다.

공지 유형 및 거래 정보 확인

PubSub 이 보내주는 공지 데이터message는 POST body 로 전달됩니다. 앞서 설정했던 엔드포인트 URL로 POST body를 받는 API를 구현해 주세요.API 구현은 프레임워크별로 방법이 상이하기 때문에 이 글에서는 다루지 않겠습니다. 공지 데이터는 아래 형태로 들어오며 여기서 우리들이 주의 깊게 봐야 하는 필드는 data 입니다. 아래 구현코드를 참고하여 디코딩할 수 있습니다.

import base64import jsondecodeddata base64.b64decodemessagedata.decodeutf8notificationdata json.loadsdecodeddata디코딩이 완전한 notificationdata 변수는 아래와 같은 형태입니다.

구매 정보 가져와 상태값 확인 ProductPurchase Get API

이제 발급받은 access token으로 을 호출하면 사용자의 구매 데이터를 불러올 수 있습니다. 그리고 구매 데이터의 purchaseState가 구매완료0인지 확인하면 유효성 검증 로직은 완료로 판단됩니다 jwt 생성시 scope는 API 문서에 명시되어있는대로 다음과같이 설정하면 됩니다. 그리고 앱에서 인앱결제가 발생했을 때, 안드로이드는 각 결제건을 purchaseToken 값으로 identify하는데, 이 purchaseToken은 다음과같은 형태의 문자열입니다.

영수증 유효성 확인

이제 응답받은 영수증의 유효성을 확인할 차례입니다. 우리들이 영수증에서 주의 깊게 봐야 하는 필드는 다음과 같습니다. 소모품과 구독상품은 영수증 필드가 다르기 때문에 공통, 소모품, 구독상품으로 나누어 설명하겠습니다. 공통 상품 종류소모품구독상품와 상관없이 무관하게 확인해야 하는 필드 orderId 고유 거래 식별자입니다. ex GPA.33742691358390384 kind 상품의 종류를 나타내는 str 값입니다.

kind 가 androidpublisherproductPurchase 라면 소모품을 나타냅니다. 1 이라면 승인된 상태입니다. 소모품에서 봐야 하는 필드 urchaseState 결제 상황을 나타내는 int 값입니다.

구현 코드

정상적으로 API가 호출되었다면, response는 아래와같은 형태입니다. purchaseTimeMillis 1688371475787, purchaseState 0, consumptionState 1, developerPayload , orderId GPA.xxxxxxxxxxxxxxxx, purchaseType 0, acknowledgementState 1, kind androidpublisherproductPurchase, regionCode KR


🔥🔥 같이보면 좋은글 🔥🔥

안드로이드 인앱결제를 구현할 때는 이 마지막 API 호출할 때 가장 삽질을 많이 했습니다.

자주 묻는 질문

Service Account 권한

11 구체적인 내용은 본문을 참고하시기 바랍니다.

영수증 요청

새 구매는 서버가 클라이언트로부터 결제정보를 받는 것으로 시작합니다. 궁금한 사항은 본문을 참고하시기 바랍니다.

공지 유형 및 거래 정보

PubSub 이 보내주는 공지 데이터message는 POST body 로 전달됩니다. 궁금한 내용은 본문을 참고하시기 바랍니다.

Leave a Comment