2013-03-07 2 views
1

인앱 구매 사용에 대한 자습서를 따랐으므로이 모든 것을 사용할 수 있습니다. 하지만이 예제의 경우 안전하게 사용할 수 있습니까?Android 용 보안 인앱 구매

앱을 무료로 다운로드 할 수 있으며 채팅 기능이 있습니다. 은 하루에 100 개의 메시지를 보낼 수 있습니다. 앱에서 년 x에 대한 추가 메시지를 보낼 수 있습니다.

문제는 다음과 같습니다. 서버가 사용자가 구입 한 제품을 어떻게 알 수 있습니까? 사용하고 확인할 Google 서비스가 있습니까? 앱이 "이봐, 방금 이걸 샀어"라는 메시지를 서버에 보내도록 허용하면 잘못 된 것처럼 보입니다.

답변

0

이 방법을 사용하면 트랜잭션 응답을 받게됩니다.

@Override 
    public void onRequestPurchaseResponse(RequestPurchase request, 
      ResponseCode responseCode) { 

responseCode가 RESULT_OK 인 경우 성공적인 트랜잭션을 의미합니다.

this link을 참조 할 수 있습니다.

+0

이 서버 측을 확인하고 싶습니다. 누군가가 그의 전화를 뿌리 쳤다면 그는 이것을 가짜로 만들 수 있습니다. 일부 Google 서비스가있는 서버에서이를 확인할 수 있다면 실제로 지불했는지 여부를 확인할 것입니다. – Klaasvaak

+0

트랜잭션이 성공하면 webservice를 사용하여 서버에 요청을 보낼 수 있습니다. –

+1

웹 서비스를 호출하여 "이봐, 이걸 샀어."라고 말하면 안심할 수 있습니다. 내 웹 응용 프로그램이 클라이언트가 실제로 그렇게하는 대신 사용자가 실제로 돈을 지불했는지 확인하기 위해 호출 할 수있는 Google 서비스가 없습니까? – Klaasvaak

1

IAP의 일환으로 BroadcastReceiver를 통해 Google로부터 알림을 받아야합니다. 알림 중 하나는 com.android.vending.billing.PURCHASE_STATE_CHANGED입니다. 해당 알림에는 데이터 블록과 서명이 포함됩니다. 서버에 정확하게 전송하십시오. Google Play는 서버에서 데이터 블록의 서명을 검증하는 데 사용할 수있는 공개 키를 제공합니다 (php에서는 openssl_verify 작동). 서버의 데이터를 확인한 후에는 데이터 블록 (json)을 구문 분석하여 사용자가 구입 한 제품 식별자를 비롯한 주문 목록을 얻을 수 있습니다. 거기에서 자신의 프로토콜은 서버에 대해 유효성을 검사 할 장치/사용자/계약 식별자를 포함해야합니다. 계획에 대해 알지 못해도 해당 부분에 대한 권장 사항을 작성하는 것은 어렵습니다.

0

서비스에서받은 후 구매 정보를 서버로 전달할 수 있습니다.

당신은 openssl_verify ($data, $signature, $key)

데이터를 사용할 수 있으며 서명은 서비스에서 얻을 당신의 결과에 있습니다. 키는 개발자 콘솔에서 찾을 수있는 공개 RSA 키입니다.