首先:这个项目是在公众号下单,所以要开发 公众号 相关的功能

然后:再开发

网页授权 :  用于拿到 openid 。

如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。

1、设置域名

2、获取code (用户授权)

3、用code 换取 access_token  ; (这一步会把 openid 也带过来)

重要:

设置授权回调地址   :不是那个 js安全接口域名

代码开发:

将WxMpService 进行持久化:

@Component

public class WechatMpConfig {

@Autowired

WechatAccountConfig wechatAccountConfig;

@Bean

public WxMpService wxMpService() {

WxMpService wxMpServiceBean=new WxMpServiceImpl();

wxMpServiceBean.setWxMpConfigStorage(wxMpConfigStorage());

return wxMpServiceBean;

}

@Bean

public WxMpDefaultConfigImpl wxMpConfigStorage(){

WxMpDefaultConfigImpl wxMpDefaultConfigBean=new WxMpDefaultConfigImpl();

wxMpDefaultConfigBean.setAppId(wechatAccountConfig.getMpAppId());

wxMpDefaultConfigBean.setSecret(wechatAccountConfig.getMpAppSecret());

return wxMpDefaultConfigBean;

}

}

从配置文件读取信息:  WechatAccountConfig wechatAccountConfig; 上面的注入,读取信息,会用到。

@Component

@Data

@ConfigurationProperties(prefix = "wechat")

public class WechatAccountConfig {

private String mpAppId;

private String mpAppSecret;

}

代码的实际应用:

@Controller

@RequestMapping("/wechat")

public class WechatController {

Logger logger = LoggerFactory.getLogger(getClass());

@Autowired

private WxMpService wxMpService;

@Autowired

private WxMpConfigStorage wxMpConfigStorage;

@Autowired

WechatAccountConfig wechatAccountConfig;

@GetMapping("/authorize")

public String authorize(@RequestParam("returnUrl")String returnUrl) throws UnsupportedEncodingException {

//1.配置

//2.调用方法

String url = "http://halfofalemon.ngrok.wendal.cn/sell/wechat/userInfo";

String redirectResult = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAuth2Scope.SNSAPI_USERINFO,URLEncoder.encode(returnUrl, "UTF-8"));

logger.info("[微信授权] 获取code redirectResult = {}",redirectResult);

return "redirect:"+redirectResult;

}

@GetMapping("userInfo")

private String userInfo(@RequestParam("code")String code,@RequestParam("state")String returnUrl){

WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();

try {

wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);

} catch (WxErrorException e) {

logger.error("[微信网页授权] 获取AccessToken错误 {}",e);

throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(),e.getError().getErrorMsg());

}

String openId = wxMpOAuth2AccessToken.getOpenId();

logger.info("[微信授权] 获取openId openId = ",openId);

return "redirect:"+returnUrl + "?openId="+openId;

}

}

注:

内网穿透: 微信回调需要使用内网穿透

使用方法:

1、下载客户端和配置文件

2、官方上面的例子输入下面就可以启动服务

ngrok -config ngrok.yml 8080

3、有点蠢,原样照搬, 进入了我的文件夹,启动ngrok

d:\software3\ngrok_win\ngrok -config ngrok2.yml 8080

提示找不到配置文件。

4、实际上,配置文件也要完整路径:

d:\software3\ngrok_win\ngrok -config d:\software3\ngrok_win\ngrok2.yml 8080

配置前端项目:

前端项目在  /opt/code/sell_fe_buyer

1、到 config 文件 修改 index.js 文件 。

sellUrl  : 项目地址 。

openidUrl :  获取openid 的地址。

wechatPayUrl :

2、回到前端根目录 : npm run build

重新构建项目:构建好,项目会在 前端根目录的 dist

将构建好的项目发布: cp -r dist/*  /opt/data/wwwroot/sell

end

点餐系统ip地址_spring boot实战——微信点餐系统03:微信授权(用户授权),免费内网穿透(固定ip)...相关推荐

  1. frp内网穿透-公网IP低成本使用高性能kali

    frp内网穿透-公网IP低成本使用高性能kali 1.frp Github项目地址:https://github.com/fatedier/frp 找到最新的releases下载,系统版本自行确认. ...

  2. 异地远程连接在家里的群晖NAS【无公网IP,免费内网穿透】

    群晖NAS,少不了有在外网远程访问的需求.尽管群晖有自带的QuickConnect,但是使用起来不是很理想,而且,现在基本不会被分配到公网IP,个人被分配到的基本都是内网IP. 而在没有公网IP的情况 ...

  3. 无公网IP,使用ZeroTier免费内网穿透

    无公网IP,使用ZeroTier免费内网穿透 有公网IP的用户还是建议使用端口转发的方式(速度最理想) 没有固定的公网IP,想要在家里或外地访问公司的服务器,常见的实现方案向日葵.teamviewer ...

  4. 没有公网IP,快速免费内网穿透

    在大内网环境下,没有公网IP非常普遍.而如何没有公网IP的环境下,外网访问内网,常见通过内网穿透来实现,毕竟自己买一个公网IP,费用可不小. 内网穿透,主要通过第三方公网IP服务器进行数据转发,不需要 ...

  5. 无需设置路由器,无需公网ip 实现永久免费内网穿透

    用网云穿在 N1 盒子上实现 Openwrt 的内网穿透 软路由器情况 N1(已经刷入 Armbian) 中使用 docker 创建 Openwrt 容器作为旁路由. 我的内网 ip 信息 内网 IP ...

  6. 免费内网穿透3389端口,实现外网远程桌面内网【无需公网IP】

    3389端口,是远程桌面的服务端口.我们可以通过3389端口,用Windows自带的远程桌面连接,来远程连接服务器设备,实现如同操作本地电脑一般的场景. 在同个局域网下,只需要启用"远程桌面 ...

  7. Win软件 - 教你正确使用 Win10 专业版系统自带远程桌面(免费内网穿透)

    疫情反反复复的当下,有时候会遇到需要居家办公的情况,但在办公室的电脑上仍有很多重要资料需要存取,且办公室所在的局域网中也有很多相关资源需要被访问(如文件共享服务器.OA 系统等).如何能在家通过远程处 ...

  8. 无需公网IP,免费内网穿透【cpolar】访问内网服务

    由于IPV4公网IP的枯竭,运营商现在基本不会分配公网固定IP,被分配到的普遍是内网IP.而没有公网IP,可以做内网穿透来实现外网访问内网,通过第三方公网IP服务来进行数据转发. 这里推荐一款免费好用 ...

  9. 免费内网穿透工具(网络通),无需公网IP,无需设置路由器

    介绍一款免费的简单易用工具 网络通 这款工具永久免费内网端口映射,内网穿透软件,可轻松访问连接内网. 不需设置路由器,不需公网ip,不需固定ip,不需动态域名,用户可免费添加多个映射,适合在公司,小区 ...

最新文章

  1. db2 springboot 整合_springboot的yml配置文件通过db2的方式整合mysql的教程
  2. 体系结构方案 -BI 系统的前置计算
  3. javascript 对象详解
  4. 文本转换成htmldocument
  5. 毕业之后......
  6. 改写DataCogs在MOSS列表中实现三级联动字段
  7. SYBASE的管理(三)
  8. springcloud gateway ribbon使用_Github点赞接近 70k 的Spring Cloud学习教程+实战项目推荐!牛批!...
  9. 【交往智慧】005.做一个愿意聆听的人
  10. 专业人士对《程序员修炼之道》的赞誉
  11. Java简单从文件读取和输出
  12. com.netflix.zuul.exception.ZuulException: Forwarding error
  13. 显卡是什么?显卡和Graphics的区别在哪里?
  14. java阿里云文本反垃圾sdk调用详解
  15. python_多点拟合曲线并计算曲率半径
  16. java生成订单唯一编号_java唯一订单号生成
  17. linux执行脚本提示文件忙,linux定时执行脚本文件fgo 封号吗
  18. linux下删除oracle数据库实例
  19. 武器装备科研生产单位保密资格标准》内容试题(2017年版)( 共 331 题 )
  20. mac pdf去水印_如何在Mac上为PDF添加水印

热门文章

  1. frame越过另一个frame_一个价值2万美元的Facebook DOM XSS漏洞
  2. python异常处理输入不是整数_Python异常处理大全(二)
  3. (二)预处理时间序列数据用于AI预测和异常检测
  4. SQL Server中的假期表和GetWorkDays函数
  5. 用于数据输入的基本WPF窗口功能
  6. 加速ASP.NET Core WEB API应用程序——第1部分
  7. 不使用输入框如何实现下拉_使用INFINITE AJAX SCROLL实现下拉加载效果
  8. linux下访问西门子S7,Siemens SIMATIC S7-1200 CPU开放重定向漏洞(CVE-2015-1048)
  9. 初步创建vue/cli工程教程
  10. 华为怎么申请鸿蒙商标,华为已注册华为鸿蒙商标是怎么回事 华为鸿蒙商标注册...