2014-02-13 52 views
8

我有一個web Api,它需要驗證Play商店中的購買。根據我在google api文檔中讀到的內容,我需要有一個服務帳戶,並使用其憑證進行身份驗證,以便能夠執行我想要的操作。 我有以下代碼:嘗試在.Net Web API中從Android Publisher服務中購買產品時出錯

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(); 

它拋出以下異常

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

我有什麼可以導致它不知道。我搜查了很多,但我沒有找到真正有用的東西。任何形式的幫助將非常感激。

+0

我有與測試購買相同的問題。網址如下所示:https://www.googleapis.com/androidpublisher/v1.1/applications/com.example.app/inapp/exampleSku/purchases/rojeslcdyyiapnqcynkjyyjh?access_token=[your_access_token_here]。不知道什麼是錯的,但測試購買。 – Swayok

+0

同樣在這裏,陷入同樣的​​問題其他錯誤雖然 – itay83

+0

如果你的錯誤是被禁止的,解決方案是在這裏:http://stackoverflow.com/questions/22471433/service-account-403-forbidden-google-play-in- app-billing-purchase-status-api – rouen

回答

3

我知道這個問題「有點」舊了,但我仍想嘗試回答澄清。

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

我的猜測是,這部分是不完全正確。購買類沒有Get方法。在此之前,你必須指定是(你的情況): service.Purchases.Products.Get(...) - >對於消費類產品

service.Purchases.Subscriptions.Get(...) - >訂閱費

這個答案假定您正在使用V2。希望它能幫助任何被卡住的人。

+0

非常感謝! – dit

相關問題