Оплата через приложение Google, ошибка при получении информации с сервера [DF-DFERH-01]

Я тестирую биллинг в приложении Google. Я следую инструкциям по обучению выставлению счетов в приложении Google, используя IabHelper.

Я успешно настроил IabHelper.

mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        public void onIabSetupFinished(IabResult result) {
            Log.d("GooglePay", "Setup finished.");

            if (!result.isSuccess()) {
                // Oh no, there was a problem.
                Log.d("GooglePay", "Problem setting up in-app billing: " + result);
                return;
            }

            // Have we been disposed of in the meantime? If so, quit.
            if (mHelper == null) return;

            mBroadcastReceiver = new IabBroadcastReceiver(GooglePayPlugin.this);
            IntentFilter broadcastFilter = new IntentFilter(IabBroadcastReceiver.ACTION);
            mActivity.registerReceiver(mBroadcastReceiver, broadcastFilter);
        }
    });

Затем я вызываю API покупки IabHelper.

try {
     mHelper.launchPurchaseFlow(mActivity, productID, RC_REQUEST,
                mPurchaseFinishedListener, payload);
} catch (IabAsyncInProgressException e) {
     Log.d("GooglePay", "Error launching purchase flow. Another async operation in progress.");
}

Но у меня всегда всплывали всплывающие окна с надписью: «从服务器检索信息时出错。[DF-DFERH-01]», как показано на следующем рисунке. введите здесь описание изображения

Информация logcat находится в attated.


person user2314244    schedule 24.11.2017    source источник
comment
ссылка на logcat:note.youdao.com/noteshare?id=654efa3f235e49e82023d7d11300ef13   -  person user2314244    schedule 24.11.2017
comment
что такое productID в вашем коде?   -  person rockstar    schedule 24.11.2017
comment
@rockstar Я использую реальный идентификатор продукта, настроенный в магазине Google Play. Я дважды проверил правильность идентификатора продукта.   -  person user2314244    schedule 25.11.2017
comment
Я связываюсь с онлайн-помощью Google play. Мне сказали, что я должен скачать приложение по тестовой ссылке. пробую проблема та же   -  person user2314244    schedule 25.11.2017
comment
Да, он прав.. вы должны загрузить сервисы Google Play в свой телефон.   -  person rockstar    schedule 25.11.2017
comment
Пожалуйста, проверьте свой код с android.test.purchased идентификатором продукта   -  person rockstar    schedule 25.11.2017
comment
Если это работает хорошо, то проблема в вашем идентификаторе продукта, который вы создали в магазине Google?   -  person rockstar    schedule 25.11.2017
comment
Я получил эту ошибку в logcat: E/Volley: [187] e.a: Неожиданный код ответа 500 для android.clients.google.com/fdfe/ees/acquire   -  person user2314244    schedule 25.11.2017
comment
@rockstar, я использую идентификатор продукта android.test.purchased, и у меня возникла точно такая же проблема ....   -  person user2314244    schedule 25.11.2017
comment
Можете ли вы обновить ошибку logcat с вашим вопросом? пожалуйста.   -  person rockstar    schedule 25.11.2017
comment
Ok. Я обновлю некоторые шаги своим ответом, пожалуйста, проверьте это и обязательно охватите все шаги или нет.   -  person rockstar    schedule 25.11.2017


Ответы (2)


Пожалуйста, проверьте свой код, выполнив следующие действия:

ШАГ: 1 проверьте, что sdk manager с sdk tool обновлено с Google Play Billing Library и Google play services

ШАГ 2. Создайте проект Android и добавьте разрешение на выставление счетов в файл манифеста вашего проекта Android.

<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.INTERNET" />

ШАГ: 3 Добавление файла AIDL в ваш проект

1. Щелкните правой кнопкой мыши папку уровня приложения >> Папка >> Папка AIDL

2. Пример для создания каталога, папки или пакета в биллинге приложения -> com.android.vending.billing

3. Затем скопируйте и вставьте файл в этот пакет.

После всего этого вы получите ошибку в других классах поддержки биллинга InApp, таких как IabHelper, для импорта этого InAppBillingService.aidl, чтобы решить эту проблему, перейдите в build.gradle и перенастройте свой каталог для com.android.vending.billing, который не является правильным форматом в время создания каталога или пакета com.android.vending.billing

как:

sourceSets { main { helpl.srcDirs = ['src/main/aidl'] } }

ШАГ 3. Обновите зависимости в файле build.gradle.

ШАГ 4. Установите соединение с Google Play.

(Убедитесь, что base64EncodedPublicKey подходит для вашего продукта.)

(Base64EncodedPublicKey означает your license key from google play console)

 /************Setting Up Google Play Billing in the Application***************/
    mHelper = new IabHelper(this, base64EncodedPublicKey);

    // enable debug logging (for a production application, you should set this to false).
    // mHelper.enableDebugLogging(true);
    mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
        public void onIabSetupFinished(@NonNull IabResult result) {
            if (!result.isSuccess()) {
                Log.d(TAG, "In-app Billing setup failed: " + result);
                complain("In-app Billing setup failed:: " + result);

            } else {
                Log.d(TAG, "In-app Billing is set up OK");
            }
        }
    });
    /************Setting Up Google Play Billing in the Application***************/

ШАГ: 5

Для целей тестирования используйте следующий item_sku:

static final String ITEM_SKU = "android.test.purchased";
static final int RC_REQUEST = 10001;

в случае live используйте live ProductID, который вы создаете.

ШАГ: 6

  1. Реализация метода onActivityResult для обработки результата

    @Override
    protected void onActivityResult(int requestCode, int resultCode,Intent data)
    {
    if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
        super.onActivityResult(requestCode, resultCode, data);
    }
    } 
    
  2. Реализация OnIabPurchaseFinishedListener

  3. Реализация QueryInventoryFinishedListener

  4. Реализация OnConsumeFinishedListener

ШАГ: 7

убедитесь, что ваше устройство обновлено Google play services

ШАГ: 8

вызов API покупки IabHelper.

 mHelper.launchPurchaseFlow(mActivity, ITEM_SKU,
              RC_REQUEST,mPurchaseFinishedListener, mPayload);

ШАГ: 9 Чтобы узнать больше, перейдите по следующей ссылке:

https://developer.android.com/google/play/billing/billing_integrate.html#billing-permission

https://developer.android.com/google/play/billing/billing_library.html#connecting

Я надеюсь, что это поможет вам.

person rockstar    schedule 25.11.2017
comment
Я проверил и попробовал эти шаги, но это все еще не работает. - person user2314244; 27.11.2017

В конце концов я решил эту проблему, поместил свой ответ здесь, надеюсь, он поможет тем, кто столкнулся с той же проблемой, что и я.

mHelper.launchPurchaseFlow(mActivity, productID, RC_REQUEST, mPurchaseFinishedListener, полезная нагрузка);

Параметр «payLoad» слишком длинный, я установил в качестве полезной нагрузки пустую строку, тогда проблема решается, больше нет df-dferh-01.

Это не имеет ничего общего с VPN, ничего общего с библиотекой Google, просто потому, что полезная нагрузка слишком длинная для интерфейса службы Google Play.

person user2314244    schedule 28.11.2017