Несовместимо - «Идентификатор проекта, используемый для вызова API разработчика Google Play, не был связан в консоли разработчика Google Play». - PullRequest
0 голосов
/ 07 сентября 2018

Так вот в чем дело - у меня есть серверный узел node.js для моего приложения для Android. Я использую платежную библиотеку Google Play и проверяю покупку с помощью бэкенда, как рекомендуют Документы Google.

Теперь все остальные ответы об этой ошибке, похоже, относятся к постоянной проблеме.

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

Я пробовал две разные сторонние библиотеки, и у меня та же проблема. Иногда один из них ответит успешным подтверждением, а другой скажет, что моя учетная запись не связана. Иногда они оба отрицательны, иногда оба положительны.

Кажется противоречивым.

var platform = 'google';
        var payment = {
            receipt: purchaseToken, // always required  ... this is google play purchaseToken
            productId: subID,  // my subscription sku id
            packageName: 'com.xxxxxx', // my package name
            keyObject: key,  // my JSON file
            subscription: true, // optional, if google play subscription

        };



   var promise2 = iap.verifyPayment(platform, payment, function (error, response) {
        /* your code */
        if (error) {
            console.log('error with iap, ' , error);
            return true;
        } else {
            console.log('success with iap, response is: ', response);
            return true;
        }
    });

Я тоже пробовал с другой библиотекой, получил те же результаты:

var receipt = {
            packageName: "com.xxxx",
            productId: subID,  // sku subscription id
            purchaseToken: purchaseToken // my purchase token
            };

            var promise = verifier.verifySub(receipt, function cb(err, response) {
                if (err) {
                    console.log('within err, was there a response? : ', response); 
                console.log('there was an error validating the subscription: ', err);
                //console.log(err);
                return true;
                } else {
                console.log('sucessfully validated the subscription');
                // More Subscription info available in “response”
                console.log('response is: ', response    );
                return true;
                }
               });


// return promises later.

Кто-нибудь еще сталкивался с этой проблемой?

1 Ответ

0 голосов
/ 12 сентября 2018

TLDR; Создайте новый идентификатор продукта.

Я в конце концов нашел ответ. Проблема была не в моем коде, не в разрешениях в консоли разработчика Google ИЛИ в консоли Google Play. Все было настроено правильно, кроме одной вещи.

Ранее, перед настройкой тестовых учетных записей в Google Play Console, я совершил фактическую покупку по подписке с реальными деньгами на свой идентификатор продукта "X".

Затем, после добавления той же учетной записи Google, которая приобрела подписку в качестве тестового пользователя, я продолжил тестировать результаты для той же подписки, productID "X".

Несмотря на то, что я отменил РЕАЛЬНУЮ покупку, фактическая дата истечения срока была не для другого месяца.

Поэтому я считаю, что иногда Google путался, когда я покупал / отменял покупку - путая тестовую подписку с реальной подпиской.

Создание нового идентификатора продукта и только его использование решило мою проблему, и покупки были проверены последовательно.

...