微信
2019-08-16补充:这群坑壁,授权这块可以申请测试号。先看8.8
业务:首先肯定是手机访问项目sell.com(这个其实是另一个网站的地址,但是我们对手机做了请求代理,手机的请求会通过本机访问。而本机做了域名解析,当本机访问sell.com时解析为虚拟机ip,这样就访问到了本机前端页面),进入前端页面index.js,index.js会对请求路径做解析判断,如果请求中已经包含openId,那么可以直接访问项目(出来商家信息啥的)。如果没有openId,那就会执行跳转,其实就是跳转到我们写得获取openId方法。最终执行我们后端项目的一堆方法,获取到openId然后再跳去访问sell.com项目(如下图)。
最终就到了一堆商家信息那个页面中了。
前端页面要配置几个信息,使得前端接受请求解析判断后知道如何处理:
乱七八糟,等最后顺一下吧!
微信公众平台测试号申请:
凉了,涉及微信支付,个人无法申请微信支付。我那几个兄弟很争气地把公司卖掉了!人生最痛苦的事就是,在不该写代码的时候,开发一个微信支付模块。
1.微信授权(网页授权):
1)获取openid:
1》原生
1》》域名:自己公众号设置
2》》做下映射,必须让外网能访问到本机 的项目
3》》文件拷贝下
4》》
5》》
要不,访问这个垃圾玩意,实质上没啥用。但是不访问,你微信公众号绑定域名哪里无法申请通过!
6》》之后那个破文件就没用了,注释的context-path也可以放出来了
7》》凉了,在进行重定向时,发现我是订阅号,没有权限开发网页授权。但是腾讯一直给提示说域名不一致,就很扯蛋!!!!!!!!!!!!
微信支付:支付也没办法写,没有权限!!!!!!!!!!司马腾讯 微信退款:没支付退个锤子的钱!!!!!!!!!!!!!!!!!!!!!!!!!!司马腾讯
2》第三方sdk,一样没法验证!!!!!先写出实现,以后再处理!!!!
1》》引入第三方sdk
<!--引入第三方sdk处理微信网页授权,无法实现,先写代码-->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>2.7.0</version>
</dependency>
2》》WeChat Controller 获取openid
package com.scbg.controller;
import com.scbg.enums.ResultEnum;
import com.scbg.exception.SellException;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @program: sell
* @description: 第三sdk开发微信网页授权controller
* @author: 三层饼干儿
* @create: 2019-08-14 16:05
**/
/*@RestController返回的是json无法重定向,改用controller*/
@Controller
@RequestMapping("/wechat")
@Slf4j
public class WechatController {
@Autowired
private WxMpService wxMpService;
@GetMapping("/authorize")
public String authorize(@RequestParam("returnUrl")String returnUrl ){
//1.配置,比较繁琐写配置类,配置完注入
//2.调用方法
String redirectUrl=wxMpService.oauth2buildAuthorizationUrl("url需要在配置一下", WxConsts.OAUTH2_SCOPE_USER_INFO,returnUrl);//第三个参数原样返回。
return "redirect:"+redirectUrl;
}
@GetMapping("/userInfo")
public String userInfo(@RequestParam("code")String code,@RequestParam("state")String returnUrl){
WxMpOAuth2AccessToken wxMpOAuth2AccessToken= null;
try{
wxMpOAuth2AccessToken=wxMpService.oauth2getAccessToken(code);
}catch (WxErrorException e){
log.error("【微信网页授权】{}",e);
throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(),e.getError().getErrorMsg());
}
String openId=wxMpOAuth2AccessToken.getOpenId();//获取openid
return "redirect:"+returnUrl+"?openid="+openId;//根据接口文档返回
}
}
配置文件增加配置信息:
wechat:
mpAppId: "这个东西从你的公众号中查找!"
mpAppSecret: "同上"
3》》前端调试(
现在还有个别的问题,域名解析
)
先解决挂掉的图,这俩直接用不用开发。
再找几张图扔到数据库
4》》## 改不改的跟我好像没有太大关系:反正微信我事先不了。。。。。
构建好的项目,copy到网站根目录下
代理手机的请求。。。。。
比如说手机访问sell.com,会跳到一个跟本项目无关的别的网站。要想在手机测试sell.com跑到我们的项目,必须设置代理,代理手机的请求,转到本机访问(本机配置了域名解析知道找谁)。
1.手机设置代理,ip和端口(计算机网路的ip和第三方工具的端口)
2.fiddler的使用
先跳过吧