如何开通微信支付付开通正常了,如何设置开启共享收货地址

微订微信支付设置教程_百度经验
该经验图片、文字中可能存在外站链接或电话号码等,请注意识别,谨防上当受骗!&&&&&&互联网微订微信支付设置教程听语音1234567
百度经验:jingyan.baidu.com微信支付现已全面开放,无须缴纳两万元保证金。这就意味着,只要是企业,有相关证件都可以申请属于自己的微信支付,顾客付款直接到您自己的账户。那么,微信支付申请后,您就可以在微订后台,做相关设置,实现顾客下单使用微信支付到帐。百度经验:jingyan.baidu.com微信公众平台微订百度经验:jingyan.baidu.com1首先,微信支付的申请具体流程,大家可登录微信公众平台官网(注:需要认证的服务号才能申请),在微信后台有详细流程:2那么,微信支付申请审核通过后,您就可以收到微信发给您的邮件,里面有您账户相关参数:3最后,您就可以到微订系统后台,填写相关支付设置:4同时,您也需要在下单设置里面,开启微信支付:END百度经验:jingyan.baidu.com1一,设置网页授权回调域名:进入微信公众平台后台,找到开发者中心,修改网页授权获取用户信息,如下图所示:2二、修改微信支付授权目录,进入微信公众平台后台,找到微信支付-开发者配置,勾选JS API网页支付,然后添加系统后台的授权目录:3三、获取应用ID和应用密钥,进入微信公众平台后台,进入开发者中心,点击完整显示应用密钥,然后复制ID和密钥到系统后台。4四、获取商户号,在微信支付审核通过邮件,复制商户号到系统后台。5五、设置微信支付API密钥,登录微信支付商户平台:https://mch.weixin.qq.com,找到账户设置-密码安全,点击设置密钥(要先安装证书),然后复制系统后台生成的API密钥到这里就可以。6六、最后,在微订系统后台,店铺管理-店铺列表-修改-下单设置,开启微信支付。END百度经验:jingyan.baidu.com微信支付参数一定不能填写错检查复制的参数有没有空格之类的原作者:微订经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。投票(4)已投票(4)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验004160热门杂志第1期你不知道的iPad技巧3764次分享第1期win7电脑那些事6626次分享第2期新人玩转百度经验1399次分享第1期Win8.1实用小技巧2650次分享第1期小白装大神1910次分享◆请扫描分享到朋友圈该经验图片、文字中可能存在外站链接或电话号码等,请注意识别,谨防上当受骗!微信支付开发(7) 收货地址共享接口V2
时间: 20:06:37
&&&& 阅读:225
&&&& 评论:
&&&& 收藏:0
标签:在这篇微信公众平台开发教程中,我们将介绍如何在网页中实现获取收货地址的功能。收货地址共享接口 在日 进行过升级,日之后只能使用新接口,本教程为新版接口的教程!本文分为以下二个部分:生成JS-SDK权限验证签名实现获取共享收货地址一、微信JS-SDK1. 获得Access Tokenaccess token的获得方法在前面有介绍,详情见&2. 获取jsapi_ticket生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket),接口地址如下https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi成功返回如下JSON:{
&errcode&:0,
&errmsg&:&ok&,
&ticket&:&bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA&,
&expires_in&:7200
}获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了。3. 签名算法实现签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。即signature=sha1(string1)。 示例:noncestr=Wm3WZYTPz0wzccnW
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
timestamp=
url=http://mp.weixin.qq.com?params=value步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=&url=http://mp.weixin.qq.com?params=value步骤2. 对string1进行sha1签名,得到signature:0f9de62fce790f9a083d5c99e95740ceb90c27ed完整代码如下&?php
class JSSDK {
private $appId;
private $appSecret;
public function __construct($appId, $appSecret) {
$this-&appId = $appId;
$this-&appSecret = $appSecret;
public function getSignPackage() {
$jsapiTicket = $this-&getJsApiTicket();
// 注意 URL 一定要动态获取,不能 hardcode.
$protocol = (!empty($_SERVER[‘HTTPS‘]) && $_SERVER[‘HTTPS‘] !== ‘off‘ || $_SERVER[‘SERVER_PORT‘] == 443) ? &https://& : &http://&;
$url = &$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]&;
$timestamp = time();
$nonceStr = $this-&createNonceStr();
// 这里参数的顺序要按照 key 值 ASCII 码升序排序
$string = &jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url&;
$signature = sha1($string);
$signPackage = array(
=& $this-&appId,
&nonceStr&
=& $nonceStr,
&timestamp& =& $timestamp,
&signature& =& $signature,
&rawString& =& $string
return $signPackage;
private function createNonceStr($length = 16) {
$chars = &abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&;
$str = &&;
for ($i = 0; $i & $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
return $str;
private function getJsApiTicket() {
// jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
$data = json_decode(file_get_contents(&jsapi_ticket.json&));
if ($data-&expire_time & time()) {
$accessToken = $this-&getAccessToken();
// 如果是企业号用以下 URL 获取 ticket
// $url = &https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken&;
$url = &https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken&;
$res = json_decode($this-&httpGet($url));
$ticket = $res-&
if ($ticket) {
$data-&expire_time = time() + 7000;
$data-&jsapi_ticket = $ticket;
$fp = fopen(&jsapi_ticket.json&, &w&);
fwrite($fp, json_encode($data));
fclose($fp);
$ticket = $data-&jsapi_
return $ticket;
private function getAccessToken() {
// access_token 应该全局存储与更新,以下代码以写入到文件中做示例
$data = json_decode(file_get_contents(&access_token.json&));
if ($data-&expire_time & time()) {
// 如果是企业号用以下URL获取access_token
// $url = &https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this-&appId&corpsecret=$this-&appSecret&;
$url = &https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this-&appId&secret=$this-&appSecret&;
$res = json_decode($this-&httpGet($url));
$access_token = $res-&access_
if ($access_token) {
$data-&expire_time = time() + 7000;
$data-&access_token = $access_token;
$fp = fopen(&access_token.json&, &w&);
fwrite($fp, json_encode($data));
fclose($fp);
$access_token = $data-&access_
return $access_token;
private function httpGet($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}&二、收货地址共享接口1. 简介微信收货地址共享,是指用户在微信浏览器内打开网页,填写过地址后,后续可以免填写支持快速选择,也可增加和编辑。此地址为用户属性,可在各商户的网页中共享使用。支持原生控件填写地址,地址数据会传递到商户。地址共享是基于微信JavaScript API 实现,只能在微信内置浏览器中使用,其他浏览器调用无效。同时,需要微信5.0 版本才能支持,建议通过user agent 来确定用户当前的版本号后再调用地址接口。以iPhone 版本为例,可以通过useragent可获取如下微信版本示例信息:&Mozilla/5.0(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/070.html2. 绑定域名先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。3. 获取签名包&?php
require_once &jssdk.php&;
$jssdk = new JSSDK(&yourAppID&, &yourAppSecret&);
$signPackage = $jssdk-&GetSignPackage();
?&4. 引入JS文件在需要调用JS接口的页面引入如下JS文件:特别注意:JS-SDK版本需使用http://res.wx.qq.com/open/js/jweixin-1.1.0.js&script src=&http://res.wx.qq.com/open/js/jweixin-1.1.0.js&&&/script&5.通过config接口注入权限验证配置所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用。
wx.config({
debug: false,
appId: ‘&?php echo $signPackage[&appId&];?&‘,
timestamp: &?php echo $signPackage[&timestamp&];?&,
nonceStr: ‘&?php echo $signPackage[&nonceStr&];?&‘,
signature: ‘&?php echo $signPackage[&signature&];?&‘,
jsApiList: [
// 所有要调用的 API 都要加到这个列表中
‘checkJsApi‘,
‘openAddress‘,
&/script&6. 通过ready接口处理成功验证需要在页面加载时就调用,需要把相关接口放在ready函数中调用来确保正确执行wx.ready(function () {
});7. 通过checkJsApi判断当前客户端版本是否支持分享参数自定义 wx.checkJsApi({
jsApiList: [
‘openAddress‘,
success: function (res) {
alert(JSON.stringify(res));
8. 实现收货地址共享
wx.openAddress({
trigger: function (res) {
alert(‘用户开始拉出地址‘);
success: function (res) {
alert(‘用户成功拉出地址‘);
alert(JSON.stringify(res));
document.form1.address1.value
= res.provinceN
document.form1.address2.value
= res.cityN
document.form1.address3.value
= res.countryN
document.form1.detail.value
= res.detailI
document.form1.national.value
= res.nationalC
document.form1.user.value
= res.userN
document.form1.phone.value
= res.telN
document.form1.postcode.value
= res.postalC
document.form1.errmsg.value
= res.errM
document.form1.qq.value
cancel: function (res) {
alert(‘用户取消拉出地址‘);
fail: function (res) {
alert(JSON.stringify(res));
});返回说明返回值说明errMsg获取编辑收货地址成功返回“openAddress:ok”。userName收货人姓名。postalCode邮编。provinceName国标收货地址第一级地址(省)。cityName国标收货地址第二级地址(市)。countryName国标收货地址第三级地址(国家)。detailInfo详细收货地址信息。nationalCode收货地址国家码。&三、实现效果&&&&标签:原文地址:http://blog.csdn.net/pondbay/article/details/
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!微信支付开发收货地址共享接口 -微信开发-PHP中文网QQ群微信公众号还没有收藏微信支付开发收货地址共享接口 本文介绍微信支付下的收货地址共享接口的开发过程。一. 简介微信收货地址共享,是指用户在微信浏览器内打开网页,填写过地址后,后续可以免填写支持快速选择,也可增加和编辑。此地址为用户属性,可在各商户的网页中共享使用。支持原生控件填写地址,地址数据会传递到商户。地址共享是基于微信JavaScript API 实现,只能在微信内置浏览器中使用,其他浏览器调用无效。同时,需要微信5.0 版本才能支持,建议通过user agent 来确定用户当前的版本号后再调用地址接口。以iPhone 版本为例,可以通过useragent可获取如下微信版本示例信息:&Mozilla/5.0(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。详情参考链接: 二. OAuth2.0授权获取收货地址之前前需要调用 登录授权接口获取到一次OAuth2.0的Access Token 。所以需要做一次授权,这次授权是不弹出确认框的。其实质就是在用户访问时跳转到://www.php.cn/以此来获得code参数,并根据code来获得授权access_token及openid,这个access token将用于收货地址共享接口。其实现的详细流程可参考 微信公众平台开发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
timeStamp=
nonceStr=123456
accessToken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmgh5FRAi:经过a过程键值对排序后得到string1 为:accesstoken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmgh5FRA&appid=wx17ef1eaef46752cb&noncestr=123456&timestamp=&url=ii:经过b过程签名后可得到:addrSign=SHA1(accesstoken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmg
h5FRA&appid=wx17ef1eaef46752cb&noncestr=123456&timestamp=&url=)=ca604ca9cc25e58dd090f200e6fb实现代码如下 四、获得收货地址编辑并获取用户收货地址editAddress接口,在网页前端调用。参数列表:参数必填说明appId是公众号appIDscope是填写“jsapi_address”,获得编辑地址权限signType是签名方式,目前仅支持SHA1addrSign是签名,由各参数一起参与签名生成timeStamp是时间戳nonceStr是随机字符串调用方法如下参数返回:返回值说明err_msgedit_address:ok获取编辑收货地址成功edit_address:fail获取编辑收货地址失败username收货人姓名telNumber收货人电话addressPostalCode邮编proviceFirstStageName国标收货地址第一级地址addressCitySecondStageName国标收货地址第二级地址addressCountiesThirdStageName国标收货地址第三级地址addressDetailInfo详细收货地址信息nationalCode收货地址国家码
六、完整代码&?php
方倍工作室
CopyRight 2014 All Rights Reserved
define('APPID',
&wx—bc13e&);
define('APPSECRET',
&2b21b42d0c497de9a691a6bb&);
class class_weixin
var $appid = APPID;
var $appsecret = APPSECRET;
//构造函数,获取Access Token
public function __construct($appid = NULL, $appsecret = NULL)
if($appid && $appsecret){
$this-&appid = $
$this-&appsecret = $
//生成OAuth2的URL
public function oauth2_authorize($redirect_url, $scope, $state = NULL)
$url = &https://open.weixin.qq.com/connect/oauth2/authorize?appid=&.$this-&appid.&&redirect_uri=&.$redirect_url.&&response_type=code&scope=&.$scope.&&state=&.$state.&#wechat_redirect&;
//生成OAuth2的Access Token
public function oauth2_access_token($code)
$url = &https://api.weixin.qq.com/sns/oauth2/access_token?appid=&.$this-&appid.&&secret=&.$this-&appsecret.&&code=&.$code.&&grant_type=authorization_code&;
$res = $this-&http_request($url);
return json_decode($res, true);
//生成随机字符串
function create_noncestr($length = 16)
$chars = &abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&;
$str = &&;
for ($i = 0; $i & $ $i++ ){
$str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);
//生成签名
function get_biz_sign($bizObj)
//参数小写
foreach ($bizObj as $k =& $v){
$bizParameters[strtolower($k)] = $v;
//字典序排序
ksort($bizParameters);
//URL键值对拼成字符串
$buff = &&;
foreach ($bizParameters as $k =& $v){
$buff .= $k.&=&.$v.&&&;
//去掉最后一个多余的&
$buff2 = substr($buff, 0, strlen($buff) - 1);
//sha1签名
return sha1($buff2);
//HTTP请求(支持HTTP/HTTPS,支持GET/POST)
protected function http_request($url, $data = null)
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$output = curl_exec($curl);
curl_close($curl);
require_once('wxaddr.class.php');
$weixin = new class_weixin();
$url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if (!isset($_GET[&code&])){
$jumpurl = $weixin-&oauth2_authorize($url, &snsapi_base&, &fangbei&);
Header(&Location: $jumpurl&);
$oauth2_access_token = $weixin-&oauth2_access_token($_GET[&code&]);
$access_token = $oauth2_access_token['access_token'];
$timestamp = strval(time());
$noncestr = $weixin-&create_noncestr();
$obj['appId']
= $weixin-&
$obj['url']
$obj['timeStamp']
$obj['noncestr']
$obj['accesstoken']
= $access_
$signature
= $weixin-&get_biz_sign($obj);
&!DOCTYPE html&
&meta http-equiv=&Content-Type& content=&text/ charset=UTF-8&&
&title&获取共享收货地址&/title&
&meta name=&viewport& content=&width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=&&
&script language=&javascript&&
function callpay()
WeixinJSBridge.invoke('editAddress',{
&appId& : &&?php echo $obj['appId'];?&&,
&scope& : &jsapi_address&,
&signType& : &sha1&,
&addrSign& : &&?php echo $?&&,
&timeStamp& : &&?php echo $?&&,
&nonceStr& : &&?php echo $?&&,
},function(res){
alert(JSON.stringify(res));
document.form1.address1.value
= res.proviceFirstStageN
document.form1.address2.value
= res.addressCitySecondStageN
document.form1.address3.value
= res.addressCountiesThirdStageN
document.form1.detail.value
= res.addressDetailI
document.form1.national.value
= res.nationalC
document.form1.user.value
= res.userN
document.form1.phone.value
= res.telN
document.form1.postcode.value
= res.addressPostalC
document.form1.errmsg.value
= res.err_
&form name=&form1& target=&_blank&&
&table border=&1&&
&colgroup&&col width=&20%&&&col width=&80%&&&/colgroup&
&TR&&th&结果&/th&&th&&INPUT value=&& name=&errmsg& id=&9&&&/th&
&TR&&th&国家码&/th&&th&&INPUT value=&& name=&national& id=&6&&&/th&
&TR&&th&国家&/th&&th&&INPUT value=&& name=&address3& id=&3&&&/th&
&TR&&th&省&/th&&th&&INPUT value=&& name=&address1& id=&1&&&/th&
&tr&&th&市&/th&&th&&INPUT value=&& name=&address2& id=&2&&&/th&
&TR&&th&详细&/th&&th&&INPUT value=&& name=&detail&
id=&4&&&/th&
&TR&&th&收货人&/th&&th&&INPUT value=&& name=&user& id=&7&&&/th&
&TR&&th&电话&/th&&th&&INPUT value=&& name=&phone&
id=&5&&&/th&
&TR&&th&邮编&/th&&th&&INPUT value=&& name=&postcode& id=&8&&&/th&
&button type=&button& onclick=&callpay()&&获取收货地址&/button&
&/html& 更多微信支付开发收货地址共享接口 相关文章请关注PHP中文网!共3篇705点赞收藏.php.cn&猜你喜欢PHP中文网:独家原创,永久免费的在线,php技术学习阵地!
All Rights Reserved | 皖B2-QQ群:关注微信公众号微信支付开发(6) 收货地址共享接口
时间: 21:10:42
&&&& 阅读:410
&&&& 评论:
&&&& 收藏:0
标签:关键字:微信支付&收货地址共享作者:方倍工作室原文:&
本文介绍微信支付下的收货地址共享接口的开发过程。
微信收货地址共享,是指用户在微信浏览器内打开网页,填写过地址后,后续可以免填写支持快速选择,也可增加和编辑。此地址为用户属性,可在各商户的网页中共享使用。支持原生控件填写地址,地址数据会传递到商户。
地址共享是基于微信JavaScript API 实现,只能在微信内置浏览器中使用,其他浏览器调用无效。同时,需要微信5.0 版本才能支持,建议通过user agent 来确定用户当前的版本号后再调用地址接口。以iPhone 版本为例,可以通过useragent可获取如下微信版本示例信息:"Mozilla/5.0(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/070.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=wx8888&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将用于收货地址共享接口。
其实现的详细流程可参考&
二、获取随机字符串
生成随机字符串的方法如下
三、生成签名
参与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=
nonceStr=123456
accessToken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmgh5FRA
i:经过a过程键值对排序后得到string1 为:
accesstoken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmgh5FRA&appid=wx17ef1eaef46752cb&noncestr=123456&timestamp=&url=http://open.weixin.qq.com/?code=CODE&state=STATE
ii:经过b过程签名后可得到:
addrSign=SHA1(accesstoken=OezXcEiiBSKSxW0eoylIeBFk1b8VbNtfWALJ5g6aMgZHaqZwK4euEskSn78Qd5pLsfQtuMdgmhajVM5QDm24W8X3tJ18kz5mhmkUcI3RoLm7qGgh1cEnCHejWQo8s5L3VvsFAdawhFxUuLmg
h5FRA&appid=wx17ef1eaef46752cb&noncestr=123456&timestamp=&url=http://open.weixin.qq.com/?code=CODE&state=STATE)=ca604ca9cc25e58dd090f200e6fb
实现代码如下
四、获得收货地址
编辑并获取用户收货地址editAddress接口,在网页前端调用。参数列表:
参数必填说明
公众号appID
填写&jsapi_address&,获得编辑地址权限
签名方式,目前仅支持SHA1
签名,由各参数一起参与签名生成
随机字符串
调用方法如下
参数返回:
返回值说明
edit_address:ok获取编辑收货地址成功
edit_address:fail获取编辑收货地址失败
收货人姓名
收货人电话
addressPostalCode
proviceFirstStageName
国标收货地址第一级地址
addressCitySecondStageName
国标收货地址第二级地址
addressCountiesThirdStageName
国标收货地址第三级地址
addressDetailInfo
详细收货地址信息
nationalCode
收货地址国家码
&标签:原文地址:http://www.cnblogs.com/txw1958/p/weixin-editAddress.html
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!

我要回帖

更多关于 开通微信支付 的文章

 

随机推荐