springboot 微信小程序支付回调

首先我们需要到微信后台配置回调的域名信息 必须是备案通过了的然后在springboot里面放行回调地址

/**
 * 支付回调通知
 *
 * @param request 请求参数
 */
@RequestMapping("/notify")
public void wxNotify(HttpServletRequest request) {
    orderService.wxNotify(request);
}
@Override
public void wxNotify(HttpServletRequest request) {
    log.info("支付回调");
    // 使用requestBody 错误,顺序不一致
    String data = wxPayManager.readData(request);
    JSONObject jsonObject = JSONObject.parseObject(data);
    // 获取微信签名
    String sign = request.getHeader("Wechatpay-Signature");
    // 获取时间戳
    String timestamp = request.getHeader("Wechatpay-Timestamp");
    // 获取证书序列号
    String serial = request.getHeader("Wechatpay-Serial");
    // 获取加密数据
    JSONObject resource = jsonObject.getJSONObject("resource");
    // 获取密文
    String ciphertext = resource.getString("ciphertext");
    // 附加数据
    String associatedData = resource.getString("associated_data");
    // 随机字符串
    String nonce = request.getHeader("Wechatpay-Nonce");
    // 验证微信签名
    Boolean valid = wxPayManager.validSign(timestamp, nonce, data, sign, serial);
    if (valid) {
        String nonce2 = resource.getString("nonce");
        String decrypt = wxPayManager.decryptToString(associatedData, nonce2, ciphertext);
        if (StringUtils.hasLength(decrypt)) {
            JSONObject object = JSONObject.parseObject(decrypt);
            String outTradeNo = object.getString("out_trade_no");
            // 查询订单
            OrderEntity order = super.getOne(Wrappers.lambdaQuery(OrderEntity.class).eq(OrderEntity::getOrderNo, outTradeNo));
            if (order != null) {
                // 未支付的
                if (order.getStatus() == 1) {
                    String tradeState = object.getString("trade_state");
                    // 支付成功,更改状态
                    if ("SUCCESS".equals(tradeState)) {
                        // 更改订单状态
                        this.updateTradeStatus(outTradeNo, PayTypeEnum.WECHAT_PAY);
                    }
                }
            } else {
                throw new ServiceException("订单信息有误");
            }
        }
    } else {
        throw new ServiceException("验证签名有误");
    }
}

具体项目地址:code-miniprogram: 源码字节 流量主资源变现小程序 有流量就能躺着赚钱,如今疫情严峻的情况下,很多实体企业都收到影响,所有萌生了创业的想法,靠工资只能解决温饱问题,只有足够的外快才能让我们富足。来源码字节,手把手搭建平台流量主项目,让每个人都可以自己创业。文章来源地址https://uudwc.com/A/eP515

原文地址:https://blog.csdn.net/qq_63045883/article/details/125705447

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年06月26日 06:09
Ubuntu查看磁盘/U盘方法
下一篇 2023年06月26日 06:10