1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/tjbaobao-GoogleBilling

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

GoogleBilling 1.2.2.13

Основан на com.android.billingclient:billing:1.2.2, упаковывает весь процесс оплаты.

QQ группа для общения: 425219113 (для обсуждения языков программирования).

Внимание: с 2 августа 2021 года все новые приложения должны использовать версию 3 или более позднюю версию Billing Library. До 1 ноября 2021 года для всех обновлений существующих приложений необходимо использовать версию 3 или выше.

В настоящее время поддерживается только BillingEasy, пожалуйста, перейдите к использованию.

BillingEasy-0.1.2 — новый дизайн агрегатора покупок, поддерживает покупки Huawei и Google.

ADEasy — рекомендуемая универсальная рекламная агрегатная платформа SDK с автоматической интеграцией фреймворка.

DYFStoreKit и DYFStore — дружественные ссылки на агрегатор покупок IOS.


=================Использование=================

  • API подключение
//Project
allprojects {
      repositories {
        ...
        maven { url 'https://raw.githubusercontent.com/TJHello/publicLib/master'}
      }
}
//app
android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
dependencies {
     implementation 'com.TJHello:GoogleBilling:3.0.0.1-a06'
}

    private lateinit var googleBillingUtil: GoogleBillingUtil

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        GoogleBillingUtil.isDebug(true)
        GoogleBillingUtil.setSkus(arrayOf("inappSku"), arrayOf("subsSku"))
        googleBillingUtil = GoogleBillingUtil.getInstance()
            .addOnGoogleBillingListener(this,OnGoogleBillingListener())
            .build(this)
    }
    
    /**
     * Использованы особенности JAVA8, можно выборочно реализовать нужные методы.
     */
    private inner class OnGoogleBillingListener : GoogleBillingUtil.OnGoogleBillingListener(){
        //внутренний сервис инициализирован успешно
        override fun onSetupSuccess() {
            
        }
    }
    
    override fun onDestroy() {
        super.onDestroy()
        googleBillingUtil.onDestroy(this)
    }
  • Запуск покупок или подписок
public void queryInventoryInApp() //запрос списка покупок
public void queryInventorySubs() //запрос списка подписок
public void purchaseInApp(Activity activity,String skuId) //запуск покупки
public void purchaseSubs(Activity activity,String skuId) //запуск подписки
public List<Purchase> queryPurchasesInApp(Activity activity)//получение действительных заказов на покупку
public List<Purchase> queryPurchasesSubs(Activity activity)//получение действительных подписок
public void queryPurchaseHistoryAsyncInApp(Activity activity)//запрос истории покупок
public void queryPurchaseHistoryAsyncSubs(Activity activity)//запрос истории подписок

=================Сводная таблица кодов ответов(официальный адрес)=================

Код ответа Значение Описание
BILLING_RESPONSE_RESULT_OK 0 Успех
BILLING_RESPONSE_RESULT_USER_CANCELED 1 Пользователь нажал кнопку «Назад» или отменил диалог
BILLING_RESPONSE_RESULT_SERVICE_UNAVAILABLE 2 Соединение с сетью прервано
BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE 3 Запрошенный тип не поддерживается Billing API версии (проблема с платёжной средой)

| BILLING_RESPONSE_RESULT_DEVELOPER_ERROR | 5 | Параметры, переданные в API, недействительны. Эта ошибка также может указывать на то, что приложение неправильно подписано для покупок внутри приложения в Google Play или что приложению не хватает необходимых разрешений в его манифесте.

| BILLING_RESPONSE_RESULT_ERROR | 6 | Произошла серьёзная ошибка во время операции API.

| BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED | 7 | Не удалось совершить покупку, поскольку товар уже принадлежит пользователю.

| BILLING_RESPONSE_RESULT_ITEM_NOT_OWNED| 8 | Не удалось потратить деньги, так как товар ещё не принадлежит пользователю.


=================Часто задаваемые вопросы=================

  1. Сбой инициализации, код ошибки:3, это проблема с платёжной средой.

Возможные причины: используется эмулятор, устаревшая версия «три в одном», приложение не настроено (подключено к сервису Google, имеет разрешения на оплату), VPN-регион не поддерживается.

Решение: а) Сначала проверьте среду. Загрузите из магазина приложение с покупками внутри приложения и посмотрите, можно ли совершить покупку. б) Если покупка прошла успешно, попробуйте снова протестировать своё приложение, чтобы убедиться, что платёжная среда работает правильно.

  1. Можно запросить цену, но нельзя совершить покупку, появляется сообщение «Товар нельзя купить».

Это проблема базовой конфигурации, возможны следующие причины: версия не соответствует онлайн-версии, используется тестовый аккаунт (скорее всего), подпись не совпадает.

  1. Можно запрашивать цену, но невозможно вызвать платёж, нет всплывающего окна, код ошибки: 3, ошибка: Error:In-app billing error: Null data in IAB activity resul.

Причина в том, что у приложения нет разрешения на всплывающие окна от Google Play Store. Многие мобильные устройства, особенно Xiaomi, имеют управление разрешениями для всплывающих окон, и если они не разрешены, никаких подсказок не будет, и они будут заблокированы. (Эта проблема больше не существует в новой версии GP Store.)

  1. Всплывающее окно с уведомлением о покупке успешно, но вызывается onQueryFail, и возвращаемый список товаров равен нулю.

Это связано с тем, что вы неправильно используете метод, помните, что purchaseInApp — это покупка, а purchaseSubs — подписка. То же самое относится и к запросу. Кроме того, при запросе ошибка, скорее всего, связана с тем, что вы передали пустую строку вместо пустого массива при настройке SKUS.

  1. Возвращаемый список товаров при запросе имеет длину 0.

При настройке SKUS параметры для покупки внутри приложения и подписки были перепутаны, должно быть: первый — покупка внутри приложения, второй — подписка.

Или товар ещё не был успешно опубликован, необходимо подождать некоторое время (очень вероятно, новые товары не отвечают ни на какие запросы или покупки, пока Google не обработает их).

  1. Мы обнаружили, что ваше приложение использует старую версию Google Play Developer API. С 1 декабря 2019 года мы больше не будем поддерживать версии 1 и 2 этого API. Пожалуйста, обновите API до версии 3 до этой даты. Обратите внимание, что это изменение не связано с отказом от AIDL/платёжной библиотеки.

Перейдите на com.android.billingclient:billing, откажитесь от использования кода, связанного с AIDL.

Также необходимо отказаться от использования v3 проверочных интерфейсов в бэкэнде. Подробности см. в официальной документации Google.


=================API-интерфейсы=================

  1. Инициализация службы покупки внутри приложения Google.
// Установка идентификаторов покупки внутри приложения (inAppSKUS) и подписки (subsSKUS), используемых для автоматического запроса и т. д.
public static void setSkus(@Nullable String[] inAppSKUS,@Nullable String[] subsSKUS);

// Получение синглтона, используемого глобально.
public static GoogleBillingUtil getInstance();

// Инициализация сервиса, создание соединения, используется глобально.
public GoogleBillingUtil build;

// Создание соединения, уже включено в build, используется для специального пользовательского переподключения.
public boolean startConnection(Activity activity);
  1. Запрос информации о товарах.
// Запрос информации о товаре для покупки внутри приложения (цена и т.д.).
public void queryInventoryInApp(Activity activity);

// Запрос информации о подписке (цена и т.д.).
public void queryInventorySubs(Activity activity);
  1. Покупка товаров.

// Покупка внутри приложения.
public void purchaseInApp(Activity activity, String skuId);

// Подписка.
public void purchaseSubs(Activity activity,String skuId);
  1. Потратить товары.
// Потратить товар через purchaseToken.
public void consumeAsync(Activity activity,String purchaseToken);

// Потратить товар по массиву sku.
public void consumeAsyncInApp(Activity activity,@NonNull String... sku);

// Потратить товар по списку sku.
public void consumeAsyncInApp(Activity activity,@NonNull List<String> skuList);
  1. Локальный запрос заказа (запрос кеша GP, низкая актуальность).
// Получить купленные товары.
public List<Purchase> queryPurchasesInApp(Activity activity);

// Получить товары по подписке.
public List<Purchase> queryPurchasesSubs(Activity activity);
  1. Онлайн-запрос заказа (синхронизация с сетью, высокая актуальность, но все заказы).
// Асинхронный сетевой запрос всех заказов на покупку внутри приложения — независимо от того, истек ли срок действия, отменён и т. д.
public void queryPurchaseHistoryAsyncInApp(Activity activity);

// Асинхронный сетевой запрос всей истории подписки — независимо от того, истёк ли срок действия, отменена и т. д.
public void queryPurchaseHistoryAsyncSubs(Activity activity);
  1. Набор инструментов.
// Количество активных подписок.
public int getPurchasesSizeSubs(Activity activity);

// Позиция товара по sku для покупки внутри приложения.
public int getInAppPositionBySku(String sku);

// Позиция товара по sku для подписки.
public int getSubsPositionBySku(String sku);

// Sku по позиции для подписки.
public String getSubsSkuByPosition(int position);

// Sku по позиции для покупки внутри приложения.
public String getInAppSkuByPosition(int position);

// Тип товара по sku.
public String getSkuType(String sku);
  1. Другие методы.
// Готов ли сервис покупки внутри приложения?
public static boolean isReady();

// Автоматическое потребление товаров для покупки внутри приложения?
public static void setIsAutoConsumeAsync(boolean isAutoConsumeAsync);

// Отключить соединение с сервисом Google (не рекомендуется использовать часто).
public static void endConnection();
  1. Слушатели.
// Добавить слушателя.
public GoogleBillingUtil addOnGoogleBillingListener(Activity activity,OnGoogleBillingListener onGoogleBillingListener);

// Удалить слушателя.
public void removeOnGoogleBillingListener(OnGoogleBillingListener onGoogleBillingListener);

// Удалить всех слушателей с определённой страницы.
public void removeOnGoogleBillingListener(Activity activity); // Удалить внутренние прослушиватели покупок, чтобы предотвратить утечку памяти — вызвать в методе `onDestroy` класса `Activity`.

public void onDestroy(Activity activity) {

}

Комментарии ( 0 )

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

Введение

На основе com.android.billingclient:billing:1.2 производится упаковка всего процесса оплаты. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/tjbaobao-GoogleBilling.git
git@api.gitlife.ru:oschina-mirror/tjbaobao-GoogleBilling.git
oschina-mirror
tjbaobao-GoogleBilling
tjbaobao-GoogleBilling
master