Возврат денег пользователю - PullRequest
0 голосов
/ 26 апреля 2018

Я интегрировал In-App Billing API в свое приложение (Android), чтобы позволить пользователю покупать монеты, чтобы иметь возможность чем-то еще из приложения ... в onPurchasesUpdated, если ответ «ОК», я делаю запрос залпа, чтобы увеличить пользовательский баланс ... проблема ... если запрос не выполнен из-за какой-либо ошибки (ошибка сервера - ошибка тайм-аута), Кто-нибудь есть идеи, как вернуть деньги пользователя программно? это мой код ..

@Override
public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
    Log.e("responseCode", responseCode + " ===== " + BillingClient.BillingResponse.OK);
    if (responseCode == BillingClient.BillingResponse.OK) {
        if (purchases != null) {
            Log.e("purchases size", purchases.size() + "");
            for (int i = 0; i < purchases.size(); i++) {
                for (int j = 0; j < SKUS.get(BillingClient.SkuType.INAPP).size(); j++) {
                    if (purchases.get(i).getSku().equals(SKUS.get(BillingClient.SkuType.INAPP).get(j).getId())) {
                        deposit(activity.getApplicationContext(), SKUS.get(BillingClient.SkuType.INAPP).get(j).getPrice(), purchases.get(i).getPurchaseToken());
                    }
                }
            }
        }
        Log.e("OPU response", "true");

    } else {
        Log.e("OPU error", "false");
    }
}

это мой запрос ...

protected void deposit(final Context context, double price, final String token) {
    JSONObject amount = new JSONObject();
    try {
        amount.put("amount", price);
        amount.put("payment_type", "playStore");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    Log.e("amount", amount.toString());
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,
            URLs.DEPOSIT,
            amount,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    Log.e("deposit res", response.toString());
                    billingClient.consumeAsync(token, new ConsumeResponseListener() {
                        @Override
                        public void onConsumeResponse(int responseCode, String purchaseToken) {
                            if (responseCode == BillingClient.BillingResponse.OK) {
                                Log.e("Done", "done");
                            }
                        }
                    });
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("deposit", error.toString());
                    billingClient.consumeAsync(token, new ConsumeResponseListener() {
                        @Override
                        public void onConsumeResponse(int responseCode, String purchaseToken) {
                            if (responseCode == BillingClient.BillingResponse.OK) {
                                Log.e("Done", "done");
                            }
                        }
                    });
                }
            }) {
        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> headers = new HashMap<>();
            String token = "Bearer " + MySingleton.getmInstance(context).getUserToken();
            headers.put("Content-Type", "application/json; charset=utf-8");
            headers.put("Authorization", token);
            return headers;
        }
    };
    jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(
            0,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    jsonObjectRequest.setShouldCache(false);
    MySingleton.getmInstance(context).addToRQ(jsonObjectRequest);
}

заранее спасибо

...