有海外開發者向我們提問:我在應用中集成了華為應用內支付SDK(測試購買訂閱型商品),按照文件說明,在伺服器去請求驗證購買Token介面的時候返回了{"responseCode":"6","responseMessage":"rights invalid"}。此錯誤在文件FAQ中有提到:建議優先檢查獲取AccessToken時的appid和實際請求引數purchaseToken關聯的appid是否同一個。我只有一組專案,一組客戶端ID及客戶端祕鑰,因此按理說appid應該是相同的。我不知道是哪裡有問題? 我該怎麼配置。

問題詳情見連結:https://stackoverflow.com/questions/64613379/huawei-in-app-purchase-token-verification-unexpected-error-rights-invalid

解決方案

  1. 根據開發者提供的程式碼顯示他的介面用錯了,他使用的是Order服務購買Token校驗,應該使用Subscription服務驗證購買Token

Order服務購買Token校驗只針對非訂閱型商品,包括消耗型商品和非消耗型商品。應用可以呼叫本介面向華為支付伺服器校驗支付結果中的購買令牌,確認支付結果的準確性。

Subscription服務驗證購買Token只針對訂閱型商品。此介面用於校驗購買的商品,判斷商品是否已經成功購買,是否在有效期內。

Order服務驗證購買Token請求示例如下:

POST /applications/purchases/tokens/verify
Content-Type: application/json; charset=UTF-8
Authorization: Basic QVQ6Q1YzQ1NPbVlBaGwrZUtRWExtMTBVV2pyWXZHTVF4MmYvcVMya1B0ZElLY3UwaFJrdFNTMmxwdk1FQkIyYldXWGt0REVaR3I4UjFUTTRLMVlmNXdwWU80RG04THdXQWxjaFhEYjBMUjBNTUJtWnFYcGFtazc3THN3UnFJbkhHK28xekdqRzNSMg==
Accept: application/json
Content-Length: 143
{
"purchaseToken": "00000173741056a37eef310dff9c6a86fec57efafe318ae478e52d9c4261994d64c8f6fc8ea1abbdx5347.5.3089",
"productId": "prd1"
}

Subscription服務驗證購買Token請求示例如下:

POST /sub/applications/v2/purchases/get
Content-Type: application/json; charset=UTF-8
Authorization: Basic QVQ6Q1YzQ1NPbVlBaGwrZUtRWExtMTBVV2pyWXZHTVF4MmYvcVMya1B0ZElLY3UwaFJrdFNTMmxwdk1FQkIyYldXWGt0REVaR3I4UjFUTTRLMVlmNXdwWU80RG04THdXQWxjaFhEYjBMUjBNTUJtWnFYcGFtazc3THN3UnFJbkhHK28xekdqRzNSMg==
Accept: application/json
Content-Length: 171
{
"purchaseToken": "00000173741056a37eef310dff9c6a86fec57efafe318ae478e52d9c4261994d64c8f6fc8ea1abbdx5347.5.3089",
"subscriptionId": "1581789719266.D40972AC.3089"
}
  1. 訂閱商品的驗證如下:

引數:subscriptionId;purchaseToken

介面Url: {rootUrl}/sub/applications/v2/purchases/get

rootURL

中國站點: https://subscr-drcn.iap.hicloud.com

德國站點: https://subscr-dre.iap.hicloud.com

新加坡站點: https://subscr-dra.iap.hicloud.com

俄羅斯站點: https://subscr-drru.iap.hicloud.com

AppTouch 德國站點: https://subscr-at-dre.iap.dbankcloud.com

AppTouch新加坡站點: https://subscr-at-dra.iap.dbankcloud.com

上述介紹了App整合應用內支付SDK後驗證購買Token介面時返回“rights invalid”的解決方案,那麼有人可能要問了,華為應用內支付究竟是什麼呢?有什麼功能?

關於HMS IAP Kit

華為應用內支付服務(In-App Purchases,IAP)為APP提供便捷的應用內支付體驗和簡便的接入流程。App通過整合IAP SDK,再呼叫IAP SDK介面啟動IAP收銀臺,即可實現應用內支付。聚合多種支付通道,支援全球支付,為應用提供便捷的應用內支付體驗,通過應用內支付服務,使用者可以在應用內購買各種型別的商品或服務,包括普通虛擬商品和訂閱商品服務,助力開發者的商業變現。

快速體驗華為應用內支付服務教程和開發例項請參見快速入門指南

Stack Overflow 與HMS

作為全球最大的程式設計問答社群,Stack Overflow上每天都會有來自全球各地不同國家的開發者在上面提問各種程式設計問題。我們也在Stack Overflow上開了專欄:Stack Overflow 歡迎大家在上面提問在整合HMS Core過程中遇到的各種程式設計問題。

欲瞭解更多詳情,請參閱:

華為應用內支付服務官網

應用內支付開發指南

示例程式碼

華為移動服務開源倉庫地址:GitHubGitee

關注我們,第一時間瞭解 HMS Core 最新技術資訊~