这就是问题-我的Android应用程序有一个node.js后端服务器。我正在使用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.
还有其他人遇到此问题吗?
答案 0 :(得分:7)
我终于找到了答案。问题不在于我的代码,也不在于Google Developer Console或Google Play Console中的权限。除了一件事情,一切都设置正确。
以前,在Google Play控制台中设置测试许可帐户之前,我已经用我的商品ID“ X”中的真实货币进行了实际的订购购买。
然后,在添加了以测试用户身份购买了该订阅的Google帐户之后,我继续测试了同一订阅(产品ID为“ X”)的结果。
即使我取消了REAL购买,实际的到期日期也不是另一个月。
因此,我相信有时我会在购买/取消购买交易时感到困惑-将测试订阅与真实订阅相混淆。
创建一个新的产品ID(仅使用它)可以解决我的问题,并且所购买的商品始终得到验证。