微信登陆、支付接口对接整理
一、微信登陆
1、根据code获取对应的openid
微信中同一个小程序用户的openid为唯一的,是判定用户身份的重要标识。
@ApiModel(value = "微信登陆请求vo")public class WxReq {@ApiModelProperty("小程序 appId")private String appid;@ApiModelProperty("小程序 appSecret")private String secret;@ApiModelProperty("登录时获取的 code")private String js_code;@ApiModelProperty("授权类型,此处只需填写 authorization_code")private String grant_type = "authorization_code";}/*** 获取openid* @param code* @return*/public WxRes getOpenidByCode(String code){WxReq req = new WxReq();req.setAppid(appid);req.setSecret(secret);req.setJs_code(code);JSONObject object = HttpUtilController.httpGetRequestMethod("https://api.weixin.qq.com/sns/jscode2session",req);WxRes res = JSON.parseObject(object.toJSONString(),WxRes.class);return res;}
参数code需要前端调用微信api进行获取,每个code使用一次即失效
httpGetRequestMethod方法就是模拟get调用的自用通用工具类。
2、请求解密
如果需要获取用户手机号等个人信息,需用户同意之后通过AES解密的方式调用获取
@ApiModel(value = "DecodeVo", description = "微信解密请求实体")public class DecodeVo{@ApiModelProperty("加密字符串")private String str;@ApiModelProperty("微信登录code值")private String code;@ApiModelProperty("偏移")private String vi;}public String decodeInfo(DecodeVo decodeVo) {//1、获取openidWxRes res = getOpenidByCode(decodeVo.getCode());String key = res.getSession_key();AES aes = new AES(Mode.CBC, Padding.PKCS5Padding, Base64.decode(key), Base64.decode(decodeVo.getVi()));String decryptStr = aes.decryptStr(decodeVo.getStr(), CharsetUtil.CHARSET_UTF_8);return decryptStr;}
AES对象是hutool中的工具对象。
二、微信支付
微信支付这边用了github上的一个工具类,香的雅痞。
<!-- 微信支付 --><dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-pay</artifactId><version>4.0.0</version></dependency>
1、统一下单接口
/*** 调用统一下单接口,并组装生成支付所需参数对象.** @return 返回 {@link com.github.binarywang.wxpay.bean.order}包下的类对象*/public WxPayOrderResult createOrder(WxPayUnifiedOrderRequest request, String openid){WxPayOrderResult wxPayOrderResult = new WxPayOrderResult();wxPayOrderResult.setCjsj(LocalDateTime.now());try {request.setOpenid(openid);request.setSpbillCreateIp(String.valueOf(InetAddress.getLocalHost().getHostAddress()));request.setTimeStart(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));WxPayMpOrderResult payResult = wxService.createOrder(request);}catch (Exception e){e.printStackTrace();}}/*** 关闭订单* @param request* @return* @throws Exception*/public WxPayOrderCloseResult closeOrder(WxPayOrderCloseRequest request) throws WxPayException {WxPayOrderCloseResult result = this.wxService.closeOrder(request);WxPayOrderQueryRequest wxPayOrderQueryRequest = new WxPayOrderQueryRequest();wxPayOrderQueryRequest.setOutTradeNo(request.getOutTradeNo());queryOrder(wxPayOrderQueryRequest);return result;}/*** 查询订单* @param request* @return* @throws Exception*/public WxPayOrderQueryResult queryOrder(WxPayOrderQueryRequest request) throws WxPayException{WxPayOrderQueryResult result = this.wxService.queryOrder(request);WxPayOrderResult wxPayOrderResult = wxPayOrderMapper.getByDdbh(request.getOutTradeNo());return result;}
WxPayUnifiedOrderRequest、WxPayMpOrderResult对象都是工具类中的对象,用就是了。
需要注意的点:1、单价为0元不能生成订单;2、微信订单只生效2小时;
微信登陆、支付接口对接整理相关推荐
- 支付宝接口 - 即时到账交易接口 对接 整理 1
支付宝官方开放平台接口说明: https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Gp6DiG&treeId=62&a ...
- 微信官方支付接口配置教程
微信官方支付接口配置教程 视频地址 https://www.bilibili.com/video/BV1pe411p7EJ/ 微信官方支付配置教程 1,我们需要四个参数 APPID Appsecret ...
- 微信移动支付接口申请——2016年5月版
感谢Q友绘色(11******65)!正因为他提供了一些他遇到的问题,才使这篇文章更全面. 微信移动支付接口申请入口:https://open.weixin.qq.com 微信移动支付接口申请分四个步 ...
- 2021年PC电脑网站接入微信登陆支付精讲--1小时自已就可动手接入功能,--所有流程一目了然
2021年了,你还要疲于拼命吗,2001年初,遇到BUG就是躲,放下,去吃最好吃的,吃好喝好,睡一觉,再来解决, 现在是喜欢上BUG了,出现BUG,就发自内心的想搞清楚,是什么源因导致的,呵呵呵 PC ...
- 第三方银联支付接口对接_聊聊三方支付对接那点事儿(附Demo)
每一个做过支付对接的少年上辈子都是折翼的天使.--题记 三方支付对接是一件比较有意思的事儿,今天就拿这个话题来掰扯掰扯.相信每个做过支付对接的小伙伴都有段血与火的经历,那段日子只有痛苦与煎熬,恨不得大 ...
- JAVA微信APP支付接口整合
2019独角兽企业重金招聘Python工程师标准>>> 上次我们看到了支付宝的APP支付工具,那么这次就来封装封装微信的APP支付;如果已经清楚了支付宝的支付流程,那么微信支付也和它 ...
- 特殊格式的 汇潮支付接口对接
在公司业务中,对接汇潮支付,--------该需求是调用汇潮的支付接口,他们作为中台,由他们调用支付宝接口 在异步回调的时候,遇到了"参数通过 post 方式提交, Content-Type ...
- android微信条码支付接口,Android中调用微信支付接口
在我的项目中还没有接入这个功能的时候就听说微信支付的接口很坑爹,用完之后发现别人说的一点也没有错,蛋疼归蛋疼,该用还是要用.在这里把遇到的问题记录一下以免以后需要再次接入的话碰到问题浪费时间. 微信支 ...
- Paypal REST API Java 版 PC端商城支付接口对接。
引言: 同类文借鉴链接:http://blog.csdn.net/change_on/article/details/73881791(对此博主万分感谢) Paypal账号注册网址:https://w ...
- 个人申请微信H5支付接口(个人免签约支付平台)
以下仅对企业开放的,如果个人想要申请 转到网址狸云支付 - 行业领先的免签约支付平台,提供微信支付接口,支付宝H5支付接口,个人支付接口申请,二维码支付接口http://www.alywlzf.co ...
最新文章
- 删除重复字符串的算法
- 5G NR — Open vRAN 的组织单位
- Android Studio开发flutter快捷键
- 【Zookeeper】源码分析之持久化(三)之FileTxnSnapLog
- matlab clabel函数用法,CLabel函数说明
- Python安装Whl文件
- 2020知到python语言应用答案_2020年知到APPPython语言应用第四单元章节测试答案
- 1/2 数据获取:本地数据的获取
- Hibernate @JoinTable 注解
- 日志中出现乱码_合宙Luat | 乱码搞得一团糟?开源神器帮你轻松修复
- android java 调用js_android WebApp 集成方式怎么使用java调用js
- 办公OA的附件无法下载、打不开的解决办法
- springMVC简易学习笔记三(文件上传与异常处理)
- 使用php glob函数查找文件,遍历文件目录(转)
- 欢迎使用云-“您的Apple ID已被禁用。”
- 如何使用计算机自带的刻录软件,Win7系统自带光盘刻录功能如何使用?
- 产品 观察体会微信界面心得(一)
- csv文件超过104万数据怎么办
- PPP和PDP激活是什么区别
- iphone修改手机铃声