2017-05-01 16:41:08 y_f_raquelle 阅读数 3543
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

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

微信公众平台开发者文档:http://mp.weixin.qq.com/wiki/home/index.html


首先申请一个微信公众开发测试账号:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login


申请后会提供appID和appsecret,你需要在自己的代码中添加接口配置的处理。

但此处URL必须为一个公网地址,且使用80端口,这就涉及到之前讲到的公网映射的方式。通常使用ngrok,注册后获得authtoken并配置,使用ngrok http <port>即可将指定端口映射到公网80端口。

接口配置的java示例:(参考Journey的博客

@WebServlet(urlPatterns = "/wx", name = "wxHouseKeeperServlet")  
public class HouseKeeper extends HttpServlet {  
    public static final String TOKEN = "mzmzo";  
  
    @Override  
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
        try {  
            // 开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数  
            String signature = request.getParameter("signature");// 微信加密签名(token、timestamp、nonce。)  
            String timestamp = request.getParameter("timestamp");// 时间戳  
            String nonce = request.getParameter("nonce");// 随机数  
            String echostr = request.getParameter("echostr");// 随机字符串  
            PrintWriter out = response.getWriter();  
            // 将token、timestamp、nonce三个参数进行字典序排序  
            String[] params = new String[] { TOKEN, timestamp, nonce };  
            Arrays.sort(params);  
            // 将三个参数字符串拼接成一个字符串进行sha1加密  
            String clearText = params[0] + params[1] + params[2];  
            String algorithm = "SHA-1";  
            String sign = new String(  
                    Hex.encodeHex(MessageDigest.getInstance(algorithm).digest((clearText).getBytes()), true));  
            // 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信  
            if (signature.equals(sign)) {  
                response.getWriter().print(echostr);  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }     
}  

此处TOKEN与网页中填写的Token一致即可

接下来配置“网页授权获取用户基本信息


注意填写时不用加http://,只填写域名即可。

完成后扫描下方二维码即可关注自己的公众测试号,网页中会显示关注用户的Openid。

下载微信Web开发工具,即可模拟手机调试


完成登录和绑定后,开发者就可以开始调试微信网页授权,在地址栏直接输入URL

示例: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx841a97238d9e17b2&redirect_uri=http://cps.dianping.com/weiXinRedirect&response_type=code&scope=snsapi_base&state=type%3Dquan%2Curl%3Dhttp%3A%2F%2Fmm.dianping.com%2Fweixin%2Faccount%2Fhome

这里appid填写之前注册后得到的,redirect_uri指向自己的公网域名下的url,response_type为code,scope为snsapi_base表示静默授权,state填写uri后的mapping。注意这里的redirect_uri和state可能需要urlencode。








2016-05-25 13:11:10 xundh 阅读数 2433
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

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

参考资料等

开发者文档地址
登陆公众号平台
测试账号登陆地址

流程(自有云平台)

  1. 登陆公众平台 ;
  2. 添加功能插件-设备功能-开启;
  3. 开发-开发者工具-公众平台测试账号,开通测试账号;
    这时提要登陆自己的微信账号。可以看到测试微信平台的二维码,用手机扫描二维码,关注测试公众号。
  4. 公众平台测试账号-设备功能接口-开启 ;
  5. 基于菜单开发一些必要的功能;
  6. 到微信开发公众平台-设备功能-添加产品,需要108*108的产品图片;
  7. 开发测试平台服务端程序;
  8. 到微信公众平台-开发-基本配置-修改配置;
  9. 填写表单;
2016-04-20 11:46:00 qq_22889431 阅读数 10
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

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

微信开发测试号配置

1.进入微信测试平台

2.配置接口信息

  URL:开发模式下的验证token的url

  token:‘token’

3.网页服务--》网页账号 --》 修改授权回调页面域名:[此处的回调域名是你的域名,不能添加http://字样,只需要写域名就可以了]

4.程序里spring配置文件【配置token、appid、appsecret】的文件里

这时候在手机微信平台就可以看到开发的网页内容了

posted @ 2016-04-20 11:46 水车 阅读(...) 评论(...) 编辑 收藏
2019-08-03 22:31:24 lmiao1992 阅读数 43
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

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

1.登录微信公众平台

在对接微信授权时可以使用测试账号进行操作,当然你也可以使用进行企业认证的公众号进行对接,此次对接使用测试账号

微信沙箱账号链接,点击该链接使扫码登录测试公众平台,登录后如下:

2.在测试平台下方,使用开发者的微信关注该测试平台

3.点击修改,添加授权回调页面域名,如下:

这里的域名地址可以使用外网映射工具进行映射,可以参考natapp的安装配置教程

4.编码

4.1.添加依赖到pom.xml中

   <!-- SpringBoot 对lombok 支持 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!-- SpringBoot web 核心组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

.4.2.修改application.yml配置文件

#该APPID,secret为测试公众平台的数据
appid: wx6c470ce4236b64fa
secret: 1a82d6d1cefa6ae818c9753c9200d2e5
#使用外网映射工具映射回调地址
redirectUri: http://xi4jsd.natappfree.cc/callback
### 生成微信授权
authorizedUrl: https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
###获取code后,请求以下链接获取access_token
access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
###拉取用户信息(需scope为 snsapi_userinfo)
userinfo: https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

4.3.创建一个微信的工具类,方便调用


@Component
public class WeiXinUtils {
    @Value("${appid}")
    private String appId;
    @Value("${secret}")
    private String secret;
    @Value("${redirecturi}")
    private String redirectUri;
    @Value("${authorizedUrl}")
    private String authorizedUrl;
    @Value("${access_token}")
    private String accessToken;
    @Value("${userinfo}")
    private String userinfo;

    /**
     * @Description: 微信授权地址
     */
    public String getAuthorizedUrl() {
        return authorizedUrl.replace("APPID", appId).replace("REDIRECT_URI", URLEncoder.encode(redirectUri));
    }

    /**
     * @Description: 获取微信AccessToken
     */
    public String getAccessTokenUrl(String code) {
        return accessToken.replace("APPID", appId).replace("SECRET", secret).replace("CODE", code);
    }

    /**
     * @Description: 获取微信用户信息
     */
    public String getUserInfo(String accessToken, String openId) {
        return userinfo.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openId);
    }

}

4.4.创建一个授权的控制器,此处没有写在业务层,可以自己写在业务层

@Slf4j
@Controller
public class AuthController {

    @Autowired
    private WeiXinUtils weiXinUtils;
    private String errorPage = "errorPage";
    private static RequestConfig requestConfig = null;

    /**
     * @Description: 获取授权链接,重定向到微信开发平台
     */
    @GetMapping("/authorizedUrl")
    public String authUrl() {
        String authorizedUrl = weiXinUtils.getAuthorizedUrl();
        return "redirect:" + authorizedUrl;
    }

    @RequestMapping("/callback")
    @ResponseBody
    public String callback(String code) {
        if (StringUtils.isEmpty(code)){
            return errorPage;
        }
        // 1.使用Code 获取 access_token
        String accessTokenUrl = weiXinUtils.getAccessTokenUrl(code);
        //2.使用HTTPclient技术调用 accessTokenUrl 接口地址
        JSONObject resultAccessToken = httpGet(accessTokenUrl);
        //3.判断返回的json是否正确,当含有errorcode时,则为报错信息
        boolean errcodeKey = resultAccessToken.containsKey("errcode");
        if (errcodeKey) {
            return errorPage;
        }
        // 4.使用access_token获取用户信息
        String accessToken = resultAccessToken.getString("access_token");
        if (StringUtils.isEmpty(accessToken)){
            return errorPage;
        }
        //5.获取openid
        String openid = resultAccessToken.getString("openid");
        if (StringUtils.isEmpty(openid)){
            return errorPage;
        }
        // 6.获取用户信息(需scope为 snsapi_userinfo)
        String userInfoUrl = weiXinUtils.getUserInfo(accessToken, openid);
        JSONObject userInfoResult = httpGet(userInfoUrl);
        log.info("userInfoResult:" + userInfoResult);
        return userInfoResult.toJSONString();
    }

    /**
     * 发送get请求
     * @param url  请求路径
     * @return
     */
    public static JSONObject httpGet(String url) {
        // get请求返回结果
        JSONObject jsonResult = null;
        CloseableHttpClient client = HttpClients.createDefault();
        // 发送get请求
        HttpGet request = new HttpGet(url);
        request.setConfig(requestConfig);
        try {
            CloseableHttpResponse response = client.execute(request);

            // 请求发送成功,并得到响应
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                // 读取服务器返回过来的json字符串数据
                HttpEntity entity = response.getEntity();
                String strResult = EntityUtils.toString(entity, "utf-8");
                // 把json字符串转换成json对象
                jsonResult = JSONObject.parseObject(strResult);
            } else {
                log.error("get请求提交失败:" + url);
            }
        } catch (IOException e) {
            log.error("get请求提交失败:" + url, e);
        } finally {
            request.releaseConnection();
        }
        return jsonResult;
    }

}

5.启动服务进行测试

测试使用微信web开发者工具 下载地址,安装该工具后使用关注过测试公众平的的微信用户进行登录测试

5.1.输入获取授权链接的接口地址

http://127.0.0.1:8080/authorizedUrl

5.2.同意授权,进行异步回调

 

5.3.返回授权用户的用户数据

5.4.好了 你可以使用用户收据了

码云地址:https://gitee.com/gts_leo/weixin_oauth2.0

2014-03-25 15:30:42 u014351211 阅读数 708
  • 微信公众平台开发4-消息管理-微信开发php

    微信公众平台开发之消息管理是子恒老师《微信公众平台开发》视频教程的第4部。详细讲解了用php开发微信,对微信公众平台中的消息管理开发。内容包含微信关键字回复,多图文消息回复开发,接收图片消息,视频,小视频消息等等。欢迎反馈,微信/QQ:68183131

    6334 人正在学习 去看看 秦子恒
微信对接公众平台多用户程序
演示测试网站http://weixin.n168.cn

登入后台
用微信扫一扫二维码
或添加公众号:N168COM 
然后在微信中输入:测试账号 

不断开放新源码数据另有几十G微营销课程   快快建立你的商务圈吧!

Java微信开发入门

阅读数 243

没有更多推荐了,返回首页