where do I get the signature from ?
公式ドキュメントを見て、
例に示すように、メソッド内でonActivityResult()
次のデータを取得できると書かれています。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1001) {
int responseCode = data.getIntExtra("RESPONSE_CODE", 0);
String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");//this is the signature which you want
if (resultCode == RESULT_OK) {
try {
JSONObject jo = new JSONObject(purchaseData);//this is the JSONObject which you have included in Your Question right now
String sku = jo.getString("productId");
String purchaseToken = jo.getString("purchaseToken");
//you need to send sku and purchaseToken to server for verification
}
catch (JSONException e) {
alert("Failed to parse purchase data.");
e.printStackTrace();
}
}
}
}
サーバー側での検証については
、公式ドキュメントをご覧ください
前述のように、クライアント アプリはサーバー API に送信しますsku
。purchaseToken
サーバーはこれらの値を受け取る必要があり、購入を確認するために Android パブリッシュ API でチェックを実行する必要があります。
サーバーは、必要なパラメーターを追加して、次のGET 要求を呼び出すことができます。
https://www.googleapis.com/androidpublisher/v2/applications/ packageName /purchases/products/ productId /tokens/ token
ここで、
packageName = クライアント アプリの
パッケージ名 productId = クライアント アプリから受け取った sku
token = クライアント アプリから受け取った purchaseToken
JSONObject
前述の形式の応答になります。
{
"kind": "androidpublisher#productPurchase",
"purchaseTimeMillis": long,
"purchaseState": integer,
"consumptionState": integer,
"developerPayload": string,
"orderId": string,
"purchaseType": integer
}
ここで、purchaseState = 0 は有効な購入を意味します
参考になれば幸いです!!