A),我需要在服务器上编写代码以验证Android inApp购买收据。看起来好像是通过Google Play完成的。大致来说,我需要googleapis/google-api-java-client来做到这一点。
现在,我一直在梳理文档和SO问题。但是我仍然不清楚如何做到这一点。这个问题(Android:inApp购买收据验证Google Play 1 2)是我最明确的解释(purchases.products.get
和purchases.subscriptions.get
)。但这是从2016年开始的。
但是关于如何获取access_token似乎没有明确的解释。 steps here似乎表示成功。但这看起来有点过时了,写于2012年。
在哪里有关于i明确步骤的地方。设置您的Google Play开发者帐户,并ii。生成测试和生产令牌以进行iii。验证Android inApp的购买和订阅?
B)(更新)
我还尝试使用Google Play客户端API(Clojure代码只是Java的超集)来完成此任务。
(do
(def packageName "foo.bar") <= is this right?
(def productId "product.id")
(def key "api-key.json") <= regenerated service account & keys
(def purchaseToken "inapp:foo.bar:android.test.purchased") <= is this right?
(def request-scope "https://www.googleapis.com/auth/androidpublisher") <= from https://developers.google.com/android-publisher/api-ref/rest/v3/purchases.products/get
(def httpTransport (GoogleNetHttpTransport/newTrustedTransport))
(def jsonFactory (JacksonFactory/getDefaultInstance))
(def credential (doto (GoogleCredential/fromStream
(-> (Thread/currentThread)
(.getContextClassLoader)
(.getResourceAsStream key)))
(.createScoped (Collections/singleton request-scope))))
(def publisher (.. (AndroidPublisher$Builder. httpTransport jsonFactory credential)
(setApplicationName packageName)
(build))))
(def result (.. publisher
(purchases)
(products)
(get packageName productId purchaseToken)
(execute)))
调用(.. publisher (purchases) (products) (get packageName productId purchaseToken) (execute);
会导致无效的作用域错误。
400 Bad Request
{
"error" : "invalid_scope",
"error_description" : "Invalid OAuth scope or ID token audience provided."
}
我确定
但是这些值好吗?如果没有,我在哪里可以得到良好的测试值?