php如何開(kāi)發(fā)微信支付獲取用戶地址

這篇文章將為大家詳細(xì)講解有關(guān)php如何開(kāi)發(fā)微信支付獲取用戶地址,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信平臺(tái)小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站設(shè)計(jì)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:成都VR全景等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致贊揚(yáng)!

微信支付的收貨地址共享功能,主要是統(tǒng)一的管理微信用戶個(gè)人的收貨地址,其收貨地址可以被應(yīng)用于所有可以調(diào)用的開(kāi)發(fā)者。用戶的收貨地址包含了很多個(gè)人信息,因此該接口必須要通過(guò)申請(qǐng),申請(qǐng)的方式可以在mp平臺(tái)上查看到。

使用微信獲取地址信息是和微信支付一道申請(qǐng)的,微信支付申請(qǐng)通過(guò),就可以使用該功能。

微信商城中,使用微信支付獲取用戶的收貨地址,可以省略用戶輸入地址信息的繁復(fù)流程,提高用戶體驗(yàn)。

但是可能是因?yàn)闋砍兜接脩綦[私,所以在使用過(guò)程中,需要用戶自己主動(dòng)選擇使用該功能,并且是通過(guò)點(diǎn)擊的操作,我們才可以獲取到用戶的收貨地址,這一點(diǎn)是要注意的。

操作流程如下:

1.用戶打開(kāi)購(gòu)物車頁(yè)面,點(diǎn)擊結(jié)算,跳轉(zhuǎn)到一個(gè)微信的oauth3的頁(yè)面,地址為:https://open.weixin.qq.com/connect/oauth3/authorize

2.oauth3頁(yè)面將鏈接redirect到結(jié)算頁(yè)面,使用PHP獲取到鏈接中的code參數(shù),經(jīng)過(guò)處理獲取到accessToken值。生成簽名,組裝成數(shù)組參數(shù)傳遞到頁(yè)面。

3.結(jié)算頁(yè)面使用用戶點(diǎn)擊事件,結(jié)合2中生成的數(shù)組參數(shù)完成獲取地址的功能。這里可以有一個(gè)將獲取到的地址使用ajax記錄到數(shù)據(jù)庫(kù)的功能,那么客戶下次購(gòu)物的時(shí)候,就不用麻煩了。

詳細(xì)的講下需要注意的幾點(diǎn):

1.跳轉(zhuǎn)到微信oauth3的這個(gè)步驟,在用戶看來(lái)是沒(méi)有多少差別的,但是在程序這里就有很多的事情要做。首先是oauth3頁(yè)面的參數(shù),其中appid為微信appid,redirect_uri為urlencode后的訂單結(jié)算頁(yè)面的地址,response_type為固定的code,scope為固定的snsapi_base,state在這個(gè)地方可隨意填寫(xiě),還有一個(gè)#wechat_redirect,那么該鏈接的最終樣子為:

https://open.weixin.qq.com/connect/oauth3/authorize?appid=APPID&redirect_uri=訂單結(jié)算地址&response_type=code&scope=snsapi_base&state=隨意填寫(xiě)#wechat_redirect

2.用戶訪問(wèn)到該地址,被重新定位到追加了code參數(shù)訂單結(jié)算地址,在此頁(yè)面需要由程序獲取到accessToken,注意該accessToken為獲取用戶信息的accessToken跟另外一個(gè)和微信交互的access token不是同一個(gè)。

使用GET請(qǐng)求就可以獲取該accessToken,可以使用curl或者是file_get_contents。請(qǐng)求地址為:

https://api.weixin.qq.com/sns/oauth3/access_token?appid=APPID&secret=APP_SECRET&code=CODE&grant_type=authorization_code;

這里有一點(diǎn)需要注意,有時(shí)候微信會(huì)抽風(fēng),會(huì)連續(xù)多次請(qǐng)求訂單結(jié)算頁(yè)面,造成accessToken失效,需特殊處理。

這里的簽名生成和微信支付里面的簽名不一樣,這里的要簡(jiǎn)單很多,只是加密一個(gè)字符串,格式為:accesstoken=ACCESSTOKEN&appid=APPID&noncestr=32位隨機(jī)字符串&timestamp=時(shí)間戳&url=當(dāng)前頁(yè)面的URL,然后對(duì)該字符串進(jìn)行sha1加密。

在前端頁(yè)面中需要使用一連串的參數(shù)來(lái)實(shí)現(xiàn)獲取地址的功能,分別是appID,scope(默認(rèn)為jsapi_address),signType(默認(rèn)為sha1),addrSign(上面sha1加密后的字符串),timeStamp(同上文的時(shí)間戳),nonceStr(同上文的隨機(jī)字符串)。

3.在前端頁(yè)面,使用下面的js函數(shù)來(lái)完成獲取用戶地址的操作:

function get_addr()
{
  WeixinJSBridge.invoke('editAddress',{
  "appId" : "<?php echo $sign['appId']?>",
  "scope" : "jsapi_address",
  "signType" : "sha1",
  "addrSign" : "<?php echo $sign['addrSign']?>",
  "timeStamp" : "<?php echo $sign['timeStamp']?>",
  "nonceStr" : "<?php echo $sign['nonceStr']?>",
  },function(res){
  if(res.err_msg == 'edit_address:ok')
  {
       
       
      //將地址信息存入數(shù)據(jù)庫(kù)
      //將地址信息顯示在當(dāng)前頁(yè)面
      
      document.getElementById("address_info").innerHTML="<b>收件人:"+res.userName+"</b>   <b>"+res.telNumber+"</b><br /> 收貨地址:"+res.proviceFirstStageName+res.addressCitySecondStageName+res.addressCountiesThirdStageName+res.addressDetailInfo;
       
 } else{ alert("獲取地址失敗,請(qǐng)重新點(diǎn)擊"); } }); }

至此,使用微信獲取用戶共享地址的開(kāi)發(fā)就完畢了。

關(guān)于“php如何開(kāi)發(fā)微信支付獲取用戶地址”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

網(wǎng)站欄目:php如何開(kāi)發(fā)微信支付獲取用戶地址
分享路徑:http://bm7419.com/article4/igssoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、小程序開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)、ChatGPT企業(yè)建站、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司