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

Google Play創(chuàng)建商品,手機支付,訂單管理完整流程

這篇具有很好參考價值的文章主要介紹了Google Play創(chuàng)建商品,手機支付,訂單管理完整流程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

  1. Google Play 創(chuàng)建商品(一次性商品和訂閱商品)

首先進入 Google Play Console 后臺:https://play.google.com/console/u/0/developers/,找到對應的項目,點擊進入項目。找到左側(cè)的Produces-->In-App produces(一次性商品), Produces-->Subscriptions(訂閱商品) 中文:商品-->應用內(nèi)商品和訂閱

Google Play創(chuàng)建商品,手機支付,訂單管理完整流程,android,java,android studio,Powered by 金山文檔

點擊Create product 可以去創(chuàng)建商品,注意Product ID 在一個項目中是唯一的,不能重復,價格直接輸入美元即可,各國貨幣會自動換算,最后創(chuàng)建完商品一定要記得使用哦

Google Play創(chuàng)建商品,手機支付,訂單管理完整流程,android,java,android studio,Powered by 金山文檔
  1. 使用Google Play 結(jié)算庫購買

文檔地址:https://developer.android.com/google/play/billing/integrate?hl=zh-cn

2.1 添加 Google Play 結(jié)算庫依賴:

將 Google Play 結(jié)算庫依賴項添加到應用的 build.gradle 文件中,如下所示:


dependencies {
    def billing_version = "5.1.0"

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

2.2 初始化 BillingClient

添加對 Google Play 結(jié)算庫的依賴關(guān)系后,您需要初始化 BillingClient 實例。BillingClient 是 Google Play 結(jié)算庫與應用的其余部分之間進行通信的主接口。BillingClient 為許多常見的結(jié)算操作提供了方便的方法,既有同步方法,又有異步方法。我們強烈建議您一次打開一個活躍的 BillingClient 連接,以避免對某一個事件進行多次 PurchasesUpdatedListener 回調(diào)。

如需創(chuàng)建 BillingClient,請使用 newBuilder()。您可以將任何上下文傳遞給 newBuilder(),BillingClient 則使用前者來獲取應用上下文。這意味著您不必擔心內(nèi)存泄漏。為了接收有關(guān)購買交易的更新,您還必須調(diào)用 setListener(),并傳遞對 PurchasesUpdatedListener 的引用。此監(jiān)聽器可接收應用中所有購買交易的更新。


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

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

2.3 連接到 Google Play

注意:國內(nèi)的Google賬號這一步會失敗,測試時將 Google賬號切換到國外大區(qū),創(chuàng)建 BillingClient 后,需要與 Google Play 建立連接。

如需連接到 Google Play,請調(diào)用 startConnection()。連接過程是異步進行的,因此必須實現(xiàn) BillingClientStateListener,以便在客戶端的設置完成后且它準備好發(fā)出進一步的請求時接收回調(diào)。

此外,還必須實現(xiàn)重試邏輯,以處理與 Google Play 失去連接的問題。如需實現(xiàn)重試邏輯,請?zhí)鎿Q onBillingServiceDisconnected() 回調(diào)方法,并確保 BillingClient 先調(diào)用 startConnection() 方法以重新連接到 Google Play,然后再發(fā)出進一步的請求。


billingClient.startConnection(new BillingClientStateListener() {
    @Override
    public void onBillingSetupFinished(BillingResult billingResult) {
        if (billingResult.getResponseCode() ==  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.
    }
});

2.4 展示商品

這一步一般商品從服務端獲取,價格從Google Play 獲取,這樣就可以展示本地化的貨幣價格,在將商品展示給用戶之前,查詢商品詳情是非常重要的一步,因為查詢會返回本地化的商品信息。對于訂閱,請確保您的商品展示符合所有 Play 政策。如需查詢應用內(nèi)商品詳情,請調(diào)用 queryProductDetailsAsync()。為了處理該異步操作的結(jié)果,還必須指定實現(xiàn) ProductDetailsResponseListener 接口的監(jiān)聽器。然后,可以替換 onProductDetailsResponse()


QueryProductDetailsParams queryProductDetailsParams =
    QueryProductDetailsParams.newBuilder()
        .setProductList(
            ImmutableList.of(
                Product.newBuilder()
                    .setProductId("product_id_example")
                    .setProductType(ProductType.SUBS)
                    .build()))
        .build();

billingClient.queryProductDetailsAsync(
    queryProductDetailsParams,
    new ProductDetailsResponseListener() {
        public void onProductDetailsResponse(BillingResult billingResult,
                List<ProductDetails> productDetailsList) {
            // check billingResult
            // process returned productDetailsList
        }
    }
)

2.5 啟動購買流程

從應用發(fā)起購買請求,請從應用的主線程調(diào)用 launchBillingFlow() 方法。此方法接受對 BillingFlowParams 對象的引用,該對象包含通過調(diào)用 queryProductDetailsAsync() 獲取的相關(guān) ProductDetails 對象,launchBillingFlow() 方法會返回 BillingClient.BillingResponseCode 中列出的幾個響應代碼之一。請務必檢查此結(jié)果,以確保在啟動購買流程時沒有錯誤。BillingResponseCode 為 OK 表示成功啟動。成功調(diào)用 launchBillingFlow() 后,系統(tǒng)會顯示 Google Play 購買界面


// 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);
Google Play創(chuàng)建商品,手機支付,訂單管理完整流程,android,java,android studio,Powered by 金山文檔

Google Play 會調(diào)用 onPurchasesUpdated(),以將購買操作的結(jié)果傳送給實現(xiàn) PurchasesUpdatedListener 接口的監(jiān)聽器。您可以在初始化客戶端時使用 setListener() 方法指定監(jiān)聽器。必須實現(xiàn) onPurchasesUpdated() 來處理可能的響應:


@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.
    }
}

如果成功購買商品,系統(tǒng)會顯示 Google Play 購買成功界面:

Google Play創(chuàng)建商品,手機支付,訂單管理完整流程,android,java,android studio,Powered by 金山文檔

如果成功購買商品,系統(tǒng)還會生成購買令牌,它是一個唯一標識符,表示用戶及其所購應用內(nèi)商品的商品 ID。應用可以在本地存儲購買令牌,不過建議您將令牌傳遞到安全的后端服務器,隨后可以在該服務器上驗證購買交易及防范欺詐行為。下一部分對此過程進行了詳細說明。

用戶還會收到包含交易收據(jù)的電子郵件,其中包含訂單 ID 或交易的唯一 ID。用戶每次購買一次性商品時,都會收到包含唯一訂單 ID 的電子郵件。此外,用戶最初購買訂閱時以及后續(xù)定期自動續(xù)訂時,也會收到這樣的電子郵件??梢栽?Google Play 管理中心內(nèi)使用訂單 ID 來管理退款。

2.6 處理交易: 消費訂單

用戶完成購買交易后,您的應用需要處理該購買交易。在大多數(shù)情況下,您的應用會通過 PurchasesUpdatedListener 收到購買交易的通知。但在某些情況下,應用通過調(diào)用 BillingClient.queryPurchasesAsync() 得知購買交易,如提取購買交易中所述。

應用應按以下方式處理購買交易:

  1. 驗證購買交易。

  1. 向用戶提供內(nèi)容,并確認內(nèi)容已傳送給用戶。還可以選擇性地將商品標記為已消費,以便用戶可以再次購買商品。

如需驗證購買交易,請先檢查購買交易的狀態(tài)是否為 PURCHASED。如果購買交易的狀態(tài)為 PENDING,則您應按照處理待處理的交易中的說明處理購買交易。對于通過 onPurchasesUpdated() 或 queryPurchasesAsync() 接收的購買交易,您應在應用授予權(quán)利之前進一步驗證購買交易,以確保其合法性。如需了解如何正確驗證購買交易,請參閱在授予權(quán)利前驗證購買交易。

一旦您驗證了購買交易,應用就可以向用戶授予權(quán)利了。授予權(quán)利后,應用必須確認購買交易。此確認會告知 Google Play 已授予購買權(quán)。


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);
}

注意:由于消耗請求偶爾會失敗,因此您必須檢查安全的后端服務器,確保所有購買令牌都未被使用過,這樣應用就不會針對同一購買交易多次授予權(quán)利。或者,您的應用也可以等到您收到 Google Play 發(fā)來的成功消耗響應后再授予權(quán)利。如果您選擇在 Google Play 發(fā)來成功消耗響應之前不讓用戶消耗所購商品,那么您必須非常小心,在消耗請求發(fā)出后時刻跟蹤相應商品。

如需確認非消耗型商品的購買交易,請使用 Google Play 結(jié)算庫中的 BillingClient.acknowledgePurchase() 或 Google Play Developer API 中的 Product.Purchases.Acknowledge。在確認購買交易之前,應用應使用 Google Play 結(jié)算庫中的 isAcknowledged() 方法或 Google Play Developer API 中的 acknowledgementState 字段檢查該購買交易是否已經(jīng)過確認。

以下示例展示了如何使用 Google Play 結(jié)算庫來確認購買交易:


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);
        }
    }
}

訂閱的處理方式與非消耗型商品類似??梢允褂?Google Play 結(jié)算庫中的 BillingClient.acknowledgePurchase() 或 Google Play Developer API 中的 Purchases.Subscriptions.Acknowledge 確認訂閱。所有初始訂閱購買交易都需要確認。訂閱續(xù)訂不需要確認。如需詳細了解訂閱何時需要確認,請參閱銷售訂閱內(nèi)容主題。

2.7 提取購買交易,補單邏輯

使用 PurchasesUpdatedListener 監(jiān)聽購買交易更新不足以確保您的應用會處理所有購買交易。有時您的應用可能不知道用戶進行的部分購買交易。在下面這幾種情況下,您的應用可能會跟蹤不到或不知道購買交易:

  • 在購買過程中出現(xiàn)網(wǎng)絡問題:用戶成功購買了商品并收到了 Google 的確認消息,但他們的設備在通過 PurchasesUpdatedListener 收到購買交易的通知之前失去了網(wǎng)絡連接。

  • 多臺設備:用戶在一臺設備上購買了一件商品,然后在切換設備時期望看到該商品。

  • 處理在您的應用外進行的購買交易:某些購買交易(如促銷活動兌換)可能會在您的應用外進行。

為了處理這些情況,請確保您的應用在 onResume() 方法中調(diào)用 BillingClient.queryPurchasesAsync(),以確保所有購買交易都得到成功處理,如處理購買交易中所述。

以下示例展示了如何提取用戶的訂閱購買交易。 請注意,queryPurchasesAsync() 僅返回有效訂閱和非消耗型一次性購買交易。


billingClient.queryPurchasesAsync(
    QueryPurchasesParams.newBuilder()
      .setProductType(ProductType.SUBS)
      .build(),
    new PurchasesResponseListener() {
      public void onQueryPurchasesResponse(BillingResult billingResult, List purchases) {
        // check billingResult
        // process returned purchase list, e.g. display the plans user owns

      }
    }
);

queryPurchaseHistoryAsync() 會返回用戶針對每個商品發(fā)起的最近一筆購買記錄,即使該購買交易已過期、已取消或已消耗,也仍會提取相關(guān)記錄。


billingClient.queryPurchaseHistoryAsync(
    QueryPurchaseHistoryParams.newBuilder()
        .setProductType(ProductType.SUBS)
        .build(),
    new PurchaseHistoryResponseListener() {
      public void onPurchaseHistoryResponse(
        BillingResult billingResult, List purchasesHistoryList) {
          // check billingResult
          // process returned purchase history list, e.g. display purchase history
        }
    }
);

整個支付流程圖:

Google Play創(chuàng)建商品,手機支付,訂單管理完整流程,android,java,android studio,Powered by 金山文檔

3.用戶購買后,查看用戶購買訂單

去 Google Play Console 后臺 Order management(訂單管理) 查看訂單:https://play.google.com/console/u/0/developers/文章來源地址http://www.zghlxwxcb.cn/news/detail-569758.html

Google Play創(chuàng)建商品,手機支付,訂單管理完整流程,android,java,android studio,Powered by 金山文檔

總結(jié):這樣就完成了Google Play APP 商品的創(chuàng)建,用戶的購買和用戶購買后訂單記錄,整個流程比較清晰明確!

到了這里,關(guān)于Google Play創(chuàng)建商品,手機支付,訂單管理完整流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 華為手機配置google play的幾種方式

    介紹幾種常見的方式 1、華為自帶的谷歌商店,通過手機設置開啟 。具體步驟如下: 1、進入華為手機設置界面,找到Googel, 2、點擊Google,進入設置界面,點擊解除即打開Google Play服務, Google Play 前名為Android Market,是一個由Google為Android設備開發(fā)的在線 華為自帶的谷歌商店 2、在第三

    2024年02月11日
    瀏覽(24)
  • 微服務架構(gòu)+創(chuàng)建微服務工程(商品/訂單)

    微服務架構(gòu)+創(chuàng)建微服務工程(商品/訂單)

    目錄 1.微服務架構(gòu) 1.1.單體應用架構(gòu) 1.2.微服務應用 1.3 微服務架構(gòu)的優(yōu)勢 1.4.微服務架構(gòu)的缺點(挑戰(zhàn)) 1.5. SpringCloud與微服務關(guān)系 1.6.SpringBoot和SpringCloud關(guān)系 2. 創(chuàng)建微服務工程 2.1.數(shù)據(jù)庫 2.2.搭建父工程 2.2 創(chuàng)建公共模塊 2.3.商品系統(tǒng) 2.4.訂單微服務 將項目所有模塊(功能)打成ja

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

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

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

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

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

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

    2024年02月11日
    瀏覽(45)
  • 03、SpringBoot + 微信支付 ---- 創(chuàng)建訂單、保存二維碼url、顯示訂單列表

    03、SpringBoot + 微信支付 ---- 創(chuàng)建訂單、保存二維碼url、顯示訂單列表

    1-1:需求: 之前的下單,只是獲取支付二維碼,但是并沒有將訂單存到數(shù)據(jù)庫 需求1:點擊確認支付后,創(chuàng)建商品的訂單存到數(shù)據(jù)庫 需求2:每次確認支付之前,要判斷這個人是否存在已下單未支付的訂單,有的話就不用再創(chuàng)建訂單了,把他的訂單查詢出來給他就行。 1-2:代

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

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

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

    2024年02月11日
    瀏覽(21)
  • 開源項目 | 可二次開發(fā)的開源后臺、支持支付系統(tǒng)通用的支付、對賬、清算、賬戶管理、支付訂單管理等功能

    開源項目 | 可二次開發(fā)的開源后臺、支持支付系統(tǒng)通用的支付、對賬、清算、賬戶管理、支付訂單管理等功能

    在RuoYi項目基礎(chǔ)上改造,通過多模塊的方式整合其他經(jīng)常被用到的功能模塊,特別感謝RuoYi?;赟pringBoot2.0的開發(fā)的系統(tǒng) 易讀易懂、界面簡潔美觀。具備支付系統(tǒng)通用的支付、對賬、清算、賬戶管理、支付訂單管理等功能;目前已接通微信支付渠道,應用微信公眾號商城 在此

    2024年01月21日
    瀏覽(34)
  • Vivo手機安裝谷歌Play商店,安裝服務框架谷歌Google,支持X90,X80,X70,X60,s系列,IQOO

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

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

    2024年02月11日
    瀏覽(22)
  • 客戶下單軟件|手機訂單下單系統(tǒng)軟件問題整理解答-邏輯貓訂單管理系統(tǒng)

    客戶下單軟件|手機訂單下單系統(tǒng)軟件問題整理解答-邏輯貓訂單管理系統(tǒng)

    一:訂貨系統(tǒng)后臺能否通過手機進行操作 問:訂貨系統(tǒng)后臺能否通過手機進行操作。我們購買訂貨系統(tǒng)后能不能通過手機操作訂貨企業(yè)后臺 答: 訂貨系統(tǒng)有手機版本和 APP? 可通過手機操作。 問:通過手機訂貨系統(tǒng),企業(yè)后臺能否及時了解到客戶的欠款信息。我們在實際操

    2024年02月11日
    瀏覽(24)
  • 【項目實戰(zhàn)】——商品管理的制作完整代碼

    【項目實戰(zhàn)】——商品管理的制作完整代碼

    ?????個人主頁 :@開發(fā)者-曼億點 ????? hallo 歡迎 點贊?? 收藏? 留言?? 加關(guān)注?! ????? 本文由 曼億點 原創(chuàng) ????? 收錄于專欄 :PHP程序開發(fā) — ??與一維數(shù)組相比,二維數(shù)組能夠存儲更加豐富的數(shù)據(jù)。相對于一維數(shù)組只有一鍵值維度–列,二維數(shù)組具有兩個

    2024年04月09日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包