AppGallery Connect:應(yīng)用外支付

來源: HUAWEI
作者:HUAWEI
時(shí)間:2021-03-26
16911
在AppGallery Connect的中創(chuàng)建的商品,進(jìn)行了商品營(yíng)銷配置后,可以直接在華為應(yīng)用市場(chǎng)或游戲中心的應(yīng)用詳情頁中展示商品宣傳圖、商品名稱、商品描述,供用戶點(diǎn)擊購(gòu)買。

場(chǎng)景介紹

在AppGallery Connect的中創(chuàng)建的商品,進(jìn)行了商品營(yíng)銷配置后,可以直接在華為應(yīng)用市場(chǎng)或游戲中心的應(yīng)用詳情頁中展示商品宣傳圖、商品名稱、商品描述,供用戶點(diǎn)擊購(gòu)買。

ia_6200000002.png

注意

應(yīng)用外支付功能目前僅支持發(fā)布地區(qū)包含中國(guó)大陸的應(yīng)用。

應(yīng)用外支付分為以下兩種方式:

DeepLink方式:用戶點(diǎn)擊購(gòu)買應(yīng)用市場(chǎng)或游戲中心的商品后跳轉(zhuǎn)到您自己的APP商品地址,該地址可直接拉起您的APP,由APP自行完成后續(xù)的支付和發(fā)貨。

商品直購(gòu)方式:分為兌換碼支付和華為應(yīng)用市場(chǎng)發(fā)起支付。

    兌換碼支付:您可以提前在華為AppGallery Connect中配置商品兌換碼,用戶使用兌換碼購(gòu)買華為應(yīng)用市場(chǎng)的商品后,華為服務(wù)器直接通知開發(fā)者服務(wù)器完成商品發(fā)貨。

    華為應(yīng)用市場(chǎng)發(fā)起支付:用戶點(diǎn)擊購(gòu)買華為應(yīng)用市場(chǎng)的商品后由華為應(yīng)用市場(chǎng)發(fā)起支付,在支付完成后由華為服務(wù)器通知開發(fā)者服務(wù)器完成商品發(fā)貨。

DeepLink方式的應(yīng)用外支付僅需在配置商品營(yíng)銷信息時(shí)配置DeepLink地址,用戶點(diǎn)擊購(gòu)買后將直接跳轉(zhuǎn)到該DeepLink地址,后續(xù)支付和發(fā)貨流程與應(yīng)用內(nèi)商品支付流程一致,參見華為支付開發(fā)指南。

兌換碼支付方式僅需參考配置虛擬商品配置商品兌換碼,并在配置商品營(yíng)銷信息時(shí)配置發(fā)貨地址即可,無需額外代碼開發(fā)。

華為應(yīng)用市場(chǎng)發(fā)起支付的方式需要您開發(fā)商品直購(gòu)和掉單查詢功能,本章節(jié)將具體介紹此功能的開發(fā)。

前提條件

已參見配置商品營(yíng)銷信息配置商品營(yíng)銷信息。

商品直購(gòu)

ia_6200000003.png

接收發(fā)貨通知:

商品直購(gòu)成功后,華為數(shù)字商品服務(wù)器會(huì)調(diào)用通知發(fā)貨接口通知開發(fā)者服務(wù)器對(duì)已經(jīng)完成購(gòu)買的商品發(fā)貨。

請(qǐng)求消息樣例:

POST {第三方應(yīng)用服務(wù)器url} HTTP/1.1 

Content Type : application/json ; charset=UTF-8 

{  

  "data": { 

    "developerId": "234234234", 

    "appId": "1231333", 

    "orderId": "sdfsfff32324324234234", 

    "productNo": "product344", 

    "openId": "openId13123", 

    "count": 1, 

    "ts": 12312313123131123 

  }, 

  "sign": "string" 

}  

參見獲取驗(yàn)簽公鑰獲取用于驗(yàn)證訂單信息的公鑰。

開發(fā)者服務(wù)器收到發(fā)貨通知后,參考驗(yàn)簽示例對(duì)發(fā)貨通知消息的sign字段驗(yàn)簽,并根據(jù)查詢訂單相關(guān)數(shù)據(jù)的有效性,向華為服務(wù)器返回處理結(jié)果。

返回消息樣例:

  "error": { 

    "errorCode": 0, 

    "errorMsg": "string" 

  }  

}  

or   

{  

    "data": { 

    "result": 0 

  } 

根據(jù)商品ID和當(dāng)前用戶信息完成發(fā)貨操作,此部分由開發(fā)者自行完成。

發(fā)貨成功主動(dòng)通知:

參考創(chuàng)建API客戶端章節(jié)創(chuàng)建用于訪問華為服務(wù)器接口的API客戶端。

說明

API客戶端僅需創(chuàng)建一次。

調(diào)用獲取Token接口獲取用于API客戶端認(rèn)證的的access_token。

開發(fā)者服務(wù)器在發(fā)貨成功后調(diào)用發(fā)貨成功通知接口向華為服務(wù)器發(fā)送通知,傳入access_token。通知成功后華為服務(wù)器刷新訂單狀態(tài)。

請(qǐng)求消息樣例:

{   

   "orderId": "string", 

   "productNo": "string", 

   "openId": "string", 

   "status": 0, 

   "ts": 12312313123131123 

 }

響應(yīng)消息樣例:

   "error": { 

       "errorCode": 0, 

       "errorMsg": "string" 

   }   

}    

or

{  

  "data": { 

       "result": 0 

   }    

}

掉單查詢

商品直購(gòu)后通知發(fā)貨過程可能發(fā)生通知發(fā)貨失敗而產(chǎn)生掉單,此時(shí)華為服務(wù)會(huì)將該訂單標(biāo)識(shí)為未發(fā)貨狀態(tài)。當(dāng)應(yīng)用啟動(dòng)時(shí)需要主動(dòng)查詢當(dāng)前華為帳號(hào)是否有未發(fā)貨的訂單,如果有掉單數(shù)據(jù)需通知開發(fā)者服務(wù)器發(fā)貨。開發(fā)者服務(wù)器完成發(fā)貨后通知華為服務(wù)器發(fā)貨成功,華為服務(wù)器將訂單狀態(tài)修改為發(fā)貨狀態(tài)。

ia_6200000004.png

應(yīng)用啟動(dòng)時(shí)主動(dòng)調(diào)用JosApps.getProductClient方法初始化ProductClient實(shí)例。

ProductClient productClient =  JosApps.getProductClient(this);

應(yīng)用調(diào)用ProductClient.getMissProductOrder方法查詢未發(fā)貨的訂單。

說明

本步驟僅為建議,您可根據(jù)查詢結(jié)果感知當(dāng)前設(shè)備中是否存在已登錄的華為帳號(hào),正式的查詢將在步驟4中進(jìn)行。

HMS Core SDK會(huì)根據(jù)當(dāng)前設(shè)備中已經(jīng)登錄授權(quán)的華為帳號(hào)查詢?cè)搸ぬ?hào)的掉單數(shù)據(jù)。如果當(dāng)前設(shè)備中未登錄華為帳號(hào),則不返回?cái)?shù)據(jù)。

Task<List<ProductOrderInfo>> task = productClient.getMissProductOrder(this);

task.addOnSuccessListener(new OnSuccessListener<List<ProductOrderInfo>>() {

    @Override

    public void onSuccess(List<ProductOrderInfo> productOrders) {

        if (productOrders != null) {

            for (ProductOrderInfo productOrderInfo : productOrders) {

                String productNo = productOrderInfo.getProductNo();

                String tradeId = productOrderInfo.getTradeId();

                showLog("productNo:" + productNo + ",tradeId:" + tradeId);

            }

        } else {

            showLog("product list is null");

        }

    }

}).addOnFailureListener(new OnFailureListener() {

    @Override

    public void onFailure(Exception e) {

        if (e instanceof ApiException) {

            ApiException apiException = (ApiException) e;

            showLog("get miss product info failed:" + apiException.getStatusCode());

        }

    }

});

引導(dǎo)用戶進(jìn)行華為帳號(hào)授權(quán)登錄。

說明

為了更好的用戶體驗(yàn),建議您將華為帳號(hào)與您自己的帳號(hào)體系綁定,以便于用戶可以同時(shí)瀏覽華為帳號(hào)和非華為帳號(hào)購(gòu)買的訂單。

用戶的華為帳號(hào)授權(quán)登錄后,應(yīng)用再次調(diào)用ProductClient.getMissProductOrder方法確認(rèn)掉單數(shù)據(jù)。

應(yīng)用調(diào)用ProductOrderInfo.getSign方法獲取訂單信息中的簽名字符串,使用獲取驗(yàn)簽公鑰中獲取的驗(yàn)簽公鑰參考對(duì)掉單數(shù)據(jù)驗(yàn)簽對(duì)訂單信息進(jìn)行驗(yàn)簽。

驗(yàn)簽通過后,應(yīng)用客戶端通知應(yīng)用服務(wù)端發(fā)貨。開發(fā)者服務(wù)器發(fā)貨完成后向華為服務(wù)發(fā)送通知

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于HUAWEI,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家