程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 微信支付開發(6) 收貨地址共享接口,微信支付接口開發

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

編輯:關於PHP編程

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


關鍵字:微信支付 收貨地址共享
作者:方倍工作室
原文: http://www.cnblogs.com/txw1958/p/weixin-editAddress.html

 

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

一. 簡介

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

地址共享是基於微信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授權

獲取收貨地址之前前需要調用 登錄授權接口獲取到一次OAuth2.0的Access Token 。所以需要做一次授權,這次授權是不彈出確認框的。
其實質就是在用戶訪問

http://www.fangbei.org/wxpay/js_api_call.php

時跳轉到

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://www.fangbei.org/wxpay/js_api_call.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

以此來獲得code參數,並根據code來獲得授權access_token及openid,這個access token將用於收貨地址共享接口。

其實現的詳細流程可參考 微信公眾平台開發(71)OAuth2.0網頁授權

 

二、獲取隨機字符串

生成隨機字符串的方法如下

 

三、生成簽名

參與addrSign 簽名的字段包括:appId、url(調用JavaScript API的網頁url)、timestamp、noncestr、accessToken
對所有待簽名參數按照字段名的ASCII 碼從小到大排序(字典序)後,使用URL 鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串string1。
這裡需要注意的是簽名過程中所有參數名均為小寫字符,例如appId 在排序後字符串則為appid;
對string1作簽名算法,字段名和字段值都采用原始值,不進行URL 轉義。具體簽名算法為addrSign = SHA1(string1)。這裡給出生成addrSign 的具體示例如下:

appId=wx17ef1eaef46752cb
url=http://open.weixin.qq.com/
timeStamp=1384841012
nonceStr=123456
accessToken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmgh5FRA

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

accesstoken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmgh5FRA&appid=wx17ef1eaef46752cb&noncestr=123456&timestamp=1384841012&url=http://open.weixin.qq.com/?code=CODE&state=STATE

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

addrSign=SHA1(accesstoken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmg
h5FRA&appid=wx17ef1eaef46752cb&noncestr=123456&timestamp=1384841012&url=http://open.weixin.qq.com/?code=CODE&state=STATE)=ca604c740945587544a9cc25e58dd090f200e6fb

實現代碼如下

 

四、獲得收貨地址

編輯並獲取用戶收貨地址editAddress接口,在網頁前端調用。
參數列表:

參數必填說明 appId 是 公眾號appID scope 是 填寫“jsapi_address”,獲得編輯地址權限 signType 是 簽名方式,目前僅支持SHA1 addrSign 是 簽名,由各參數一起參與簽名生成 timeStamp 是 時間戳 nonceStr 是 隨機字符串

調用方法如下

參數返回:

返回值說明 err_msg edit_address:ok獲取編輯收貨地址成功 edit_address:fail獲取編輯收貨地址失敗 username 收貨人姓名 telNumber 收貨人電話 addressPostalCode 郵編 proviceFirstStageName 國標收貨地址第一級地址 addressCitySecondStageName 國標收貨地址第二級地址 addressCountiesThirdStageName 國標收貨地址第三級地址 addressDetailInfo 詳細收貨地址信息 nationalCode 收貨地址國家碼

 

 

五、示例

    

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved