【FAQ】應用內支付服務無法拉起支付頁面常見原因分析和解決方法

来源:https://www.cnblogs.com/hmscore/archive/2022/07/21/16500849.html
-Advertisement-
Play Games

華為應用內支付服務(In-App Purchases)通過簡便的接入流程為用戶提供良好的應用內支付體驗,然而在實際接入過程中,有一些開發者反饋測試時會無法正常拉起支付頁面,下文將詳細分析問題出現的5種情形,並給出解決方案,希望給遇到類似問題的開發者提供參考。 情形1:AGC控制臺上API管理中的支付 ...


華為應用內支付服務(In-App Purchases)通過簡便的接入流程為用戶提供良好的應用內支付體驗,然而在實際接入過程中,有一些開發者反饋測試時會無法正常拉起支付頁面,下文將詳細分析問題出現的5種情形,並給出解決方案,希望給遇到類似問題的開發者提供參考。

情形1:AGC控制臺上API管理中的支付API已打開,創建的商品也生效了,但查看日誌發現報錯60002

原因分析:對IAP的請求結果驗簽時需要使用支付公鑰,進行SHA256WithRSA簽名校驗,此公鑰開發者未配置。

解決方法:請仔細檢查以下三點是否設置:

(1)API管理中支付API已打開(註意:用戶在開通IAP服務,半個小時左右才起效)
詳情可參考官方文檔

(2)確保公鑰開關激活打開,且公鑰使用正確

(3)在AGC後臺PMS(商品管理系統)上配置了相應類型的商品,並激活成功

情形2:開發者進入會員中心編輯訂閱頁面,顯示異常,報錯60051

查看官網文檔,錯誤碼60051表示已購買型商品或者訂閱型商品,不能再次購買;

原因分析

復現問題時我們發現,訂閱完成返回會員中心有個刷新動作,在刷新前點擊訂閱會異常,刷新後點擊就是正常的。這是因為如果沒有刷新或者刷新不及時,會存在上一次的緩存數據。在點擊一個訂閱商品之後,立即再點擊訂閱另一個商品的時候,會把首次訂閱的商品id帶入,但該id並不是最新購買的訂閱商品id,從而造成數據的不匹配,最終導致報錯,無法顯示編輯頁面。

解決方法

建議開發者對頁面效果刷新時機進行優化處理,避免未刷新就去續費。

情形3:使用華為手機進行支付調試的時候報錯60003,但PMS系統中商品ID配置未發現問題。

原因分析:首先報錯60003一般是在PMS系統中的商品信息配置有問題,可以到AGC網站後臺,在我的應用->運營-> 商品管理->商品列表 ,查看對應商品是否存在或者必填的信息是否正確完整(例如商品名稱,商品ID,價格,商品類型,是否激活)。

另外可以檢查商品ID是否在客戶端代碼中填寫正確,是否與AGC後臺的商品ID保持一致,請重點檢查客戶端代碼中傳入的欄位是否有問題。

還有一點需要註意的是在設備上登錄的華為賬號的服務地點是否在IAP覆蓋的範圍內。可以通過調用Task isEnvReady()介面判斷當前設備登錄的帳號所在的服務國家/地區是否在華為IAP支付服務支持結算的國家/地區中。

解決方案

經過CP排查發現是客戶端端代碼傳入的商品ID和AGC後臺配置的商品ID不一致,修改後問題已解決。

情形4:調用支付拉起收銀台介面,第一次成功拉起成功支付頁面,然後點擊取消返回,第二次再繼續調用該介面為什麼無法拉起支付頁面 ?

原因分析:購買消耗性商品後,必須要先完成商品消耗,之後才能再次購買,否則會報錯60051等錯誤碼。

解決方法:對於消耗性商品進行補單操作

開發者需要在以下這四種場景下觸發補單機制:

· 應用啟動時

· 購買請求返回-1(OrderStatusCode.ORDER_STATE_FAILED)時

· 購買請求返回60051(OrderStatusCode.ORDER_PRODUCT_OWNED)時

· 購買請求返回1(OrderStatusCode.ORDER_STATE_DEFAULT_CODE)時

如果IAP 後臺配置的退款回調地址錯誤,需要重新配置。具體可參考文檔

除了無法拉起支付頁面的問題以外,如何確認是否進入沙盒環境也是一個常見的問題。

情形5:使用沙盒帳號測試,沒有彈出沙盒環境端側提示彈框,如何確認是否進入沙盒環境?

原因分析:首先進入沙盒測試環境,正常情況下會提示以下彈框

但是在滿足了沙盒環境的2個必要條件後,仍然無法提示該對話框,是否表示沒有進入沙盒測試?

以下是開發者通過isSandboxActivated介面列印出的相關數據

從列印的日誌來看:滿足了沙盒環境2個必要條件。

  1. 當前登錄的華為帳號屬於沙盒帳號

  2. VersionCode大於應用市場線上版本(該APK暫未發佈應用市場,所以應用市場返回的版本號為0)

很明顯從結果來看理論上應該進入了沙盒測試環境。那麼有沒有其他方法來確認?

解決方法:是否成功進入沙盒環境,可以通過以下幾種方法排查

a) 查看返回的購買數據,參考下圖:

如果華為訂單號payOrderId以SandBox開頭,那麼錶面該筆訂單屬於沙盒測試產生的訂單。

b)查看支付報表

可以查看支付報表,如果支付報表沒有該筆訂單,說明該訂單來自於沙盒測試產生的。(註:支付報表數據不是實時更新的,如果當天購買的訂單,為了判斷準確性,可以次日再刷新該報表驗證)

c)清除HMS Core 緩存
可以嘗試清除HMSCore緩存,端側彈框是根據相應欄位標識進行判斷的,可能是緩存原因導致該值未及時刷新。可通過設置 –>應用和服務->應用管理->HMS Core 進行緩存清理。

瞭解更多詳情>>

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

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 六、DSL操作ES 6.1、RESTful風格介紹 REST(Representational State Transfer 表述性狀態轉移),是一組架構約束條件和原則,滿足這些約束條件和原則的應用程式或設計就是RESTful。就是一種定義介面的規範。有以下特征: 基於HTTP 可以使用XML格式定 ...
  • 一、ElasticSearch的倒排索引 1.1、資料庫存在的問題 問題1: 查詢title中包含"手機"的信息 SELECT * FROM goods WHERE title LIKE '%手機%' 使用模糊搜索,左邊有通配符,不會走索引,會全表掃描,性能低 問題2:查詢title中包含"我要買一 ...
  • 首先明確一下定義: 內連接:在多表查詢的時候,只檢索出表之間相互匹配的行(滿足匹配條件的行),結果中不包括兩個表之間不匹配的行。 一個不太準確但易懂的例子:比如有兩個表,表1存儲了 (1,2,3,4,5 )這五個數字。表2存儲了(3,4,5,6,7,8)這6個數字。多表查詢時兩個表的關聯條件是 “表 ...
  • 分享嘉賓:管正雄 阿裡雲 高級演算法工程師 出品平臺:DataFunTalk **導讀:**面對海量的用戶問題,有限的支持人員該如何高效服務好用戶?智能QA生成模型給業務帶來的提效以及如何高效地構建演算法服務,為業務提供支持。本文將介紹:阿裡雲計算平臺大數據產品答疑場景;基於達摩院AliceMind預訓 ...
  • 原文鏈接:當我們在聊「開源大數據調度系統Taier」的數據開發功能時,到底在討論什麼? 課件獲取:關註公眾號__ “數棧研習社”,後臺私信 “Taier”__ 獲得直播課件 視頻回放:點擊這裡 Taier 開源項目地址:github 丨 gitee 喜歡我們的項目給我們點個__ STAR!STAR! ...
  • Postico for Mac是Mac平臺上一款功能強大的PostgreSQL客戶端,Postico Mac版憑藉著簡單易用的操作界面深受專業人員和新手的喜愛。 詳情:Postico for Mac(超好用的PostgreSQL客戶端) 功能特色 1、查看你的資料庫,然後根據需要編輯 Postico ...
  • 本文包含SQL基礎語法、函數、索引、sql編程、事務、事務原則、備份恢復,許可權資料庫設計、三大範式、JDBC、SQL註入、資料庫連接池等所有知識都在這裡了 ...
  • 原文地址:Kotlin學習快速入門(8)—— 屬性委托 - Stars-One的雜貨小窩 委托其實是一種設計模式,但Kotlin把此特性編寫進了語法中,可以方便開發者快速使用 委托對應的關鍵字是by 屬性委托 先講下屬性委托吧,首先,複習下kotlin中設置set和get方法 預設的set和get我 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...