Я интегрировал API биллинга в приложении в свое приложение (android), чтобы позволить пользователю покупать монеты, чтобы иметь возможность делать что-то еще из приложения...
в onPurchasesUpdated, если ответ «ОК», я делаю запрос Volley чтобы увеличить баланс пользователя...
проблема в том... если запрос не выполнен из-за какой-либо ошибки (ошибка сервера - ошибка тайм-аута),
кто-нибудь знает, как программно вернуть деньги пользователю?это мой код ..
Я интегрировал API биллинга в приложении в свое приложение (android), чтобы позволить пользователю покупать монеты, чтобы иметь возможность делать что-то еще из приложения... в onPurchasesUpdated, если ответ «ОК», я делаю запрос Volley чтобы увеличить баланс пользователя... проблема в том... если запрос не выполнен из-за какой-либо ошибки (ошибка сервера - ошибка тайм-аута), кто-нибудь знает, как программно вернуть деньги пользователю?это мой код ..
[code]@Override public void onPurchasesUpdated(int responseCode, @Nullable List 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"); } } [/code]
это моя просьба...
[code]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() { @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 getHeaders() throws AuthFailureError { Map 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); } [/code]