接入HMS Core應用內支付服務過程中一些常見問題總結

2023-03-21 12:02:20

華為HMS Core應用內支付服務(In-App Purchases,IAP)為應用提供便捷的應用內支付體驗和簡便的接入流程。該服務支援使用者端和伺服器端兩種開發形式,具體可以參考官方檔案

往期文章:常見問題總結(2)中分享總結了有關無法拉起支付頁面的常見問題,本文將對近期開發者們較為關注的一些整合應用內支付服務過程中的問題進行彙總,並提出解決方案。

問題1:開發者聯盟支付卡片中的支付公鑰(路徑:開發者聯盟>管理中心>支付>獲取支付資訊)和應用內支付中設定的公鑰(路徑:開啟專案 >左側導航欄「盈利 > 應用內支付服務」)有什麼區別嗎?

問題根因:

為了防止返回結果被篡改,提高安全性和可靠性,支付結果必須要對簽名字串使用IAP公鑰進行驗籤,由於VR支付目前還使用2.0的支付介面,所以仍然會使用開發者聯盟支付卡片中的支付公鑰。

應用內支付中設定的公鑰(路徑:開啟專案 >左側導航欄「盈利 > 應用內支付服務」,若「IAP」頁籤顯示未生成IAP支付公鑰,點選「設定」生成IAP支付公鑰。)主要用於4.0的支付介面,而4.0的介面是目前常用介面。

問題2:華為應用內支付回撥請求為空,沒有任何有效使用者資訊。

問題背景:

使用者訂閱了會員包年,但後臺沒有自動發貨,點選了訂單中的【補發】按鈕,重新發起了支付回撥,但資料無效,然後開發者CP改成了測試介面,列印出了所有華為支付回撥的請求內容,發現請求正文為空字串,沒有任何有效使用者資訊。

「我是在支付報表點選的補單按鈕。行動端接入的HMS版本是6.4.0.301。你說HMS4.0的訂單,我們不會收到支付成功回撥,但我這邊點補發收到了一個空白回撥,這是正常的嗎?另外,我們的訂閱回撥介面之前是發生異常也返回200,所以可能在華為IAP伺服器這邊認為應用方已經發貨了,這種情況,使用者使用者端再啟動應用還能觸發補單嗎?」

原因分析:

根據官方的FAQ檔案,對於HMS4.0訂單,點選補發,觸發華為支付伺服器向華為IAP伺服器傳送支付成功回撥,您不會接到支付成功回撥。

在支付報表點選的補單按鈕,收不到支付成功的回撥通知,如果點選補發,收到一個訊息體為空的的回撥,並不能作為依據對問題進行分析定位,所以可以忽略。

解決方案:

補單分為使用者端補單和伺服器端補單,只有消耗性商品才有補單流程,使用者端補單需要您在使用者端中觸發補單,比如應用啟動的時候;如果有異常,會返回返回-1,60051,1等錯誤碼場景,從而需要觸發補單機制;具體可以參考檔案

對於訂閱型商品,一般我們使用的是訂閱關鍵事件的通知,請參考檔案

關於訂閱回撥介面之前是發生異常時也返回200,可能在華為IAP伺服器這邊認為應用方已經發貨了的情況,不存在這種情況,如果有這種情況,請提供對應的訂單號,我們將對該訂單進行分析。

問題3:我9月份提交的結算申請,現在還沒到賬,請問收益結算什麼時候到賬?

問題背景:

CP反饋9月份提交的結算申請,結算單中的結算狀態顯示都是在"付款中",但是現在還沒到賬,不知道具體是卡在什麼地方。

原因分析:

根據官方檔案,如對結算資料無異議,點選「確認結算單」提交結算申請,並核對申付金額及收款銀行等資訊無誤後,點選「提交」,提交後將無法取消。如需多個結算單合併開票,請確認同一個合同、同一業務型別相同的結算單方可進行合併開票。

解決方案:

也就是說,只要確認結算單了,付款狀態都是在付款中,但是CP需要先開票(也可以合併開票)才能結算,按照確認的結算單金額開具發票,合併開票需將所選結算單中的「結算彙總資訊-結算金額」加總,注意金額與發票金額要完全一致,不能有差異。

具體詳情請您參考開發者聯盟關於自主結算指南的官方檔案進行相關操作。

4. 聯盟官方檔案,AppGallery站點老域名以及使用的加密套件將會逐漸下線,是否有更詳細的操作檔案可供開發者參考?

問題背景:

根據官方檔案說明,為了增強您的應用的安全性和可靠性,HUAWEI IAP更新了URL,並提高了對TLS版本和密碼套件的要求。出於安全考慮,從2023年4月起,HUAWEI IAP將不再支援1.2以下的TLS版本和規定之外的加密套件支援。AppGallery站點使用的老域名後續也會下線。

解決方案:

目前暫時沒有相關指導檔案,這些是標準的網路套件和協定,但是可以參考官方釋出的伺服器多語言演示demo。

詳情可以參考官方Demo

替換域名的具體操作請參見官方範例程式碼,將對應區域的舊域名替換為最新的域名。例如,需要上架中國站點APPGallery 應用市場,Order服務驗證購買token介面需要將之前的 https://orders-at-dre.iap.dbankcloud.com 替換為中國站點:https://orders-drcn.iap.cloud.huawei.com.cn

詳情請參考開發者聯盟官方檔案

5. 華為訂閱返回資料中的expirationDate欄位,和使用者到期後下次扣費的時間是一致的嗎?

問題背景:

「我想問一下華為訂閱返回資料中expirationDate欄位,和使用者到期後下次扣費的時間是一致的嗎?使用者 2021年12月5日付費年訂閱產品,實際於2022年12月4日進行了自動續費扣款,但是華為在2021年支付成功後返回的字所expirationDate,轉換時間戳後是2022年12月8日到期,請問是華為針對訂閱產品會提前扣費嗎?還是expirationDate並不等同於下次扣款時間 ? 如果需要知道精確的下次扣款時間, 應該取什麼欄位呢?」

原因分析:

如下是官方檔案對InAppPurchaseData中的expirationDate欄位的解釋說明:

根據IAP的的扣費規則,會提前24小時開始嘗試扣費,使用者是在2021年12月5日付費年訂閱產品到期,那麼在訂閱週期結束前24小時,即12月4號扣費是沒有問題的,華為IAP會嘗試向用戶發起扣款以完成訂閱型商品的續期。若扣費失敗,華為IAP會在一定期限內重複嘗試扣費,若失敗次數過多,最終會停止重試。

解決方案:

expirationDate欄位並不等同於下次扣款時間,而是當前訂閱的過期時間,IAP支付伺服器當前沒有返回下次扣款時間,也不會有精準的扣款時間,一般都是顯示訂閱的續期時間或者會比續期時間稍長,但是不會相差很大。

如果訂閱的續期時間和實際顯示的expirationDate相差很大,需要CP提供訂單號或者訂閱id等資料進

瞭解更多詳情>>

存取華為開發者聯盟官網
獲取開發指導檔案
華為移動服務開源倉庫地址:GitHubGitee

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