Huawei В тестировании изолированной программной среды покупки приложения я не могу купить уже купленный товар

jespivigno:

В тесте IAP для песочницы расходные и не расходные материалы не могут быть приобретены повторно после однократной покупки. В результате страница оплаты не может быть отображена. В onActivityResult IAP SDK возвращает код

ORDER_PRODUCT_OWNED 60051

Это общая проблема или я что-то не так делаю?

Охотник:

60051 означает, что пользователю не удалось приобрести продукт, поскольку пользователь уже владеет продуктом. и @Disavowed дал объяснение и решение. https://developer.huawei.com/consumer/en/doc/development/HMS-References/iap-ExceptionHandlingAndGeneralErrorCodes-v4

Вот код о том, как потреблять продукт.

/**
 * Consume the unconsumed purchase with type 0 after successfully delivering the product, then the Huawei payment server will update the order status and the user can purchase the product again.
 * @param inAppPurchaseData JSON string that contains purchase order details.
 */
private void consumeOwnedPurchase(final Context context, String inAppPurchaseData) {
    Log.i(TAG, "call consumeOwnedPurchase");
    IapClient mClient = Iap.getIapClient(context);
    Task<ConsumeOwnedPurchaseResult> task = mClient.consumeOwnedPurchase(createConsumeOwnedPurchaseReq(inAppPurchaseData));
    task.addOnSuccessListener(new OnSuccessListener<ConsumeOwnedPurchaseResult>() {
        @Override
        public void onSuccess(ConsumeOwnedPurchaseResult result) {
            // Consume success
            Log.i(TAG, "consumeOwnedPurchase success");
            Toast.makeText(context, "Pay success, and the product has been delivered", Toast.LENGTH_SHORT).show();
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(Exception e) {
            Log.e(TAG, e.getMessage());
            Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
            if (e instanceof IapApiException) {
                IapApiException apiException = (IapApiException)e;
                Status status = apiException.getStatus();
                int returnCode = apiException.getStatusCode();
                Log.e(TAG, "consumeOwnedPurchase fail,returnCode: " + returnCode);
            } else {
                // Other external errors
            }

        }
    });
}

/**
 * Create a ConsumeOwnedPurchaseReq instance.
 * @param purchaseData JSON string that contains purchase order details.
 * @return ConsumeOwnedPurchaseReq
 */
private ConsumeOwnedPurchaseReq createConsumeOwnedPurchaseReq(String purchaseData) {

    ConsumeOwnedPurchaseReq req = new ConsumeOwnedPurchaseReq();
    // Parse purchaseToken from InAppPurchaseData in JSON format.
    try {
        InAppPurchaseData inAppPurchaseData = new InAppPurchaseData(purchaseData);
        req.setPurchaseToken(inAppPurchaseData.getPurchaseToken());
    } catch (JSONException e) {
        Log.e(TAG, "createConsumeOwnedPurchaseReq JSONExeption");
    }

    return req;
}

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  3. 3

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  4. 4

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  5. 5

    How to click an array of links in puppeteer?

  6. 6

    Merging legends in plotly subplot

  7. 7

    ViewPager2 мигает / перезагружается при смахивании

  8. 8

    Отчеты Fabric Debug Craslytic: регистрация, отсутствует идентификатор сборки, применить плагин: io.fabric

  9. 9

    How to normalize different curves drawn with geom = "step" when using stat_summary

  10. 10

    无法通过Vue在传单中加载pixiOverlay

  11. 11

    как я могу удалить vue cli 2?

  12. 12

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  13. 13

    SQL Вычтите две строки друг от друга в одном столбце, чтобы получить результат

  14. 14

    Elasticsearch - Нечеткий поиск не дает предложения

  15. 15

    Single legend for Plotly subplot for line plots created from two data frames in R

  16. 16

    Описание моего типа Parser как серии преобразователей монад

  17. 17

    Как изменить цвета запятых и скобок в VS Code

  18. 18

    Сброс значения <input type = "time"> в Firefox

  19. 19

    Почему прокси в vue.config.js 404

  20. 20

    Как установить параметр -noverify с gradle ktx для робоэлектрических тестов Android?

  21. 21

    В чем разница между ifstream, ofstream и fstream?

популярныйтег

файл