Java如何实现微信支付v3的支付回调

 更新时间:2023年07月19日 11:29:40   作者:DrewLiang  
这篇文章主要给大家介绍了关于Java如何实现微信支付v3的支付回调,微信实现支付功能与支付宝实现支付功能是相似的,文中给了详细的示例代码,需要的朋友可以参考下

使用微信支付的v3 API进行支付的相关功能的开发

以前都是自己手搓api的, 现在有轮子了, 尝试记录一下如何使用

我的做法是首先打开v3的代码仓库, 直接进去看看他们的文档, 可以看到这么一坨东西

前置条件

1. 开发前准备

2. 先引入maven

<dependency>
	  <groupId>com.github.wechatpay-apiv3</groupId>
	  <artifactId>wechatpay-java</artifactId>
	  <version>0.2.6</version>
	</dependency>

3. 初始化商户配置

Config config = new RSAAutoCertificateConfig.Builder()
                .merchantId(wechatConstant.spMchId)
                .privateKeyFromPath(wechatConstant.privateKeyPath)
                .merchantSerialNumber(wechatConstant.merchantSerialNumber)
                .apiV3Key(wechatConstant.apiV3key)
                .build();

实现代码

先从请求头中获取构建RequestParam需要的参数

// 从请求头中获取信息
	String timestamp                        = request.getHeader("Wechatpay-Timestamp");
	String nonce                            = request.getHeader("Wechatpay-Nonce");
	String signature                        = request.getHeader("Wechatpay-Signature");
	String singType                         = request.getHeader("Wechatpay-Signature-Type");
	String wechatPayCertificateSerialNumber = request.getHeader("Wechatpay-Serial");

初始化解析器

// 初始化解析器 NotificationParser
    NotificationParser parser = new NotificationParser((NotificationConfig) config);

进行验签, 解密并转换成Transaction, 验签解密都是用API干了, 不用自己手动整了

import com.wechat.pay.java.service.partnerpayments.jsapi.model
	// 这个Transaction是微信包里面的
	Transaction decryptObject = parser.parse(requestParam, Transaction.class);

成功后需要对微信进行应答

  • 接收成功:HTTP应答状态码需返回200或204,无需返回应答报文。
  • 接收失败:HTTP应答状态码需返回5XX或4XX,同时需返回应答报文
{   
    "code": "FAIL",
    "message": "失败"
}

完成

总结

到此这篇关于Java如何实现微信支付v3的支付回调的文章就介绍到这了,更多相关Java微信支付v3支付回调内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA应用系统工具快捷托盘实例代码

    JAVA应用系统工具快捷托盘实例代码

    JAVA应用系统工具快捷托盘实例代码,需要的朋友可以参考一下
    2013-02-02
  • Spring各版本新特性的介绍

    Spring各版本新特性的介绍

    今天小编就为大家分享一篇关于Spring各版本新特性的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • mybatis拦截器及不生效的解决方法

    mybatis拦截器及不生效的解决方法

    本文主要介绍了mybatis拦截器及不生效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 详解Java中NullPointerException的处理方法

    详解Java中NullPointerException的处理方法

    这篇文章将带大家来单独看一个很常见的异常--空指针异常,这个可以说是每个Java程序员都必知的异常,所以我们不得不单独学习一下,文中有详细的代码示例,需要的朋友可以参考下
    2023-08-08
  • RabbitMQ,RocketMQ,Kafka 事务性,消息丢失,消息顺序性和消息重复发送的处理策略问题

    RabbitMQ,RocketMQ,Kafka 事务性,消息丢失,消息顺序性和消息重复发送的处理策略问题

    这篇文章主要介绍了RabbitMQ,RocketMQ,Kafka 事务性,消息丢失,消息顺序性和消息重复发送的处理策略,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Windows下apache ant安装、环境变量配置教程

    Windows下apache ant安装、环境变量配置教程

    这篇文章主要介绍了Windows下apache ant安装、环境变量配置教程,ANT的安装很简单,本文同时讲解了验证安装是否成功的方法和使用方法实例,需要的朋友可以参考下
    2015-06-06
  • SpringBoot实现缓存与数据库双写策略的详细代码

    SpringBoot实现缓存与数据库双写策略的详细代码

    在SpringBoot企业开发中,为了提升系统性能,我们都会给高频查询接口加上缓存,把热点数据缓存起来,减少数据库查询压力,因此本文给大家介绍了SpringBoot实现缓存与数据库双写策略的详细方法,需要的朋友可以参考下
    2026-04-04
  • 基于SpringAI+DeepSeek实现流式对话功能

    基于SpringAI+DeepSeek实现流式对话功能

    一般来说大模型的响应速度通常是很慢的,为了避免用户用户能够耐心等待输出的结果,我们通常会使用流式输出一点点将结果输出给用户,那么问题来了,想要实现流式结果输出,后端和前端要如何配合?下来本文给出具体的实现代码,需要的朋友可以参考下
    2025-02-02
  • MyEclipse安装JS代码提示的教程(Spket插件)

    MyEclipse安装JS代码提示的教程(Spket插件)

    本篇文章主要介绍了MyEclipse安装JS代码提示的教程(Spket插件),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Java中@PathVariable 和 @RequestParam的区别小结

    Java中@PathVariable 和 @RequestParam的区别小结

    本文主要介绍了Java中@PathVariable 和 @RequestParam的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-02-02

最新评论