天天看點

微信支付開發(6) 收貨位址共享接口

關鍵字:微信支付 收貨位址共享

作者:方倍工作室

<a href="http://www.cnblogs.com/txw1958/p/wxpayv3_native_dynamic_qrcode.html" target="_blank"></a>

本文介紹微信支付下的收貨位址共享接口的開發過程。

微信收貨位址共享,是指使用者在微信浏覽器内打開網頁,填寫過位址後,後續可以免填寫支援快速選擇,也可增加和編輯。此位址為使用者屬性,可在各商戶的網頁中共享使用。支援原生控件填寫位址,位址資料會傳遞到商戶。

位址共享是基于微信JavaScript API 實作,隻能在微信内置浏覽器中使用,其他浏覽器調用無效。同時,需要微信5.0 版本才能支援,建議通過user agent 來确定使用者目前的版本号後再調用位址接口。以iPhone 版本為例,可以通過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 為使用者安裝的微信版本号,商戶可以判定版本号是否高于或者等于5.0。

位址格式

微信位址共享使用的資料字段包括:

收貨人姓名

地區,省市區三級

詳細位址

郵編

聯系電話

其中,地區對應是國标三級地區碼,如“廣東省-廣州市-天河區”,對應的郵編是是510630。詳情參考連結:http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201401/t20140116_501070.html

擷取收貨位址之前前需要調用 登入授權接口擷取到一次OAuth2.0的Access Token 。是以需要做一次授權,這次授權是不彈出确認框的。

其實質就是在使用者通路

時跳轉到

以此來獲得code參數,并根據code來獲得授權access_token及openid,這個access token将用于收貨位址共享接口。

微信支付開發(6) 收貨位址共享接口

生成随機字元串的方法如下

微信支付開發(6) 收貨位址共享接口

參與addrSign 簽名的字段包括:appId、url(調用JavaScript API的網頁url)、timestamp、noncestr、accessToken

對所有待簽名參數按照字段名的ASCII 碼從小到大排序(字典序)後,使用URL 鍵值對的格式(即key1=value1&amp;key2=value2…)拼接成字元串string1。

這裡需要注意的是簽名過程中所有參數名均為小寫字元,例如appId 在排序後字元串則為appid;

對string1作簽名算法,字段名和字段值都采用原始值,不進行URL 轉義。具體簽名算法為addrSign = SHA1(string1)。這裡給出生成addrSign 的具體示例如下:

i:經過a過程鍵值對排序後得到string1 為:

ii:經過b過程簽名後可得到:

實作代碼如下

微信支付開發(6) 收貨位址共享接口

編輯并擷取使用者收貨位址editAddress接口,在網頁前端調用。

參數清單:

參數

必填

說明

appId

公衆号appID

scope

填寫“jsapi_address”,獲得編輯位址權限

signType

簽名方式,目前僅支援SHA1

addrSign

簽名,由各參數一起參與簽名生成

timeStamp

時間戳

nonceStr

随機字元串

調用方法如下

微信支付開發(6) 收貨位址共享接口

參數傳回:

傳回值

err_msg

edit_address:ok擷取編輯收貨位址成功

edit_address:fail擷取編輯收貨位址失敗

username

telNumber

收貨人電話

addressPostalCode

proviceFirstStageName

國标收貨位址第一級位址

addressCitySecondStageName

國标收貨位址第二級位址

addressCountiesThirdStageName

國标收貨位址第三級位址

addressDetailInfo

詳細收貨位址資訊

nationalCode

收貨位址國家碼

微信支付開發(6) 收貨位址共享接口
微信支付開發(6) 收貨位址共享接口
微信支付開發(6) 收貨位址共享接口
微信支付開發(6) 收貨位址共享接口
微信支付開發(6) 收貨位址共享接口