2014-02-13 4 views
8

Ich habe eine Web-API, die Käufe im Play Store validieren muss. Laut dem, was ich in der Google API-Dokumentation gelesen habe, muss ich ein Dienstkonto haben und seine Anmeldeinformationen verwenden, um authentifiziert zu werden, um zu können, was ich möchte. Ich habe den folgenden Code:Fehler beim Versuch, Käufe über den Android Publisher-Dienst in einer .Net-Web-API zu erhalten

String serviceAccountEmail = "[email protected]"; 

var certificate = new X509Certificate2(@"C:\privatekey.p12", "notasecret", X509KeyStorageFlags.Exportable); 

ServiceAccountCredential credential = new ServiceAccountCredential(
    new ServiceAccountCredential.Initializer(serviceAccountEmail) 
      { 
       Scopes = new[] { "https://www.googleapis.com/auth/androidpublisher" } 
      }.FromCertificate(certificate)); 

// Create the service. 
var service = new AndroidPublisherService(new BaseClientService.Initializer() 
     { 
      HttpClientInitializer = credential 
     }); 
var data = service.Purchases.Get("MYPACKAGE", "MYPRODUCT", 
      "MYTOKEN") 
      .Execute(); 

Es wirft die folgende Ausnahme

Google.Apis.Requests.RequestError 
Invalid Value [400] 
Errors [ 
Message[Invalid Value] Location[ - ] Reason[invalid] Domain[global] 
] 

Ich habe keine Ahnung von dem, was es kann verursacht werden. Ich habe viel gesucht, aber ich fand nichts wirklich Hilfreiches. Jede Art von Hilfe wird wirklich geschätzt.

+0

Ich habe das gleiche Problem mit Testkäufen. Url sieht so aus: https://www.googleapis.com/androidpublisher/v1.1/applications/com.example.app/inapp/exampleSku/purchases/rojeslcdyyiapnqcynkjyyjh?access_token=[Ihr_access_token_hier]. Habe keine Ahnung was falsch ist aber Testkauf. – Swayok

+0

gleich hier, in demselben Problem stecken andere Fehler obwohl – itay83

+0

Wenn Ihr Fehler verboten ist, ist die Lösung hier: http://StackOverflow.com/Questions/22471433/service-Account-403-forbidden-google-play-in- app-billing-purchase-status-api – rouen

Antwort

3

Ich weiß, dass diese Frage "ein wenig" alt ist, aber ich möchte immer noch versuchen, zur Klärung zu antworten.

var data = service.Purchases.Get("MYPACKAGE", "MYPRODUCT", 
      "MYTOKEN") 
      .Execute(); 

Meine Vermutung wäre, dass dieser Teil nicht ganz richtig ist. Die Käufe-Klasse verfügt nicht über eine Get-Methode. Zuvor müssen Sie angeben, entweder (in Ihrem Fall): service.Purchases.Products.Get(...) -> für Verbrauchsprodukte

service.Purchases.Subscriptions.Get(...) -> für Abonnements

Diese Antwort vorausgesetzt, dass Sie V2 verwenden. Hoffe es hilft jedem, der festsitzt.

+0

vielen dank! – dit

Verwandte Themen