国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

安卓集成Google Play支付(谷歌支付)最新版本

這篇具有很好參考價(jià)值的文章主要介紹了安卓集成Google Play支付(谷歌支付)最新版本。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Google Play 支付文檔:https://developer.android.com/google/play/billing/integrate

Google Play 支付庫已經(jīng)升級到5.0了,相對之前的版本有不少的變化,現(xiàn)在記錄下!

接入Google Play 流程還是和之前一樣:

1.去Google console 申請開發(fā)者賬號? https://play.google.com/console/??

2.創(chuàng)建項(xiàng)目,上傳APK

3.去Google console項(xiàng)目后臺開始設(shè)置商品:點(diǎn)擊左側(cè)Products---->In-app products(內(nèi)購商品)或者Subscription(訂閱商品)

安卓集成Google Play支付(谷歌支付)最新版本

?4.等Google Pay Console 后臺創(chuàng)建好商品后,客戶端和后端就可以開始集成了:

? 4.1:將 Google Play 結(jié)算庫依賴項(xiàng)添加到應(yīng)用的

dependencies {
    val billing_version = "5.0.0"

    implementation("com.android.billingclient:billing:$billing_version")
}

4.2:初始化支付SDK(也就是初始化BillingClient):支付過程中BillingClient用的比較多,一般項(xiàng)目中只創(chuàng)建一個(gè)BillingClient

private BillingClient billingClient = BillingClient.newBuilder(context)
    .setListener(purchasesUpdatedListener)
    .enablePendingPurchases()
    .build();

初始化的時(shí)候需要一個(gè):PurchasesUpdatedListener,PurchasesUpdatedListener是監(jiān)聽?wèi)?yīng)用中所有購買交易的更新,這個(gè)listener非常重要,當(dāng)用戶購買或者訂閱后都會(huì)走這個(gè)回調(diào)

private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
    @Override
    public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
        // To be implemented in a later section.
    }
};

4.3初始化SDK后,需要與 Google Play 建立連接,使用startConnection()方法,startConnection是異步進(jìn)行,這個(gè)時(shí)候需要一個(gè)BillingClientStateListener進(jìn)行回調(diào)連接的結(jié)果,當(dāng)連接完成會(huì)走onBillingSetupFinished()回調(diào),通過返回的billingResult.getResponseCode()去判斷是否真正的鏈接成功,這個(gè)code 有下面幾個(gè)值,這個(gè)BillingClientStateListener還有一個(gè)Google Play 失去連接的回調(diào),這個(gè)時(shí)候我們需要實(shí)現(xiàn)重試邏輯,就是再次調(diào)用startConnection()函數(shù)。

    @Retention(RetentionPolicy.SOURCE)
    public @interface BillingResponseCode {
        int SERVICE_TIMEOUT = -3;
        int FEATURE_NOT_SUPPORTED = -2;
        int SERVICE_DISCONNECTED = -1;
        int OK = 0;
        int USER_CANCELED = 1;
        int SERVICE_UNAVAILABLE = 2;
        int BILLING_UNAVAILABLE = 3;
        int ITEM_UNAVAILABLE = 4;
        int DEVELOPER_ERROR = 5;
        int ERROR = 6;
        int ITEM_ALREADY_OWNED = 7;
        int ITEM_NOT_OWNED = 8;
    }
  public void startConnection() {
        mBillingClient.startConnection(new BillingClientStateListener() {
            @Override
            public void onBillingSetupFinished(BillingResult billingResult) {
                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                    // The BillingClient is ready. You can query purchases here.
                    queryProductDetailsParams();
                    queryOldOrder();
                }
            }

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

?4.4 獲取商品

? ? ? 當(dāng)startConnection()回調(diào)成功時(shí),這個(gè)時(shí)候我們就可以根據(jù)ProductId去Google Play獲取具體的商品了,這個(gè)時(shí)候一般會(huì)通過API去自己的Server 獲取一個(gè)ProductIdList,然后根據(jù)后臺返回的productId去Google Play 獲取商品詳情。

查詢內(nèi)購的商品:

  List<String> skuList = new ArrayList<>();
        skuList.add("ProductId01");
        skuList.add("ProductId02");
        skuList.add("ProductId03");
        skuList.add("ProductId04");
        SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
        params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
        mBillingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {
            @Override
            public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) {
                // Process the result.
                Log.i(TAG, "querySkuDetailsAsync 1 onSkuDetailsResponse billingResult.getResponseCode : " + billingResult.getResponseCode() + " skuDetailsList :" + skuDetailsList);
                mInAppSkuDetailsHashMap.clear();
                if (skuDetailsList != null && skuDetailsList.size() > 0) {
                    for (SkuDetails skuDetails : skuDetailsList) {
                        mInAppSkuDetailsHashMap.put(skuDetails.getSku(), skuDetails);
                    }
                }
            }
        });

查詢訂閱的商品:

 // The BillingClient is ready. You can query purchases here.
        List<String> subscribeSkuList = new ArrayList<>();
        subscribeSkuList.add("Subscribe01");
        subscribeSkuList.add("Subscribe01");
        subscribeSkuList.add("Subscribe01");
        SkuDetailsParams.Builder subscribeParams = SkuDetailsParams.newBuilder();
        subscribeParams.setSkusList(subscribeSkuList).setType(BillingClient.SkuType.SUBS);
        mBillingClient.querySkuDetailsAsync(subscribeParams.build(), new SkuDetailsResponseListener() {
            @Override
            public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) {
                // Process the result.
                Log.i(TAG, "querySkuDetailsAsync 2 onSkuDetailsResponse billingResult.getResponseCode : " + billingResult.getResponseCode() + " skuDetailsList :" + skuDetailsList);
                mSubscribeSkuDetailsHashMap.clear();
                if (skuDetailsList != null && skuDetailsList.size() > 0) {
                    for (SkuDetails skuDetails : skuDetailsList) {
                        mSubscribeSkuDetailsHashMap.put(skuDetails.getSku(), skuDetails);
                    }
                }
            }
        });

當(dāng)商品查詢成功后就可以結(jié)合Server返回的商品信息給用戶展示商品列表了

注意:有些 Android 設(shè)備安裝的可能是舊版 Google Play 商店應(yīng)用,不支持訂閱等某些商品類型。在您的應(yīng)用進(jìn)入結(jié)算流程之前,您可以調(diào)用?isFeatureSupported()?以確定設(shè)備是否支持您要銷售的商品。如需查看可支持的商品類型的列表,請參閱?BillingClient.FeatureType。

4.5.啟動(dòng)購買流程(開始購買)

? ?當(dāng)用戶點(diǎn)擊某個(gè)商品時(shí),從應(yīng)用發(fā)起購買請求,請從應(yīng)用的主線程調(diào)用?launchBillingFlow()?方法。此方法接受對?BillingFlowParams?對象的引用,該對象包含通過調(diào)用?queryProductDetailsAsync()?獲取的相關(guān)?ProductDetails?對象。如需創(chuàng)建?BillingFlowParams?對象,請使用?BillingFlowParams.Builder?類。

購買內(nèi)購的商品:

    public void buyInAppProduct(SkuDetails skuDetails) {
        if (skuDetails == null) {
            return;
        }
        BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
                .setSkuDetails(skuDetails)
                .build();
        mBillingClient.launchBillingFlow(ActivityUtils.getTopActivity(), billingFlowParams).getResponseCode();
    }

購買訂閱的商品:

  public void buySubscribeProduct(SkuDetails skuDetails) {
        if (skuDetails == null) {
            return;
        }
        BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
                .setSkuDetails(skuDetails)
                .build();
        mBillingClient.launchBillingFlow(ActivityUtils.getTopActivity(), billingFlowParams).getResponseCode();
    }
// An activity reference from which the billing flow will be launched.
Activity activity = ...;

ImmutableList productDetailsParamsList =
    ImmutableList.of(
        ProductDetailsParams.newBuilder()
             // retrieve a value for "productDetails" by calling queryProductDetailsAsync()
            .setProductDetails(productDetails)
            // to get an offer token, call ProductDetails.getSubscriptionOfferDetails()
            // for a list of offers that are available to the user
            .setOfferToken(selectedOfferToken)
            .build()
    );

BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
    .setProductDetailsParamsList(productDetailsParamsList)
    .build();

// Launch the billing flow
BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);

4.6購買成功的回調(diào)

?在咱們4.2初始化SDK的時(shí)候添加了一個(gè)PurchasesUpdatedListener,當(dāng)用戶購買成功后Google Play 會(huì)調(diào)用?onPurchasesUpdated(),我們根據(jù)responseCode去區(qū)分用戶購買成功與否.

如果成功購買商品,系統(tǒng)還會(huì)生成一個(gè)token,它是一個(gè)唯一標(biāo)識符,表示用戶及其所購應(yīng)用內(nèi)商品的商品 ID??梢栽诒镜卮鎯?chǔ)token,可以將令牌傳遞到安全的后端服務(wù)器(推薦用該方法)

    private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
        @Override
        public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
            if (billingResult == null) {
                return;
            }
            int responseCode = billingResult.getResponseCode();
            switch (responseCode) {
                case BillingClient.BillingResponseCode.OK:
                    for (Purchase purchase : purchases) {
                        SkuDetails skuDetails = null;
                        String json = purchase.getOriginalJson();
                        if (!TextUtils.isEmpty(json)) {
                            PurchaseData purchaseData = GsonConverter.fromJson(json, PurchaseData.class);
                            if (purchaseData != null) {
                                skuDetails = getSkuDetailsDependProductId(purchaseData.getProductId());
                            }
                        }
                        handlePurchase(purchase, (skuDetails != null && (BillingClient.SkuType.SUBS.equals(skuDetails.getType()))), "onPurchasesUpdated");
                    }
                    break;
                case BillingClient.BillingResponseCode.USER_CANCELED:
                    Log.i(TAG, "purchasesUpdatedListener 3 user cancel ");
                    break;
                default:
                    Log.i(TAG, "purchasesUpdatedListener 4 error  " + responseCode);
                    break;
            }
        }
    };
@Override
void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
    if (billingResult.getResponseCode() == BillingResponseCode.OK
        && purchases != null) {
        for (Purchase purchase : purchases) {
            handlePurchase(purchase);
        }
    } else if (billingResult.getResponseCode() == BillingResponseCode.USER_CANCELED) {
        // Handle an error caused by a user cancelling the purchase flow.
    } else {
        // Handle any other error codes.
    }
}

4.7.處理購買交易(消費(fèi)訂單)

當(dāng)用戶購買成功后,訂單必須消費(fèi),如果不消費(fèi),三天后Google會(huì)自動(dòng)退款,撤銷購買交易。
消費(fèi)內(nèi)購的商品:

void handlePurchase(Purchase purchase) {
    // Purchase retrieved from BillingClient#queryPurchasesAsync or your PurchasesUpdatedListener.
    Purchase purchase = ...;

    // Verify the purchase.
    // Ensure entitlement was not already granted for this purchaseToken.
    // Grant entitlement to the user.

    ConsumeParams consumeParams =
        ConsumeParams.newBuilder()
            .setPurchaseToken(purchase.getPurchaseToken())
            .build();

    ConsumeResponseListener listener = new ConsumeResponseListener() {
        @Override
        public void onConsumeResponse(BillingResult billingResult, String purchaseToken) {
            if (billingResult.getResponseCode() == BillingResponseCode.OK) {
                // Handle the success of the consume operation.
            }
        }
    };

    billingClient.consumeAsync(consumeParams, listener);
}

? 消費(fèi)訂閱商品:訂閱的處理方式與非消耗型商品類似。您可以使用 Google Play 結(jié)算庫中的?BillingClient.acknowledgePurchase()?或 Google Play Developer API 中的?Purchases.Subscriptions.Acknowledge?確認(rèn)訂閱。所有初始訂閱購買交易都需要確認(rèn)。訂閱續(xù)訂不需要確認(rèn)

BillingClient client = ...
AcknowledgePurchaseResponseListener acknowledgePurchaseResponseListener = ...

void handlePurchase(Purchase purchase) {
    if (purchase.getPurchaseState() == PurchaseState.PURCHASED) {
        if (!purchase.isAcknowledged()) {
            AcknowledgePurchaseParams acknowledgePurchaseParams =
                AcknowledgePurchaseParams.newBuilder()
                    .setPurchaseToken(purchase.getPurchaseToken())
                    .build();
            client.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);
        }
    }
}

4.8 查詢歷史訂單,消費(fèi)待處理的交易

    public void queryOldOrder() {
        mBillingClient.queryPurchasesAsync(BillingClient.SkuType.INAPP, new PurchasesResponseListener() {
            @Override
            public void onQueryPurchasesResponse(@NonNull BillingResult billingResult, @NonNull List<Purchase> list) {
                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                    onHandlerQueryPurchases(list, false);
                }
            }
        });

        mBillingClient.queryPurchasesAsync(BillingClient.SkuType.SUBS, new PurchasesResponseListener() {
            @Override
            public void onQueryPurchasesResponse(@NonNull BillingResult billingResult, @NonNull List<Purchase> list) {
                if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                    onHandlerQueryPurchases(list, true);
                }
            }
        });

4.9?處理多件購買交易:

Google Play 允許客戶在一筆交易中購買多件相同的應(yīng)用內(nèi)商品,只需在購物車中指定商品數(shù)量即可(4.0 及更高版本的 Google Play 結(jié)算庫支持該功能)。應(yīng)用應(yīng)根據(jù)指定購買數(shù)量來處理多件購買并授予權(quán)利。注意:多件購買適用于消耗型應(yīng)用內(nèi)商品,即可以購買、消耗及再次購買的產(chǎn)品。請勿為不支持重復(fù)購買的商品啟用該功能。

為了實(shí)現(xiàn)多件購買,應(yīng)用的配置邏輯需要檢查商品數(shù)量??梢詮囊韵?API 訪問?quantity?字段:

  • Google Play 結(jié)算庫中的?getQuantity()。
  • Google Play Developer API 中的?Purchases.products.quantity。

添加用于處理多件購買的邏輯后,需要在 Google Play 管理中心的應(yīng)用內(nèi)商品管理頁面上為相應(yīng)的商品啟用多件購買功能。

注意:請確保應(yīng)用接受多件購買,然后再在 Play 管理中心啟用該功能。您能需要強(qiáng)制更新到提供支持的應(yīng)用版本,然后才能對商品啟用該功能。文章來源地址http://www.zghlxwxcb.cn/news/detail-490681.html

到了這里,關(guān)于安卓集成Google Play支付(谷歌支付)最新版本的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • selenium操作谷歌瀏覽器,驅(qū)動(dòng)使用最新版113版本,啟動(dòng)程序報(bào)403解決方式

    selenium操作谷歌瀏覽器,驅(qū)動(dòng)使用最新版113版本,啟動(dòng)程序報(bào)403解決方式

    最近我將谷歌瀏覽器更新到最新版本【113.0.5672.127】,那么我們平時(shí)敲代碼或者干測試的朋友知道,我們selenium的操作驅(qū)動(dòng)版本也得提升到對應(yīng)的,不然操作不了,但是我今天將兩者都升級到最新版本后,啟動(dòng)程序依舊啟動(dòng)不了,為了解決該問題特有此博客產(chǎn)出,這里是java的

    2024年02月14日
    瀏覽(103)
  • 聯(lián)想Lenovo手機(jī)平板安裝谷歌服務(wù)框架Google, Play商店,安裝套件GMS

    聯(lián)想Lenovo手機(jī)平板安裝谷歌服務(wù)框架Google, Play商店,安裝套件GMS

    如果你的安卓手機(jī)或者平板升級了,11以上的系統(tǒng),比如是安卓11,12以上的系統(tǒng),那么安裝谷歌play商店就非常的艱難。這是因?yàn)榘沧?1以上的系統(tǒng)對權(quán)限加以了越來越多的限制。我就今天拿聯(lián)想的Z6 Pro測試,首先我到百度搜索了好幾個(gè)關(guān)于安裝谷歌套件的應(yīng)用。然后測試下來

    2024年02月16日
    瀏覽(28)
  • 厲害!我的真我realme手機(jī)成功安裝谷歌服務(wù)框架Google Play商店,安裝谷歌三件套,超級簡單

    厲害!我的真我realme手機(jī)成功安裝谷歌服務(wù)框架Google Play商店,安裝谷歌三件套,超級簡單

    剛到手realme真我X2 Pro手機(jī)。馬上去到百度搜索下載安裝谷歌play商店。我萬萬沒有想到,我這么聰明的人居然被騙了59塊錢。我在開始的時(shí)候,我嘗試自己安裝谷歌,但是安裝出現(xiàn)了閃退,無法聯(lián)網(wǎng)等毛病,沒辦法我只能搜QQ群。群主讓我加這個(gè)QQ號,聲稱他可以在我的安卓手機(jī)

    2024年02月11日
    瀏覽(21)
  • 華為鴻蒙P60(art)系列,Mate X3安裝谷歌服務(wù)框架,安裝Google谷歌Play商店,harmonyos3.1

    華為鴻蒙P60(art)系列,Mate X3安裝谷歌服務(wù)框架,安裝Google谷歌Play商店,harmonyos3.1

    華為全新手機(jī)P60(art)系列,折疊屏Mate X3開始發(fā)售了,搭載最新的鴻蒙harmonyOS3.1系統(tǒng),那么很多朋友需要安裝谷歌服務(wù)框架Google Play商店,想知道是不是支持安裝框架谷歌,如何安裝谷歌服務(wù)框架?謝天謝地!恭喜大家華為有一個(gè)非常重要的權(quán)限沒有鎖閉,這個(gè)權(quán)限可以幫助用戶安裝上

    2024年02月12日
    瀏覽(23)
  • 榮耀80系列,折疊手機(jī)magic Vs安裝套件谷歌服務(wù)框架,GMS,Google Play商店

    榮耀80系列,折疊手機(jī)magic Vs安裝套件谷歌服務(wù)框架,GMS,Google Play商店

    榮耀已經(jīng)發(fā)布了榮耀80,榮耀80 Pro,榮耀80 se,榮耀折疊手機(jī)magic Vs。拿到手已經(jīng)知道榮耀80系列的谷歌服務(wù)框架是被鎖的,不能直接安裝Play商店谷歌等一系列的框架。遇到這種問題該怎么解決呢?。只有一種方法可以臨時(shí)解決這個(gè)問題,解決方法就是先安裝內(nèi)置谷歌服務(wù)框架的虛

    2024年02月11日
    瀏覽(45)
  • Unity打包google play最新要求的aab文件的方法

    Unity打包google play最新要求的aab文件的方法

    很久不搞打包了,沒想到google又整出新的花活了,apk變成了aab,這里分享一下。 首先有幾個(gè)網(wǎng)址很重要,這里說一下: GitHub - google/play-unity-plugins: The Google Play Plugins for Unity provide C# APIs for accessing various Play services 這個(gè)是google那一堆工具在github上的托管地址,里面有文檔的跳轉(zhuǎn)

    2024年02月12日
    瀏覽(40)
  • Vivo手機(jī)安裝谷歌Play商店,安裝服務(wù)框架谷歌Google,支持X90,X80,X70,X60,s系列,IQOO

    Vivo手機(jī)安裝谷歌Play商店,安裝服務(wù)框架谷歌Google,支持X90,X80,X70,X60,s系列,IQOO

    那么vivo在11月22日發(fā)布了新款手機(jī)x90,那么根據(jù)它曝光的諸多參數(shù)可以肯定的知道,x90系列(包括x90Pro,x90plus+)是支持谷歌服務(wù)框架可以安裝Play商店的。和以往的vivo的手機(jī)x80,x70,x60,x系列都是支持的谷歌服務(wù)框架安裝Play商店的,實(shí)際上,vivo也支持vivo的S系列、T系列、Y系列,IQOO手

    2024年02月11日
    瀏覽(22)
  • Google Play Install Referrer API 和    Facebook App Ads Referral 集成

    Google Play Install Referrer API 和 Facebook App Ads Referral 集成

    由于需要精準(zhǔn)的獲取投放廣告的數(shù)據(jù)(投放的平臺,防止數(shù)據(jù)的丟失等)。我們使用了Google Play Install Referrer API 和Facebook App Ads Referral結(jié)合采集數(shù)據(jù),然后通過后臺服務(wù)記錄數(shù)據(jù)。最后服務(wù)器記錄的數(shù)據(jù)與Facebook提供的數(shù)據(jù)對比,檢查數(shù)據(jù)的真實(shí)性、丟包概況等。最后得出結(jié)論

    2024年02月16日
    瀏覽(21)
  • SpringBoot 集成MyBatis-Plus-Generator(最新版3.5.2版本)自動(dòng)生成代碼(附帶集成MyBatis-Plus)

    SpringBoot 集成MyBatis-Plus-Generator(最新版3.5.2版本)自動(dòng)生成代碼(附帶集成MyBatis-Plus)

    快速入門 代碼生成器配置(新) spring boot 2.3.12.RELEASE mybatis 3.5.2 mybatis plus 3.5.2 mybatis plus generator 3.5.2 mysql 8.0.17 velocity 2.3 hutool 5.8.15 druid 1.2.8 lombok 自帶 示例程序選擇的技術(shù)目前各項(xiàng)技術(shù)的穩(wěn)定版本。 相信大家厭煩重復(fù)的造輪子過程,編寫與數(shù)據(jù)庫表對應(yīng)的實(shí)體類,接著再進(jìn)

    2024年02月21日
    瀏覽(14)
  • 華為榮耀鴻蒙3.0,2.0解決Play商店從服務(wù)器檢索信息時(shí)出錯(cuò),DF-DFERH-01,安裝框架服務(wù)谷歌Google

    華為榮耀鴻蒙3.0,2.0解決Play商店從服務(wù)器檢索信息時(shí)出錯(cuò),DF-DFERH-01,安裝框架服務(wù)谷歌Google

    最近華為榮耀鴻蒙3.0鴻蒙2.0安裝谷歌服務(wù)框架,安裝play商店在解決play保護(hù)機(jī)制非保護(hù)機(jī)制認(rèn)證的時(shí)候,經(jīng)常會(huì)出現(xiàn)這樣一個(gè)錯(cuò)誤:’從服務(wù)器檢索信息時(shí)出錯(cuò),DF-DFERH-01’這個(gè)問題,那么在網(wǎng)上找了很多方法都沒有解決,終于搜遍各大互聯(lián)網(wǎng),找到了一個(gè)這個(gè)應(yīng)用華谷套件,進(jìn)入

    2024年02月12日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包