2019-04-19 10:29:23 mossbaoo 阅读数 950
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27832 人正在学习 去看看 秦子恒

1. 打开公众号,点击右上角人像图标

 

2. 点击查看“全部消息”

 

3. 点击右上角三个点的图标,然后“复制链接”

 

4. 获得以下链接(其中红色字体是该公众号的唯一码)

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI2MzMwNzU5MA==&scene=126&bizpsid=0&subscene=0#wechat_redirect

 

5. 将该链接放进你想要做跳转的地方即可

<a href="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI2MzMwNzU5MA==&scene=126&bizpsid=0&subscene=0#wechat_redirect" title="">关注公众号</a>
window.location.href = 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI2MzMwNzU5MA==&scene=126&bizpsid=0&subscene=0#wechat_redirect';

 

2018-11-29 18:18:43 qq_37788558 阅读数 1388
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27832 人正在学习 去看看 秦子恒

记一次小需求:
一个投票活动,在原有的投票接口里(很老的项目。。)增加判断用户是否在微信内登陆,且是否关注公众号,如果用户未关注,则引导用户关注公众号。

一、需求要点

  • 只对指定对部分活动有效
  • 区分微信浏览器访问和外部浏览器访问
  • 区分用户是否关注我们的公众号
  • 关注可投,不关注引导关注

二、大体实现

  1. 指定部分活动有效
    最简单对方式,设置一个数组,对id在数组内的逻辑活动才执行新增的逻辑,这样主流程里只插入几行代码,整个逻辑在另一个函数内实现。
...前置逻辑
$wechatAuthList = [];
if (in_array($article_id, $wechatAuthList)){
    if($this->wechatAuth()){
        return ['code' => 403, 'message' => '引导关注']
    }
}
...后面的逻辑
  1. 区分微信浏览器访问和外部浏览器访问
    通过user-agent判断,没什么好说了。
	// 判断是否是微信浏览器
    public function isWeixin()
    {
        if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
            return true;
        }
        return false;
    }
  1. 区分用户是否关注我们的公众号
    通过微信授权接口,获取用户信息,通过返回结果的 subscribe 字段判断。

    ‘subscribe’ = 1 (已关注)
    ‘subscribe’ = 0 (未关注)

这一步我们要依次用到四个接口:

//获取code
"https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->appId}&redirect_uri=$redirect&response_type=code&scope={$scope}&state=1#wechat_redirec";
//获取opendId
"https://api.weixin.qq.com/sns/oauth2/access_token?appid={$this->appId}&secret={$this->secret}&code={$code}&grant_type=authorization_code";
//获取access_token(基础token)
"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appId}&secret={$this->secret}";
//获取用户信息
"https://api.weixin.qq.com/cgi-bin/user/info?access_token={$this->accessToken}&openid={$this->openId}&lang=zh_CN"

下文会描述具体步骤。

  1. 关注可投,不关注引导关注
    基本是前端工作了,对后端来说就是根据不同情况返回不同结果,前端根据返回值确定是否弹出浮层显示二维码。
    伪代码:
 $.ajax({
        type: '...',
        url: '...',
        data: '...',
        success: function(data) {
        	if (data.code === 403){
        		$("#tab").alert();
        	}
        }

三、详细步骤

下面来说下第3部分,如何区分用户是否关注我们的公众号

首先明确需要用到哪些:

  • 上边列出的四个接口
  • 公众号 appId 和 secret
  • 微信公众平台设置授权回调地址和redirect_uri 一致

需要注意的:

  • 别忘了到微信公众平台设置授权回调地址和redirect_uri 一致,不然会报 redirect_uri参数错误
  • 重定向地址redirect_uri,如果有参数的话,别忘了urlencode(),不然微信重定向回来原本的参数会没有
  • 获取code时需要在浏览器重定向,不能用ajax这种异步请求!
  • scope 有两种值,不需要用户感知的用静默授权(snsapi_base):

snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid)
snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )

  • 请求到的 code 只能使用一次
  • access_token 在微信有两种,一种是授权用的,与openid同时返回,只用于授权,没有请求次数限制;另一个种是基础token,每天最多请求2000次,请求subscribe字段要用这个access_token,得到他时只获得两个数据,access_token 和 expired,注意区分

具体代码:

整体流程:

 	//代码精简处理了,只写写大体,细节不介绍了,比如异常处理、日志记录之类的
	public function wechatAuth()
    {
        $wechat = new Wechat();
        // 是否微信内置浏览器登陆判断
        if ($wechat->isWeixin()){
        	  // 获取openId(这一步会先获取code,再用得到的code获取openid,同时会得到)
            $openId = $wechat->getOpenId();
            // 获取 client 的 access_token
            $accessToken = $wechat->getAccessToken();
			  // 获取用户信息
            $info = $wechat->getUserInfo();
            // 未关注返回true,即引到认证
            if (isset($info->subscribe) && $info->subscribe == 0){
                return true;
            }
        }
        return false;
    }

获取openid:

public function getOpenId($redirect = null, $scope = 'snsapi_base')
    {
        if (isset($this->openId)){
            return $this->openId;
        }

        // 如果之前session中存入了openId,则直接返回
        if (isset($_SESSION['openId'])){
            $this->openId = $_SESSION['openId'];
            return $_SESSION['openId'];
        }

        // 如果没有code,则先请求code,再从微信自动跳转回来
        // 这部分注释掉了,因为这个接口是ajax请求,被微信限制,所以code获取部分后来翻到了前段js里,如果在微信内,先通过window.location.href = ''去获取code,然后请求接口时再携带code来请求
//        if (!isset($_GET['code'])){
//            $redirect = empty($redirect)?'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] : $redirect;
//            $redirect = urlencode($redirect);
//            $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->appId}&redirect_uri=$redirect&response_type=code&scope=$scope&state=1#wechat_redirec";
//            header("Location:".$url);exit();
//        }

        $code = $_GET['code'];
        // 获取 openid 及 授权用的access_token
        $get_openid_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->appId.'&secret='.$this->secret.'&code='.$code.'&grant_type=authorization_code';
        $response = file_get_contents($get_openid_url);
        $userInfo = json_decode($response, true);

        // openid如有则存入session
        if (array_key_exists('openid', $userInfo)){
            $_SESSION['openId'] = $userInfo;
            $this->openId = $userInfo['openid'];
        }
        return $this->openId;
    }

获取access_token:

//这里只看原生的几句就行。因为微信授权域名只能设置两个,而有多个系统需要使用,所以做了一层代理,通过代理平台的接口获取access_token。
//而这个项目比较老,零几年的了,所以redis、memcache之类的都没有可用的,就直接写文件记录了,具体的失效处理就不写了。
public function getAccessToken($refresh = false)
    {
        // 微信原生方法
        $get_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->secret";
        $response = file_get_contents($get_token_url);
        $tokenInfo = json_decode($response, true);
        $accessToken = isset($tokenInfo['access_token'])? $tokenInfo['access_token'] : '';

        // 平台接口获取
        //$accessTokenFile = '/tmp/access_token';
        // 如果需要刷新token 或 token文件不存在,则重新请求token并写入文件
        //if ($refresh || !file_exists($accessTokenFile)){
        //    $accessTokenApi = '......';
        //    $res = file_get_contents($accessTokenApi);
        //    $accessToken = json_decode($res)->token;
        //    if (!is_dir('/tmp')){
        //        mkdir('/tmp', 777);
        //    }
        //    file_put_contents($accessTokenFile, $accessToken);
        //}else{// 否则直接取文件
        //    $accessToken = file_get_contents($accessTokenFile);
        //}
        //$this->accessToken = $accessToken;
        return $accessToken;
    }

获取用户信息:

 public function getUserInfo()
    {
        $get_user_info_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$this->accessToken&openid=$this->openId&lang=zh_CN";
        $response = file_get_contents($get_user_info_url);
        $info = json_decode($response);
        return $info;
    }

正常情况下,微信会返回下述JSON数据包:

{
    "subscribe": 1, 
    "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", 
    "nickname": "Band", 
    "sex": 1, 
    "language": "zh_CN", 
    "city": "广州", 
    "province": "广东", 
    "country": "中国", 
    "headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
    "subscribe_time": 1382694957,
    "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
    "remark": "",
    "groupid": 0,
    "tagid_list":[128,2],
    "subscribe_scene": "ADD_SCENE_QR_CODE",
    "qr_scene": 98765,
    "qr_scene_str": ""
}

其他

通过 js 获取 code 的代码:

<script>
    var oCode = '';
    function isWeixin() { //判断是否是微信
        var ua = navigator.userAgent.toLowerCase();
        return ua.match(/MicroMessenger/i) == "micromessenger";
    }

    function getUrlParam(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) return unescape(r[2]);
        return null;
    }

    function getWxCode() {
        var appId = 'wx133b*****3db0a';
        var url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + location.href.split('#')[0] + "&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
        var code = getUrlParam("code");
        if (!code) {
            window.location = url;
        } else {
            return code;
        }
    }
    // 如果是微信内登陆则重定向获取code
    if (isWeixin()){
        console.log('is weixin!');
        oCode = getWxCode();
        console.log(oCode);
    }
</script>
2019-03-15 17:10:21 feiyu_may 阅读数 1018
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27832 人正在学习 去看看 秦子恒

    微信公众号开发,本质是一个网页的形式,用户进入这个网页系统,并不一定要关注公众号,只要提供链接,就可以直接进入。例如电动车充电桩系统,用户直接用微信的扫一扫,扫描插座二维码,就可以进入充电系统,并没有关注公众号的行为。

    但是,用户没有关注公众号,就会收不到消息推送,会影响主体对用户的后续服务,所以要引导未关注用户关注公众号。

    用户关注公众号主要有三种方式:(1)搜索关注,对用户不友好,基本不考虑。(2)二维码关注。(3)链接关注

    这里考虑二维码关注和链接关注的方式。有个前提,就是引导方式是从我们自己的微信网页系统引导过去的,注意这个前提,下面会说一些不同的情况。

    根据微信提供的API

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839)由后台配合,获取用户是否关注公众号信息,接下来就是前端的引导工作。

 

二维码方式

    用户未关注公众号,前端弹出对话框,提供微信公众号二维码图片,提示用户长按识别,即可实现跳转到关注页面,这个页面和我们平时直接扫公众号二维码或者搜索微信公众号得到的页面是一样的。

    用户点击关注后,会跳转到公众号会话页面

    然后再一步步返回,回到我们自己开发的网页系统。

链接方式

前端直接链接到关注页(不可行)

    二维码的方式,需要用户手动操作识别,有没有一种方式,可以再减少一点用户操作?比如知道用户没有关注公众号后,给出一个弹框,弹框内容为“您还未关注公众号,请先关注。”用户点击确认后,我们帮用户跳转到关注页面。

    这里需要一个关注页的url。

    首先打开公众号,点击右上角的图标

    示例公众号是服务号,点击【全部消息】

    点击右上角的三个点,选择【复制链接】

    这样我们就得到一个形如

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzIwNjUxMjc3OA==&scene=126&bizpsid=0&subscene=0#wechat_redirect

的链接,但是这里面包含的一些信息我们并不需要,所以处理一下,按照

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzIwNjUxMjc3OA==#wechat_redirect的形式处理,就可以得到公众号关注页的链接了。

    得到的链接我们是可以直接在微信中打开(不是由我们自己微信网页跳过去,比如聊天消息中我们发出一个链接,可以直接点击跳转),得到的页面与二维码扫描、搜索公众号得到的关注页不一样,是下图的形式。

    如果我们前端直接在网页中将当前url改变为此网址,用代码:

    window.location.href = url

    页面是跳转了,但是关注按钮会没有(测试了下,苹果和部分安卓是先出现关注按钮,页面加载完就消失了,部分安卓保留有关注按钮,但是点击没有反应。)

    用微信开发者工具调试,会有这样一条报错

    微信把开发网页内,链接引导关注的功能禁止了,这是微信7.0版本以后出现的问题。微信不支持诱导关注的行为。前端直接跳转的方式行不通。

链接生成二维码给用户

    但是其实微信只是禁止了一些链接访问方式,还是有些可以实现的。目前调试出了一种可行方式。

    用VUX的【Qrcode】组件,将链接创建成二维码,通过这种方式创建的二维码,用户长按识别,可以跳转到公众号关注页面,且关注按钮功能正常。

<div class="img-box">
  <qrcode value="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzIwNjUxMjc3OA==#wechat_redirect" type="img"></qrcode>
</div>

    这样的方式可以实现引导用户关注,并且用户关注后,会停留在关注页面,而不是二维码扫描那样,关注后会自动跳到公众号会话页面。用户返回时,比二维码的方式少一步返回。

总结

    引导用户关注公众号,前端直接操作跳转的方式不可行,必须要用户手动识别二维码,而在公众号二维码和链接生成的二维码之间,因为可以减少用户返回操作步数,所以选择链接生成二维码的方式更优一点。

2017-03-29 11:54:52 u013487761 阅读数 1260
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27832 人正在学习 去看看 秦子恒

制作人:陈晓华   qq:78976932   微信号:chen-jeo

开源项目:https://github.com/chenxhjeo,个人博客:http://blog.csdn.net/u013487761

技术QQ群名称:豆豆咨询,群号:625686304

微信公众号名称:豆豆咨询,微信公众号:douAsk

初建日期:2017.03.29,修改日期:2017.03.30

一、实验目的 

1、掌握微信公众号后台开发PHP入门。 

二、实验内容

1、成为微信开发者;

2、在家、寝室、实验室等环境,配置开发环境;

3、在微信PHP后台验证。 

4、PHP接收用户输入以及回送消息。 

三、实验步骤及过程 

由于手机端特性(例如内存小)与微信广泛应用,微信开发与应用成为当前的开发热点。但微信公众号存在一些局限,例如难以通过查询功能得到想要的结果。以下我们将引导大家如何成为微信公众号的开发者。

1、如何成为微信开发者,即取得开发者密钥。

1)在微信后台(通过https://mp.weixin.qq.com登录)点击开发->基本配置,打开基本配置页面,如下所示。


2)生成AppSecret(应用密钥):需要完成三个步骤,如图所示:


a)身份确认:二维码扫描,授权设置开发者密钥。

b)密码验证:输入登录密码和验证码,如下图所示。


c)查看AppSecret(微信为AppSecert,哈哈,是不是英语写错了?):注意保存好你的AppID和AppSecret,如下图所示。


2、在家、寝室、实验室、公网等环境,配置开发环境。

如果您在家、寝室、实验室等环境,想配置开发环境,那么请关注“豆豆咨询”公众号,我们将传递给您具体的手册及工具。

1)这里假设您具有公网地址或者域名,则配置URL(服务器地址)、Token(令牌)、EncodingAESKey(消息加密密钥)、消息加密方式,如下图所示。


2)填写URL(服务器地址)、Token(令牌)、EncodingAESKey(消息加密密钥)、消息加密方式信息。分别解释如下:

a)URL是你服务器的地址,具有验证、接收消息、发送消息等功能的服务器,分别支持80端口和443端口。

b)Token是自己设定的令牌,必须为英文或者数字,长度为3-32字符。

c)EncodingAESKey为消息加密密钥,随机产生,由43位字符组成,字符范围为A-Z,a-z,0-9。

d)消息加密方式:根据业务需要,可以设定明文模式、兼容模式、安全模式,系统推荐安全模式。我们以明文模式简化开发流程,如下图所示。


注意:微信开放平台账号的绑定在内测中。

3、在微信PHP后台验证。 主要涉及到验证消息,具体PHP代码如下:

<?php

//define yourtoken

define("TOKEN","weixin");

echo"I'am already Waiting for something...S.";

$wechatObj =new wechatCallbackapiTest();

$wechatObj->valid();//验证消息

classwechatCallbackapiTest

{

         public function valid()

    {

        $echoStr = $_GET["echostr"];

        //valid signature , option

        if($this->checkSignature()){

                echo$echoStr;

                exit;

        }

    }

         private function checkSignature()

         {

        // you must define TOKEN by yourself

        if (!defined("TOKEN")) {

            throw new Exception('TOKEN is notdefined!');

        }

        $signature =$_GET["signature"];

        $timestamp = $_GET["timestamp"];

        $nonce = $_GET["nonce"];

                  $token = TOKEN;

                  $tmpArr = array($token,$timestamp, $nonce);

                  sort($tmpArr, SORT_STRING);

                  $tmpStr = implode( $tmpArr );

                  $tmpStr = sha1( $tmpStr );

                  if( $tmpStr == $signature ){

                          return true;

                  }else{

                          return false;

                  }

         }

}

?>

4、在微信PHP后台接收用户输入的消息和回送给用户的消息。微信要求必须在5秒之内得到回复,如果没有得到回复,则尝试三次。PHP接收消息和发送消息代码描述如下:

privatefunction is_utf8($str)//判断是否是utf8编码

    {

             returnpreg_match('//u', $str);

    }

 

    public function responseMsg()

    {

                  //get post data, May be due tothe different environments

                  $postStr =$GLOBALS["HTTP_RAW_POST_DATA"];

          //extractpost data

                  if (!empty($postStr)){

               libxml_disable_entity_loader(true);

                  $postObj= simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

                $fromUsername =$postObj->FromUserName;

                $toUsername =$postObj->ToUserName;

                $keyword =trim($postObj->Content);

                $time = time();

                $textTpl = "<xml>

                                                             <ToUserName><![CDATA[%s]]></ToUserName>

                                                             <FromUserName><![CDATA[%s]]></FromUserName>

                                                             <CreateTime>%s</CreateTime>

                                                             <MsgType><![CDATA[%s]]></MsgType>

                                                             <Content><![CDATA[%s]]></Content>

                                                             <FuncFlag>0</FuncFlag>

                                                             </xml>";            

                                   if(!empty($keyword ))

                {

                          $msgType= "text";

                        $contentStr = "Welcome to wechat world!我是谁?";

                        $resultStr = sprintf($textTpl, $fromUsername, $toUsername,$time, $msgType, $contentStr);

                        $content = trim($postObj->Content);//消息内容json_encode($postObj->Content);

                        $contentStr = '你发送的信息是:接收人:'.$toUsername.',发送人:'.$fromUsername.',消息类型:'.$MsgType.',消息内容:'.$content.' ';

                        $resultStr = sprintf($textTpl, $fromUsername, $toUsername,$time, $msgType, $contentStr);

                        if ($this->is_utf8($resultStr)) {

                                 //$resultStr = $resultStr;

                        } else {

                                 //$resultStr = iconv('gb2312', 'UTF-8//IGNORE',$resultStr);

                        }

                        echo $resultStr;

                }else{

                        echo "Input something...";

                }

        }else {

                echo"";

                exit;

        }

    }


四、常见错误

1、验证不通过:在windows开发,主要由于编码的差异导致验证不通过,如果你遇到了类似问题还无法解决,请成为关注“豆豆咨询”公众号,我们将为您解答问题。

2、接收和发送中文信息,有时候会出现乱码,原因也是同上所示。解决方法是采用utf-8编码。如果你遇到了类似问题还无法解决,请成为关注“豆豆咨询”公众号,我们将为您解答问题。

五、技术服务


1、如果有疑问或者需要帮助,请加入QQ群(群名称:豆豆咨询,群号:625686304);或者公众号douAsk,公众号名称为“豆豆咨询”。扫描以下二维码,关注“豆豆咨询”


2019-05-28 19:25:20 juan1997 阅读数 567
  • 微信支付开发-微信公众号开发12-微信开发php

    微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等。欢迎反馈,微信/QQ:68183131

    27832 人正在学习 去看看 秦子恒

基于springboot框架的微信公众号基础开发(二)----用户授权和微信公众号登录。
转载需注明:https://blog.csdn.net/juan1997/article/details/90645553

 /**
	 * 一、第一步:用户同意授权,获取code code说明 :
	 * code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
	 * 
	 * @param returnUrl
	 * @return
	 */
	@GetMapping("/authorize")
	public String authorize(@RequestParam("returnUrl") String returnUrl) {
		// String url = "http://www.lovezhj.cn";
		String url = returnUrl;
		String redirectURL = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO,
				URLEncoder.encode(returnUrl));
		log.info("【微信网页授权】获取code,redirectURL={}", redirectURL);
		return returnUrl;

	}
/**
	 * 微信公众号登录
	 * 
	 * @param code
	 * @param state
	 * @return
	 * @throws Exception
	 */
	@GetMapping("/login")
	public R login(@RequestParam("code") String code, @RequestParam("state") String state) throws Exception {
		R result = null;
		log.info("【微信网页授权】code={}", code);
		log.info("【微信网页授权】state={}", state);
		WxMpOAuth2AccessToken wxMpOAuth2AccessToken;
		try {
			// 第二步:通过code换取网页授权access_token
			// 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
			wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
		} catch (WxErrorException e) {
			log.info("【微信网页授权异常】{}", e);
			throw new Exception(e.getError().getErrorMsg());
		}
		// 第三步:刷新token(如果有需要的时候)
		// 第四步: 用oauth2获取用户信息.拉取用户信息(需scope为 snsapi_userinfo)
		WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken, null);

		return result;
	}	
没有更多推荐了,返回首页