如何使用python中的收据验证google play商店中的订阅



我需要验证从android应用程序收到的收据。我尝试过使用python包pyinapp来验证应用内购买,但最终得到了一个";坏签名";validator.validate(receipt, signature):错误

from pyinapp import GooglePlayValidator, InAppValidationError
bundle_id = "com.yourcompany.yourapp"
api_key = "API key from the developer console"
validator = GooglePlayValidator(bundle_id, api_key)
receipt = json.dumps(
{
"orderId": "GPA.3371-6663-9953-88022",
"packageName": "com.yourcompany",
"productId": "com.yourcompany.basic.five.annually",
"purchaseTime": 1617944948660,
"purchaseState": 0,
"purchaseToken": "fkefffonlgkfapblnahlokjp"
".AOJ1OzvaGGwTt24bMs47c98hpPQI62qdITM"
"-uphoHzK4HQkW5locx9xDILRasO7eQTTRoGr0LwyflO2mqvnfn0fNVkZ0ipPgQ",
"autoRenewing": true,
"acknowledged": true,
}
)
signature = ""  # (signature from android app)
purchases = validator.validate(receipt, signature)
process_purchases(purchases)

我使用过google-api-python-client==2.1.0:

from google.oauth2 import service_account
from app.settings import GOOGLE_PLAY_STORE_KEY
import googleapiclient.discovery

def validate_subscription_in_google_play_store(subscription, token):
credentials = service_account.Credentials.from_service_account_file(
GOOGLE_PLAY_STORE_KEY
)
response = (
googleapiclient.discovery.build(
"androidpublisher", "v3", credentials=credentials
)
.purchases()
.subscriptions()
.get(packageName="com.abc", subscriptionId=subscription, token=token)
.execute()
)
return response

最新更新