Google Play In-app Billing API version is less than 3

有一段時(shí)間沒(méi)寫文章了,今天分享一個(gè)最近遇到的坑。先說(shuō)結(jié)論,賬號(hào)問(wèn)題,不是代碼問(wèn)題。

最近在做海外版App的時(shí)候有個(gè)需求是接入Google支付,接入支付SDK后,“有些手機(jī)”當(dāng)嘗試通過(guò)SDK連接到Google Play中的支付服務(wù)時(shí),即以下代碼片段:

billingClient.startConnection(new BillingClientStateListener() {
            @Override
            public void onBillingSetupFinished(BillingResult billingResult) {
                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                    // The BillingClient is ready. You can query purchases here.
                }
            }

            @Override
            public void onBillingServiceDisconnected() {
                // Try to restart the connection on the next request to
                // Google Play by calling the startConnection() method.
            }
        });

報(bào)了一個(gè)錯(cuò)誤:Google Play In-app Billing API version is less than 3。

  1. 看到這個(gè)錯(cuò)誤的時(shí)候,第一反應(yīng)是Google Play的版本太低,導(dǎo)致里面的支付協(xié)議版本比較低,可是很快這個(gè)猜想被否定了,因?yàn)橥粋€(gè)版本的Google Play在別的手機(jī)上可以正常購(gòu)買。
  2. 接著開(kāi)始懷疑是Google Play是不是依賴了某個(gè)Google服務(wù)比較舊,畢竟Google有各種基礎(chǔ)服務(wù),但是這個(gè)服務(wù)是什么,應(yīng)該改如何升級(jí)?

沒(méi)轍了,那就先上搜索引擎找找,看看有沒(méi)有別人踩過(guò)這個(gè)坑。Google搜了,基本也沒(méi)啥結(jié)果,唯一有用的兩個(gè)帖子:

  1. https://stackoverflow.com/questions/56479824/google-play-in-app-billing-api-version-is-less-than-3
  2. https://github.com/android/play-billing-samples/issues/256

但是這個(gè)兩個(gè)帖子并沒(méi)有給出解決方案,于是這個(gè)事就進(jìn)入了僵局,先這樣,可能那個(gè)手機(jī)有毒,畢竟手上的手機(jī)都是國(guó)內(nèi)的手機(jī),Google的服務(wù)從來(lái)都是被閹割了的(想甩鍋)。先放一放,喝口茶。

后來(lái),另外一個(gè)后端同事的手機(jī)要做測(cè)試,剛好他的手機(jī)也報(bào)這個(gè)錯(cuò)誤,然后他登錄了賬號(hào),居然不報(bào)錯(cuò)了。這就奇了怪了,難道是登錄了有些東西被升級(jí)了?即便是那又是升級(jí)了啥?

后來(lái)陰差陽(yáng)錯(cuò),總結(jié)出來(lái)的一個(gè)結(jié)論:登錄Google Play的賬號(hào)如果是中國(guó)區(qū),那就會(huì)報(bào)這個(gè)錯(cuò)誤。至于為什么我就不好猜想了,反正感覺(jué)挺惡心,不給一個(gè)像樣一點(diǎn)的提示,不知道是否涉及政治問(wèn)題。這里面還有一個(gè)坑,發(fā)現(xiàn)Google Play登錄過(guò)其他的中國(guó)區(qū)賬號(hào),再切換回美國(guó)地區(qū)的賬號(hào),還是報(bào)這個(gè)錯(cuò),必須到手機(jī)的設(shè)置中心中把其他的Google賬號(hào)移除掉(手機(jī)設(shè)置中心里面有個(gè) “賬號(hào)”的選項(xiàng),可以移除登錄過(guò)的Google賬號(hào),每個(gè)手機(jī)位置可能不太一樣)。

所以最終的結(jié)論是:不是手機(jī)的的問(wèn)題,而是該手機(jī)登錄Google賬號(hào)的問(wèn)題,或者說(shuō)是Google賬號(hào)的歸屬地問(wèn)題,至于哪些地方不能使用,我沒(méi)有足夠的賬號(hào)數(shù)據(jù)支撐。或許咱們能做的是在產(chǎn)品角度,給出相應(yīng)提示,例如更換賬號(hào)啥的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容