aboutsummaryrefslogtreecommitdiff
path: root/platform/android/java/src/com/android/godot/payments/ValidateTask.java
blob: 6ea415e8a980eadd80c3b4962ccce0e9cb312a79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.android.godot.payments;

import org.json.JSONException;
import org.json.JSONObject;

import com.android.godot.Godot;
import com.android.godot.GodotLib;
import com.android.godot.GodotPaymentV3;
import com.android.godot.utils.Crypt;
import com.android.godot.utils.HttpRequester;
import com.android.godot.utils.RequestParams;
import com.android.vending.billing.IInAppBillingService;

import android.app.Activity;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.IntentSender.SendIntentException;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.Log;

abstract public class ValidateTask {

	private Activity context;
	private GodotPaymentV3 godotPaymentsV3;
	public ValidateTask(Activity context, GodotPaymentV3 godotPaymentsV3){
		this.context = context;
		this.godotPaymentsV3 = godotPaymentsV3;
	}
	
	public void validatePurchase(final String sku){
		new AsyncTask<String, String, String>(){

			
			private ProgressDialog dialog;

			@Override
			protected void onPreExecute(){
				dialog = ProgressDialog.show(context, null, "Please wait...");
			}
			
			@Override
			protected String doInBackground(String... params) {
				PaymentsCache pc = new PaymentsCache(context);
				String url = godotPaymentsV3.getPurchaseValidationUrlPrefix();
				RequestParams param = new RequestParams();
				param.setUrl(url);
				param.put("ticket", pc.getConsumableValue("ticket", sku));
				param.put("purchaseToken", pc.getConsumableValue("token", sku));
				param.put("sku", sku);
//				Log.d("XXX", "Haciendo request a " + url);
//				Log.d("XXX", "ticket: " + pc.getConsumableValue("ticket", sku));
//				Log.d("XXX", "purchaseToken: " + pc.getConsumableValue("token", sku));
//				Log.d("XXX", "sku: " + sku);
				param.put("package", context.getApplicationContext().getPackageName());
				HttpRequester requester = new HttpRequester();
				String jsonResponse = requester.post(param);
//				Log.d("XXX", "Validation response:\n"+jsonResponse);
				return jsonResponse;
			}
			
			@Override
			protected void onPostExecute(String response){
				if(dialog != null){
					dialog.dismiss();
				}
				JSONObject j;
				try {
					j = new JSONObject(response);
					if(j.getString("status").equals("OK")){
						success();
						return;
					}else if(j.getString("status") != null){
						error(j.getString("message"));
					}else{
						error("Connection error");
					}
				} catch (JSONException e) {
					error(e.getMessage());
				}catch (Exception e){
					error(e.getMessage());
				}

				
			}
			
		}.execute();
	}
	abstract protected void success();
	abstract protected void error(String message);
	abstract protected void canceled();

	
}