php開發微信支付擷取使用者地址,php開發擷取使用者_PHP教程

來源:互聯網
上載者:User

php開發支付擷取使用者地址,php開發擷取使用者


使用擷取地址資訊是和支付一道申請的,支付申請通過,就可以使用該功能。

商城中,使用支付擷取使用者的收貨地址,可以省略使用者輸入地址資訊的繁複流程,提高使用者體驗。

但是可能是因為牽扯到使用者隱私,所以在使用過程中,需要使用者自己主動選擇使用該功能,並且是通過點擊的操作,我們才可以擷取到使用者的收貨地址,這一點是要注意的。

操作流程如下:

1.使用者開啟購物車頁面,點擊結算,跳轉到一個的oauth2的頁面,地址為:https://open.weixin.qq.com/connect/oauth2/authorize

2.oauth2頁面將連結redirect到結算頁面,使用PHP擷取到連結中的code參數,經過處理擷取到accessToken值。產生簽名,組裝成數組參數傳遞到頁面。

3.結算頁面使用使用者點擊事件,結合2中產生的數組參數完成擷取地址的功能。這裡可以有一個將擷取到的地址使用ajax記錄到資料庫的功能,那麼客戶下次購物的時候,就不用麻煩了。

詳細的講下需要注意的幾點:

1.跳轉到oauth2的這個步驟,在使用者看來是沒有多少差別的,但是在程式這裡就有很多的事情要做。首先是oauth2頁面的參數,其中appid為appid,redirect_uri為urlencode後的訂單結算頁面的地址,response_type為固定的code,scope為固定的snsapi_base,state在這個地方可隨意填寫,還有一個#wechat_redirect,那麼該連結的最終樣子為:

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

2.使用者訪問到該地址,被重新置放到追加了code參數訂單結算地址,在此頁面需要由程式擷取到accessToken,注意該accessToken為擷取使用者資訊的accessToken跟另外一個和互動的access token不是同一個。

使用GET請求就可以擷取該accessToken,可以使用curl或者是file_get_contents。請求地址為:

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

這裡有一點需要注意,有時候會抽風,會連續多次請求訂單結算頁面,造成accessToken失效,需特殊處理。

這裡的簽名產生和支付裡面的簽名不一樣,這裡的要簡單很多,只是加密一個字串,格式為:accesstoken=ACCESSTOKEN&appid=APPID&noncestr=32位隨機字串&timestamp=時間戳記&url=當前頁面的URL,然後對該字串進行sha1加密。

在前端頁面中需要使用一連串的參數來實現擷取地址的功能,分別是appID,scope(預設為jsapi_address),signType(預設為sha1),addrSign(上面sha1加密後的字串),timeStamp(同上文的時間戳記),nonceStr(同上文的隨機字串)。

3.在前端頁面,使用下面的js函數來完成擷取使用者地址的操作:

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')  {                  //將地址資訊存入資料庫      //將地址資訊顯示在當前頁面            document.getElementById("address_info").innerHTML="收件者:"+res.userName+"   "+res.telNumber+"
收貨地址:"+res.proviceFirstStageName+res.addressCitySecondStageName+res.addressCountiesThirdStageName+res.addressDetailInfo; } else{ alert("擷取地址失敗,請重新點擊"); } }); }

至此,使用擷取使用者共用地址的開發就完畢了。

http://www.bkjia.com/PHPjc/1058151.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1058151.htmlTechArticlephp開發支付擷取使用者地址,php開發擷取使用者 使用擷取地址資訊是和支付一道申請的,支付申請通過,就可以使用該功能。...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.