SpringBoot对接微信小程序支付功能开发(二,支付回调功能)

这篇具有很好参考价值的文章主要介绍了SpringBoot对接微信小程序支付功能开发(二,支付回调功能)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

接着上一篇: SpringBoot对接微信小程序支付功能开发(一,下单功能)

在上一篇下单功能中我们有传支付结果回调地址。
微信支付回调接口怎么写,微信开发专栏,spring boot,微信小程序,java
下面是回调接口实现

package com.office.miniapp.controller;


import cn.hutool.core.date.DateTime;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.office.miniapp.constants.ProjectConstant;
import com.office.miniapp.entity.TdOrders;
import com.office.miniapp.entity.TdShops;
import com.office.miniapp.entity.TdWxPay;
import com.office.miniapp.service.TdOrdersService;
import com.office.miniapp.service.TdShopsService;
import com.office.miniapp.service.TdWxPayService;
import com.office.miniapp.utils.HttpClientUtil;
import com.office.miniapp.utils.WxPayUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

/**
 * <p>
 * 支付表 前端控制器
 * </p>
 *
 * @author XQD
 * @since 2022-08-13
 */
@Slf4j
@RestController
@RequestMapping("/wxPay")
public class TdWxPayController extends BaseController {

    @PostMapping("/callback")
    public Object callback(HttpServletRequest request) {
        log.info("【支付回调】");
        System.out.println("Wechatpay-Timestamp:" + request.getHeader("Wechatpay-Timestamp"));
        System.out.println("Wechatpay-Nonce:" + request.getHeader("Wechatpay-Nonce"));
        System.out.println("Wechatpay-Signature:" + request.getHeader("Wechatpay-Signature"));
        System.out.println("Wechatpay-Serial:" + request.getHeader("Wechatpay-Serial"));
        Map result = new HashMap();
        result.put("code", "FAIL");
        try {
            StringBuilder signStr = new StringBuilder();
            // 应答时间戳\n
            signStr.append(request.getHeaders("Wechatpay-Timestamp")).append("\n");
            // 应答随机串\n
            signStr.append(request.getHeaders("Wechatpay-Nonce")).append("\n");
            // 应答报文主体\n
            BufferedReader br = request.getReader();
            String str = null;
            StringBuilder builder = new StringBuilder();
            while ((str = br.readLine()) != null) {
                builder.append(str);
            }
            System.out.println("支付应答报文主体:" + builder);
            signStr.append(builder.toString()).append("\n");
            // 第一步:验证签名
            if (WxPayUtil.signVerify(request.getHeader("Wechatpay-Serial"), signStr.toString(), request.getHeader("Wechatpay-Signature"))) {
                result.put("message", "sign error");
                return result;
            }
            // 第二步:解密密文
            String decryptOrder = WxPayUtil.decryptOrder(builder.toString());
            System.out.println("解密后支付信息:" + decryptOrder);
            JSONObject jsonObject = JSON.parseObject(decryptOrder);
            //String transactionId = jsonObject.getString("transaction_id");
            //String appid= jsonObject.getString("appid");
            //String successTime = new DateTime(jsonObject.getString("success_time")).toString();
            //JSONObject jsonPayer = JSON.parseObject(jsonObject.getString("payer"));
            //String openid= jsonPayer.getString("openid");
            //解密后的支付信息存入数据库...
            //第三步:验证订单,解密后的订单信息和自己数据库中的订单信息进行比对
            //金额对比  orders.getAmount()为数据库中的订单金额
            if (orders.getAmount().equals(jsonAmout.getInteger("total"))) {
                if ("SUCCESS".equals(jsonObject.getString("trade_state"))) {
                     // 支付成功...
                     //根据支付信息查询已存的订单信息,进行状态改变等操作,根据业务操作
                    }
               }
            result.put("code", "SUCCESS");
            result.put("message", "成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }
}

根据官网给的参数进行业务处理

微信支付回调接口怎么写,微信开发专栏,spring boot,微信小程序,java

这就完成了,微信支付回调你的地址,并且把支付的信息传进来,剩下就要根据自己业务进行操作。
注意:
1,验证签名和解密的操作在上一篇下单功能的文章中的WxPayUtil 中
2,这个地址必须为线上地址,https前缀的域名+/wxPay/callback。文章来源地址https://www.toymoban.com/news/detail-668972.html

到了这里,关于SpringBoot对接微信小程序支付功能开发(二,支付回调功能)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

领支付宝红包 赞助服务器费用

相关文章

  • uniapp+java/springboot实现微信小程序APIV3支付功能

    微信小程序的支付跟H5的支付和APP支付流程不一样,本次只描述下小程序支付流程。 1.微信小程序账号 文档:小程序申请 小程序支付需要先认证,如果你有已认证的公众号,也可以通过公众号免费注册认证小程序。 一般300元,我是认证的政府的免费。 然后登录小程序,设置

    2023年04月19日
    浏览(47)
  • 微信小程序对接微信支付详细教程

    小程序 微信支付官方文档 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_11index=2 https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_0.shtml 前提 在进行对接微信支付之前,我们首先需要将以下几点准备好: 申请APPID 申请商户号 小程序开通微信支付,绑定已经申请好的商户号。

    2024年02月09日
    浏览(48)
  • SpringBoot对接小程序微信支付

    目录 前言 一、准备工作 2.1、企业微信小程序开通 2.1.1、获取开发者ID 2.1.2、开通支付功能 2.1.3、关联商户号 2.2、企业商户号的开通 2.2.1、获取商户号mch_id 2.2.2、获取商户API密钥mch_key 二、整体流程 三、后端项目搭建 3.1、统一下单 3.2、支付支付回调 3.3、问题排查 3.4、统一下

    2024年02月04日
    浏览(53)
  • 使用云开发环境的云函数实现微信小程序的支付功能

    背景: 近期在开发一个商城类的微信小程序,因为本人只会使用 C 语言对 nodejs 环境不熟悉,因此在开发微信小程序时选用容易上手的云开发环境开发微信小程序。我想选用云开发环境的小伙伴和我的想法一致,对微信小程序开发相关知识了解很少。我的小程序的主体是个体

    2024年04月23日
    浏览(49)
  • 微信小程序对接微信支付所遇问题合集

    1. 后端使用微信官方sdk会简单很多,可以看看在第五个大标题上。 2. 相关文档汇总:         1、WxJava - MiniApp Java SDK 4.6.0 API         2、wechatpay-java/README.md at main · wechatpay-apiv3/wechatpay-java · GitHub         3、网络 | 微信开放文档         4、开发指引 - JSAPI支付 | 微信支付商

    2024年04月25日
    浏览(56)
  • 微信支付-超详细java开发-小程序对接

    本文适用于有一定基础的开发者,简单易通。后台用的的是java,我用的是springBoot,其它框架基本同理,前端就是一个简单的demo。微信官方提供了V2和V3两种方式,本文基于V2版支付开发(后续更新V3)。V2和V3版本区别 1.思路介绍 本次以微信小程序开发为例,如果自己想要玩一

    2024年02月09日
    浏览(58)
  • 【微信小程序支付功能】uniapp实现微信小程序支付功能

    场景 :要实现公司微信小程序的电商模块微信支付功能 一.实现步骤和思路 在登录状态,登录的时候获取到code,利用code获取到 openid: https://blog.csdn.net/weixin_45308405/article/details/128868377?spm=1001.2014.3001.5501 在manifest.json文件“App模块配置”项的“Payment(支付)”下,勾选“微信支付

    2024年02月11日
    浏览(60)
  • 微信小程序怎么开通支付功能?

    对于一些想通过小程序卖货的企业商家来说,在申请小程序后需要同时开通微信支付功能,才能在小程序上进行交易。那么关于微信小程序怎么开通支付功能,下面给大家说一说。 一、注册非个人主体的小程序账号 不管你是通过公众号后台快速注册还是微信公众平台官网直

    2024年02月12日
    浏览(43)
  • Python对接微信小程序V3接口进行支付,并使用uwsgi+nginx+django进行https部署

    网上找了很多教程,但是很乱很杂,并且教程资源很少且说的详细。这里就记录一下分享给大家 共分为以下几个步骤: 目录 一、开始前准备信息 二、使用前端code获取用户的openid 三、对接小程序v3接口下单 四、小程序支付的回调 五、安装并启动uwsgi 六、安装并启动nginx 七、

    2024年02月12日
    浏览(43)
  • springboot使用 WxJava 实现 微信小程序(uniapp开发)的登陆功能

    前端使用uniapp来开发微信小程序 后端springboot中使用WxJava来做服务端( WxJava是微信服务端开发 的Java SDK ) 该图来源于微信小程序官方文档 根据uniapp的官网直接通过它提供的第三方 登陆api直接使用,代码如下 直接根据WxJava的官方demo (1) yml配置 (2)两个配置文件 (3)contro

    2024年02月15日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包