Android inApp购买收据验证Google Play:Redux

时间:2020-09-07 02:07:58

标签: android google-api-java-client google-play-billing

A),我需要在服务器上编写代码以验证Android inApp购买收据。看起来好像是通过Google Play完成的。大致来说,我需要googleapis/google-api-java-client来做到这一点。

现在,我一直在梳理文档和SO问题。但是我仍然不清楚如何做到这一点。这个问题(Android:inApp购买收据验证Google Play 1 2)是我最明确的解释(purchases.products.getpurchases.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."
}

我确定

  • i)范围还可以,
  • ii)服务帐户密钥很好。

但是这些值好吗?如果没有,我在哪里可以得到良好的测试值?

  • packageName(实际名称来自Google Play控制台)
  • purchaseToken(我可以在哪里获得测试的purchaseToken)

0 个答案:

没有答案