使用购买令牌对Playstore应用内购买实施收据验证

时间:2020-11-10 04:49:21

标签: php google-api in-app-purchase google-play-developer-api

我正在使用store receipt validator库来进行验证。

该库使用google-purchase-api,但根据响应正文,我没有得到任何东西,大多数字段值为null

这是我的代码段

       $googleClient = new \Google_Client();
        $scope = ['https://www.googleapis.com/auth/androidpublisher'];
        $googleClient->setApplicationName('Bullet Force');
        $googleClient->setScopes([\Google_Service_AndroidPublisher::ANDROIDPUBLISHER]);
        $pathToServiceAccountJsonFile = json_decode(Storage::disk('local')->get('keys/privateKey.json'), true);
        $googleClient->setAuthConfig($pathToServiceAccountJsonFile);
        $validator = new PlayValidator(new \Google_Service_AndroidPublisher($googleClient));

        // receipt data
        $packageName = 'xxx.xxxxxxxxxx.xxx';
        $productId = 'xxxx';
        $purchaseToken = 'PURCHASE_TOKEN';

        try {
            $response = $validator->setPackageName($packageName)
              ->setProductId($productId)
              ->setPurchaseToken($purchaseToken)
              ->validatePurchase();
        } 
        catch (\Exception $e){
            echo $e->getMessage().PHP_EOL;
        }

回复: response-validator-script

因此,正如我们在上述响应中看到的那样,没有参数可用来确定该交易是否有效。

请帮助我解决此问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

不知道为什么obfuscatedExternalAccountId之类的字段为空。我使用Firebase身份验证,因此添加了用户的唯一ID作为此标识符,并通过此link和堆栈中的answer进行了验证。我发现这很有帮助。