从C#获取Google Play物品的购买/消费状态

时间:2020-10-15 00:53:49

标签: c# google-api google-oauth google-api-dotnet-client service-accounts

我正在尝试获取用户通过其应用购买的微交易的购买/消费状态。用户授权它,并给我的服务器一个令牌,以知道该事务已被处理,现在我需要仔细检查它是否已经完成。为此,我认为我应该使用purchases.products.get,其Rest API建议我设置OAuth。对于服务器之间的通信,文档建议我使用Service Account,建议我使用Google API来处理JWT签名。

问题是我不知道如何从C#服务器设置purchases.products.get请求。根据文档,我需要为要调用的API(service object)创建一个AndroidPublisherServiceFrom browsing the API,看来我可以创建GetRequest,它是带有正确参数的对象...但是如何实际将其发送给Google并获得响应?

var credential = GoogleCredential.FromFile(CRED_FILENAME);
var service = new AndroidPublisherService(
    new Google.Apis.Services.BaseClientService.Initializer
    {
        HttpClientInitializer = credential,
        ApplicationName = "UnityIAPTransactionHandler"
    });

// What do I do with this???
new PurchasesResource.ProductsResource.GetRequest(service, PACKAGE_NAME, @"com.appname.coin_12000", @"Test");

1 个答案:

答案 0 :(得分:0)

找到它:它不是Service上的函数,而是在新形成的请求对象上。我的代码现在看起来像这样:

var credential = GoogleCredential.FromFile(CRED_FILENAME);
service = new AndroidPublisherService(
    new Google.Apis.Services.BaseClientService.Initializer
    {
        HttpClientInitializer = credential,
        ApplicationName = "UnityIAPTransactionHandler"
    });

var request = new PurchasesResource.ProductsResource.GetRequest(service, PACKAGE_NAME, @"com.astatos.coin_12000", @"Test");
var purchase = request.Execute();

它执行!尽管现在我必须找出其他错误,但我希望这也对其他人有所帮助。