国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

??
微信支付開(kāi)發(fā)(7) 收貨地址共享接口V2,v2
一、微信JS-SDK
1. 獲得Access Token
2. 獲取jsapi_ticket
3. 簽名算法實(shí)現(xiàn)
二、收貨地址共享接口
一. 簡(jiǎn)介
2. 綁定域名
3. 獲取簽名包
4. 引入JS文件
5.通過(guò)config接口注入權(quán)限驗(yàn)證配置
三、實(shí)現(xiàn)效果
? ??? ?? PHP ???? 微信支付開(kāi)發(fā)(7) 收貨地址共享接口V2,v2_PHP教程

微信支付開(kāi)發(fā)(7) 收貨地址共享接口V2,v2_PHP教程

Jul 12, 2016 am 08:53 AM
??? ??? ???? ?? ??? ???? ?? ????? ????

微信支付開(kāi)發(fā)(7) 收貨地址共享接口V2,v2

關(guān)鍵字:微信公眾平臺(tái) JSSDK 發(fā)送給朋友 收貨地址共享接口?openAddress?
作者:方倍工作室?
原文:http://www.cnblogs.com/txw1958/p/weixin-openaddress.html

?

在這篇微信公眾平臺(tái)開(kāi)發(fā)教程中,我們將介紹如何在網(wǎng)頁(yè)中實(shí)現(xiàn)獲取收貨地址的功能。

收貨地址共享接口 在2016年4月13日 進(jìn)行過(guò)升級(jí),2016年5月20日只能使用新接口,本教程為新版接口的教程!

本文分為以下二個(gè)部分:

?

?

一、微信JS-SDK

1. 獲得Access Token

access token的獲得方法在前面有介紹,詳情見(jiàn)?微信公眾平臺(tái)開(kāi)發(fā)(26) ACCESS TOKEN

2. 獲取jsapi_ticket

生成簽名之前必須先了解一下jsapi_ticket,jsapi_ticket是公眾號(hào)用于調(diào)用微信JS接口的臨時(shí)票據(jù)。正常情況下,jsapi_ticket的有效期為7200秒,通過(guò)access_token來(lái)獲取。由于獲取jsapi_ticket的api調(diào)用次數(shù)非常有限,頻繁刷新jsapi_ticket會(huì)導(dǎo)致api調(diào)用受限,影響自身業(yè)務(wù),開(kāi)發(fā)者必須在自己的服務(wù)全局緩存jsapi_ticket 。

參考以下文檔獲取access_token(有效期7200秒,開(kāi)發(fā)者必須在自己的服務(wù)全局緩存access_token):
用第一步拿到的access_token 采用http GET方式請(qǐng)求獲得jsapi_ticket(有效期7200秒,開(kāi)發(fā)者必須在自己的服務(wù)全局緩存jsapi_ticket),接口地址如下

https:<span>//</span><span>api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi</span>

成功返回如下JSON:

<span>{
    </span><span>"</span><span>errcode</span><span>"</span>:<span>0</span><span>,
    </span><span>"</span><span>errmsg</span><span>"</span>:<span>"</span><span>ok</span><span>"</span><span>,
    </span><span>"</span><span>ticket</span><span>"</span>:<span>"</span><span>bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA</span><span>"</span><span>,
    </span><span>"</span><span>expires_in</span><span>"</span>:<span>7200</span><span>
}</span>

獲得jsapi_ticket之后,就可以生成JS-SDK權(quán)限驗(yàn)證的簽名了。

3. 簽名算法實(shí)現(xiàn)

簽名生成規(guī)則如下:參與簽名的字段包括noncestr(隨機(jī)字符串), 有效的jsapi_ticket, timestamp(時(shí)間戳), url(當(dāng)前網(wǎng)頁(yè)的URL,不包含#及其后面部分) 。對(duì)所有待簽名參數(shù)按照字段名的ASCII 碼從小到大排序(字典序)后,使用URL鍵值對(duì)的格式(即key1=value1&key2=value2…)拼接成字符串string1。這里需要注意的是所有參數(shù)名均為小寫字符。對(duì)string1作sha1加密,字段名和字段值都采用原始值,不進(jìn)行URL 轉(zhuǎn)義。

即signature=sha1(string1)。 示例:

noncestr=<span>Wm3WZYTPz0wzccnW
jsapi_ticket</span>=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-<span>HhTdfl2fzFy1AOcHKP7qg
timestamp</span>=<span>1414587457</span><span>
url</span>=http:<span>//</span><span>mp.weixin.qq.com?params=value</span>

步驟1. 對(duì)所有待簽名參數(shù)按照字段名的ASCII 碼從小到大排序(字典序)后,使用URL鍵值對(duì)的格式(即key1=value1&key2=value2…)拼接成字符串string1:

jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=<span>1414587457</span>&url=http:<span>//</span><span>mp.weixin.qq.com?params=value</span>

步驟2. 對(duì)string1進(jìn)行sha1簽名,得到signature:

0f9de62fce790f9a083d5c99e95740ceb90c27ed

完整代碼如下

<?<span>php
</span><span>class</span><span> JSSDK {
  </span><span>private</span> <span>$appId</span><span>;
  </span><span>private</span> <span>$appSecret</span><span>;

  </span><span>public</span> <span>function</span> __construct(<span>$appId</span>, <span>$appSecret</span><span>) {
    </span><span>$this</span>->appId = <span>$appId</span><span>;
    </span><span>$this</span>->appSecret = <span>$appSecret</span><span>;
  }

  </span><span>public</span> <span>function</span><span> getSignPackage() {
    </span><span>$jsapiTicket</span> = <span>$this</span>-><span>getJsApiTicket();

    </span><span>//</span><span> 注意 URL 一定要?jiǎng)討B(tài)獲取,不能 hardcode.</span>
    <span>$protocol</span> = (!<span>empty</span>(<span>$_SERVER</span>['HTTPS']) && <span>$_SERVER</span>['HTTPS'] !== 'off' || <span>$_SERVER</span>['SERVER_PORT'] == 443) ? "https://" : "http://"<span>;
    </span><span>$url</span> = "<span>$protocol$_SERVER</span>[HTTP_HOST]<span>$_SERVER</span>[REQUEST_URI]"<span>;

    </span><span>$timestamp</span> = <span>time</span><span>();
    </span><span>$nonceStr</span> = <span>$this</span>-><span>createNonceStr();

    </span><span>//</span><span> 這里參數(shù)的順序要按照 key 值 ASCII 碼升序排序</span>
    <span>$string</span> = "jsapi_ticket=<span>$jsapiTicket</span>&noncestr=<span>$nonceStr</span>&timestamp=<span>$timestamp</span>&url=<span>$url</span>"<span>;

    </span><span>$signature</span> = <span>sha1</span>(<span>$string</span><span>);

    </span><span>$signPackage</span> = <span>array</span><span>(
      </span>"appId"     => <span>$this</span>->appId,
      "nonceStr"  => <span>$nonceStr</span>,
      "timestamp" => <span>$timestamp</span>,
      "url"       => <span>$url</span>,
      "signature" => <span>$signature</span>,
      "rawString" => <span>$string</span><span>
    );
    </span><span>return</span> <span>$signPackage</span><span>; 
  }

  </span><span>private</span> <span>function</span> createNonceStr(<span>$length</span> = 16<span>) {
    </span><span>$chars</span> = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"<span>;
    </span><span>$str</span> = ""<span>;
    </span><span>for</span> (<span>$i</span> = 0; <span>$i</span> < <span>$length</span>; <span>$i</span>++<span>) {
      </span><span>$str</span> .= <span>substr</span>(<span>$chars</span>, <span>mt_rand</span>(0, <span>strlen</span>(<span>$chars</span>) - 1), 1<span>);
    }
    </span><span>return</span> <span>$str</span><span>;
  }

  </span><span>private</span> <span>function</span><span> getJsApiTicket() {
    </span><span>//</span><span> jsapi_ticket 應(yīng)該全局存儲(chǔ)與更新,以下代碼以寫入到文件中做示例</span>
    <span>$data</span> = json_decode(<span>file_get_contents</span>("jsapi_ticket.json"<span>));
    </span><span>if</span> (<span>$data</span>->expire_time < <span>time</span><span>()) {
      </span><span>$accessToken</span> = <span>$this</span>-><span>getAccessToken();
      </span><span>//</span><span> 如果是企業(yè)號(hào)用以下 URL 獲取 ticket
      // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";</span>
      <span>$url</span> = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=<span>$accessToken</span>"<span>;
      </span><span>$res</span> = json_decode(<span>$this</span>->httpGet(<span>$url</span><span>));
      </span><span>$ticket</span> = <span>$res</span>-><span>ticket;
      </span><span>if</span> (<span>$ticket</span><span>) {
        </span><span>$data</span>->expire_time = <span>time</span>() + 7000<span>;
        </span><span>$data</span>->jsapi_ticket = <span>$ticket</span><span>;
        </span><span>$fp</span> = <span>fopen</span>("jsapi_ticket.json", "w"<span>);
        </span><span>fwrite</span>(<span>$fp</span>, json_encode(<span>$data</span><span>));
        </span><span>fclose</span>(<span>$fp</span><span>);
      }
    } </span><span>else</span><span> {
      </span><span>$ticket</span> = <span>$data</span>-><span>jsapi_ticket;
    }

    </span><span>return</span> <span>$ticket</span><span>;
  }

  </span><span>private</span> <span>function</span><span> getAccessToken() {
    </span><span>//</span><span> access_token 應(yīng)該全局存儲(chǔ)與更新,以下代碼以寫入到文件中做示例</span>
    <span>$data</span> = json_decode(<span>file_get_contents</span>("access_token.json"<span>));
    </span><span>if</span> (<span>$data</span>->expire_time < <span>time</span><span>()) {
      </span><span>//</span><span> 如果是企業(yè)號(hào)用以下URL獲取access_token
      // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";</span>
      <span>$url</span> = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=<span>$this</span>->appId&secret=<span>$this</span>->appSecret"<span>;
      </span><span>$res</span> = json_decode(<span>$this</span>->httpGet(<span>$url</span><span>));
      </span><span>$access_token</span> = <span>$res</span>-><span>access_token;
      </span><span>if</span> (<span>$access_token</span><span>) {
        </span><span>$data</span>->expire_time = <span>time</span>() + 7000<span>;
        </span><span>$data</span>->access_token = <span>$access_token</span><span>;
        </span><span>$fp</span> = <span>fopen</span>("access_token.json", "w"<span>);
        </span><span>fwrite</span>(<span>$fp</span>, json_encode(<span>$data</span><span>));
        </span><span>fclose</span>(<span>$fp</span><span>);
      }
    } </span><span>else</span><span> {
      </span><span>$access_token</span> = <span>$data</span>-><span>access_token;
    }
    </span><span>return</span> <span>$access_token</span><span>;
  }

  </span><span>private</span> <span>function</span> httpGet(<span>$url</span><span>) {
    </span><span>$curl</span> =<span> curl_init();
    curl_setopt(</span><span>$curl</span>, CURLOPT_RETURNTRANSFER, <span>true</span><span>);
    curl_setopt(</span><span>$curl</span>, CURLOPT_TIMEOUT, 500<span>);
    curl_setopt(</span><span>$curl</span>, CURLOPT_SSL_VERIFYPEER, <span>false</span><span>);
    curl_setopt(</span><span>$curl</span>, CURLOPT_SSL_VERIFYHOST, <span>false</span><span>);
    curl_setopt(</span><span>$curl</span>, CURLOPT_URL, <span>$url</span><span>);

    </span><span>$res</span> = curl_exec(<span>$curl</span><span>);
    curl_close(</span><span>$curl</span><span>);

    </span><span>return</span> <span>$res</span><span>;
  }
}</span>

二、收貨地址共享接口

一. 簡(jiǎn)介

微信收貨地址共享,是指用戶在微信瀏覽器內(nèi)打開(kāi)網(wǎng)頁(yè),填寫過(guò)地址后,后續(xù)可以免填寫支持快速選擇,也可增加和編輯。此地址為用戶屬性,可在各商戶的網(wǎng)頁(yè)中共享使用。支持原生控件填寫地址,地址數(shù)據(jù)會(huì)傳遞到商戶。

地址共享是基于微信JavaScript API 實(shí)現(xiàn),只能在微信內(nèi)置瀏覽器中使用,其他瀏覽器調(diào)用無(wú)效。同時(shí),需要微信5.0 版本才能支持,建議通過(guò)user agent 來(lái)確定用戶當(dāng)前的版本號(hào)后再調(diào)用地址接口。以iPhone 版本為例,可以通過(guò)useragent可獲取如下微信版本示例信息:"Mozilla/5.0(iphone;CPU iphone OS 5_1_1 like Mac OS X)AppleWebKit/534.46(KHTML,like Geocko) Mobile/9B206MicroMessenger/5.0"其中5.0 為用戶安裝的微信版本號(hào),商戶可以判定版本號(hào)是否高于或者等于5.0。

地址格式
微信地址共享使用的數(shù)據(jù)字段包括:

  • 收貨人姓名
  • 地區(qū),省市區(qū)三級(jí)
  • 詳細(xì)地址
  • 郵編
  • 聯(lián)系電話

其中,地區(qū)對(duì)應(yīng)是國(guó)標(biāo)三級(jí)地區(qū)碼,如“廣東省-廣州市-天河區(qū)”,對(duì)應(yīng)的郵編是是510630。詳情參考鏈接:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201401/t20140116_501070.html

2. 綁定域名

先登錄微信公眾平臺(tái)進(jìn)入“公眾號(hào)設(shè)置”的“功能設(shè)置”里填寫“JS接口安全域名”。

3. 獲取簽名包

<?<span>php
</span><span>require_once</span> "jssdk.php"<span>;
</span><span>$jssdk</span> = <span>new</span> JSSDK("yourAppID", "yourAppSecret"<span>);
</span><span>$signPackage</span> = <span>$jssdk</span>-><span>GetSignPackage();
</span>?>

4. 引入JS文件

在需要調(diào)用JS接口的頁(yè)面引入如下JS文件:

特別注意:JS-SDK版本需使用http://res.wx.qq.com/open/js/jweixin-1.1.0.js

<span><</span><span>script </span><span>src</span><span>="http://res.wx.qq.com/open/js/jweixin-1.1.0.js"</span><span>></</span><span>script</span><span>></span>

5.通過(guò)config接口注入權(quán)限驗(yàn)證配置

所有需要使用JS-SDK的頁(yè)面必須先注入配置信息,否則將無(wú)法調(diào)用。

        <script><span>
          wx.config({
            debug: </span><span>false</span><span>,
            appId: </span>'<?php echo $signPackage["appId"];?>'<span>,
            timestamp: </span><?php echo $signPackage["timestamp"];?><span>,
            nonceStr: </span>'<?php echo $signPackage["nonceStr"];?>'<span>,
            signature: </span>'<?php echo $signPackage["signature"];?>'<span>,
            jsApiList: [
              </span><span>//</span><span> 所有要調(diào)用的 API 都要加到這個(gè)列表中</span>
                'checkJsApi'<span>,
                </span>'openAddress'<span>,
              ]
          });
        </span></script>

5. 通過(guò)ready接口處理成功驗(yàn)證

需要在頁(yè)面加載時(shí)就調(diào)用,需要把相關(guān)接口放在ready函數(shù)中調(diào)用來(lái)確保正確執(zhí)行

wx.ready(<span>function</span><span> () {
});</span>

5.1 通過(guò)checkJsApi判斷當(dāng)前客戶端版本是否支持分享參數(shù)自定義

<span> wx.checkJsApi({
                jsApiList: [
                    </span>'openAddress'<span>,
                ],
                success: </span><span>function</span><span> (res) {
                    alert(JSON.stringify(res));
                }
            });</span>  

5.3. 實(shí)現(xiàn)收貨地址共享

<span>            wx.openAddress({
              trigger: </span><span>function</span><span> (res) {
                alert(</span>'用戶開(kāi)始拉出地址'<span>);
              },
              success: </span><span>function</span><span> (res) {
                alert(</span>'用戶成功拉出地址'<span>);
                alert(JSON.stringify(res));
                document.form1.address1.value         </span>=<span> res.provinceName;
                document.form1.address2.value         </span>=<span> res.cityName;
                document.form1.address3.value         </span>=<span> res.countryName;
                document.form1.detail.value           </span>=<span> res.detailInfo;
                document.form1.national.value         </span>=<span> res.nationalCode;
                document.form1.user.value            </span>=<span> res.userName;
                document.form1.phone.value            </span>=<span> res.telNumber;
                document.form1.postcode.value         </span>=<span> res.postalCode;
                document.form1.errmsg.value         </span>=<span> res.errMsg;
                document.form1.qq.value             </span>= 1354386063<span>;
              },
              cancel: </span><span>function</span><span> (res) {
                alert(</span>'用戶取消拉出地址'<span>);
              },
              fail: </span><span>function</span><span> (res) {
                alert(JSON.stringify(res));
              }
            });</span>

?

返回說(shuō)明

返回值

說(shuō)明

errMsg

獲取編輯收貨地址成功返回“openAddress:ok”。

userName

收貨人姓名。

postalCode

郵編。

provinceName

國(guó)標(biāo)收貨地址第一級(jí)地址(?。?。

cityName

國(guó)標(biāo)收貨地址第二級(jí)地址(市)。

countryName

國(guó)標(biāo)收貨地址第三級(jí)地址(國(guó)家)。

detailInfo

詳細(xì)收貨地址信息。

nationalCode

收貨地址國(guó)家碼。

?

三、實(shí)現(xiàn)效果

????

?

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1121986.htmlTechArticle微信支付開(kāi)發(fā)(7) 收貨地址共享接口V2,v2 關(guān)鍵字:微信公眾平臺(tái) JSSDK 發(fā)送給朋友 收貨地址共享接口openAddress 作者:方倍工作室 原文:htt...
? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

??? ????
1601
29
PHP ????
1502
276
???
COPY COMICS (?? ? ??? ??) _Copy Comics (NBA) ??? ??? ?? ?? COPY COMICS (?? ? ??? ??) _Copy Comics (NBA) ??? ??? ?? ?? Jun 05, 2025 pm 04:12 PM

??? ???? ?? ?? ? ???? ?? ????? ?????. ???? ????? ????? ?? ????? ???? ???? ? ?? ???? ????? ??? ???? ?? ??? ?? ? ????. ???? ????? ??? ??? ???? ??? ???? ??? ???? ? ????. Copy Comics?? ???? ?? ??? ?? ??? ?? ?? ??? ?? ??? ?? ?? ?????, ???? ???? ?? ??? ???, ???? ?? ??? ???? ??? ?? ??? ??? ? ????.

AI Writing Software? ?? ? ?? 10 ?? AI ?? ????? ??? ?????. AI Writing Software? ?? ? ?? 10 ?? AI ?? ????? ??? ?????. Jun 04, 2025 pm 03:27 PM

2025 ? ?? ?? ???? ??? ?? ???? ??? ??? ?? ??? ? ??? ???? ????? ?? ??, ?? ?? ? ?? ???? ?? ?? ????? ??? ?? 10 ?? ??? ? AI ?? ????? ?? ?????.

?? ??? ?? NIS ??? ?? ???? ????? ??????. NIS Comics ??? ???? ?? ?? ? ??? ?? ??? ?? NIS ??? ?? ???? ????? ??????. NIS Comics ??? ???? ?? ?? ? ??? Jun 12, 2025 pm 08:18 PM

?? ???? ?? ?? ?? ?? ? ?? ?? ??? ? Nice Comics? ????? ?? ??? ?? ??? ?????. ?? ?? ??? ?? ? ??? ?? ???? ??? ???? ?? ??? ???? ??????????. ???? ??? ? ????? ???? ??? ?? ??? ?? NES Comics? ???? ???? ??? ?? ?? ? ??? ???? ??? ?? ??? ?? ? ????. ???? ???? ???? ??? ??? ?? ?????, ?? ??? ??? ?? ???? ?? ??? ??????!

??? ? ??? ?? ?? ?? ??? ?? (? ??? ??) ??? ?? ??? ? ??? ?? ?? ?? ??? ?? (? ??? ??) ??? ?? Jun 12, 2025 pm 08:06 PM

Frogman Comics? ???? ??? ?? ??? ???? ??? ??? ?? ??? ?? ?? ?? ?????? ? ?? ????????. ??? ???? ???? ???? ???? ???? ??? ???? ????? ???? ??? ??? ????. ??? ?? ??? ??? ? ???? ??? ??, ??? ? ?? ???? ???? ??? ????? ??? ??? ??? ????. ?? ??? ???? ???? ?? ???? ??? ?? ? ????. ???? ??? ? ????? ???? ?? ?? ???? ?? ?? ??? ??? ?? ?? ??? ?? ??? ?? ? ? ????.

Baozi Comics (??) _ Baozi Comics (New Entrance) 2025 Baozi Comics (??) _ Baozi Comics (New Entrance) 2025 Jun 05, 2025 pm 04:18 PM

???, ??? ??? ? ?? ???? ???? ???? ?? ??, ????? ??? ?? ???? ???? ???? ???? ?? ??? ????? ??? ??? ???? ?? ? ??? ??? ??? ??? ???? ??? ?? ? ? ????. ??? ?? ??? ?? ??? ??????? ??? ?? ??? ????? ???? ?????? ??? ? ?? ???? ??? ?? ? ??? ???????.

????? ??? Huobi? ?????? ??? ?????? Huobi ???? ??? (??? ???) ????? ??? Huobi? ?????? ??? ?????? Huobi ???? ??? (??? ???) Jun 12, 2025 pm 10:12 PM

Android ?? ?? ???? ?? ??? ?? Huobi/Huobi ?? ?????? ??? ? ????. 1. ????? ????? ?? ??? ??? ? ??????. 2. Huobi/Huobi ?? ? ???? ?? ?? ??????, ????? ???? ?? ? ???? ????? ???? ??? ????? QR ??? ????? AppTresure ? Huawei App Market? ?? ?? ?? ???? ??? ?? ?? ? ?????? ??? ??? ?? ?? ???? ?? ? ????. 3. ???? ? .APK ??? ?? "? ??? ?? ?"?? ??? ????? ????? ?? ??? ??????.

??? ? ????? WeChat? ??? ? ????? ??? ? ????? WeChat? ??? ? ????? Jul 11, 2025 am 03:28 AM

?,??? ??? ????. iPhone ? Android ?? ???? ??? ??? ??? ? ? ??? ?? ??? ????? ?? ??? ???? ??????. ? ??? ? ??? ?????? ??? ??? ? ? ??? ??? ????? ????. ③ ?? ?? ?? ?? ? ??? ???? ? ?? ???? ??? ? ? ??? ?????? ???? ??? ??? ? ????. ?? ????? ?? ?? ???? ? ??/???? ??? ????? ???? ?? ? ?? ??? ?? ?? ???? ???? ?? ?????. ?? ????? ???? "?? ?? ????"? ???? ? ?? ????? ??? ?? ????.

OUYI ?? ? ?? ??? ?? OUYI OK ? ?? ?? ?? OUYI ?? ? ?? ??? ?? OUYI OK ? ?? ?? ?? Jun 09, 2025 pm 05:57 PM

OUYI ?? ? ?? ??? ??? ???? ???? ?? ?? ??? ?? ??? ?? ??? ?? ??? ?? ???? ??? ?? ???????. ???? ?? ?? ??, ?? ??? ?? ? ?????? ?? ??? ??????.

See all articles