SpringBoot-微信支付对接实践

国破山河在,城春草木深。

1 前言

在前文中已经介绍了 SpringBoot 接入支付宝支付的方式和方法,在本文中将继续分享微信支付的方式。微信和支付宝是目前最常用的两种支付工具,相比支付宝的方式,微信支付在 v2 版本还是 xml 的方式,但是在 v3 版本已经支付 json 格式了,本文介绍的支付方式也是 微信的 v3 版本。

2 微信支付产品

和支付宝支付场景类似,微信支付也有很多产品。具体如下所示:

java 复制代码
1 付款码支付
此种适用于线下面对面收银的场景,用户展示微信钱包内的付款码,商家使用设备扫描二维码直接收款
2 jsapi 支付
此种场景需要用户输入支付金额,适用于线下收款(商户展示收款码)、公众号场景(用户进行商家公众号选择产品完成支付)、pc 网站场景(网站显示收款二维码,用户扫描输入需要支付的金额)
3 小程序支付
此种场景需要在微信小程序内完成支付功能
4 native 支付
此种场景需要商户预定支付金额并展示支付二维码,用户使用扫一扫完成支付,该场景适用于 pc 网站支付。
5 App 支付
商户通过移动端设备进行收款,需要在应用内集成微信支付模块才能首付款。
6 刷脸支付
此种场景需要通过人脸识别设备,完成用户身份认证后进行支付。

3 接入准备

接入微信支付,首先需要在微信公众平台申请 AppId,进行应用绑定。

arduino 复制代码
微信公众平台 htts://mp.weixin,qq.com
申请步骤: 注册服务好,服务号认证,获取Appid,绑定商户号

本次使用的是 Api V3 版本的接口,所以需要设置 api v3 的密钥。

复制代码
登录商户平台后,选择账户中心、安全中心、api 安全设置 v3 版本密钥

设置完密钥后,同时需要申请商户 api 证书以及微信平台证书。

bash 复制代码
# 微信支付 api 如下所示
https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_7_3.shtml
xml 复制代码
<!--微信支付SDK-->
<dependency>
    <groupId>com.github.wechatpay-apiv3</groupId>
    <artifactId>wechatpay-apache-httpclient</artifactId>
    <version>0.3.0</version>
</dependency>

4 支付代码

首先需要引入微信支付的配置,相关的配置如下图所示:

在本文中,主要介绍 native 方式进行下单,微信 native 支付下单如下所示,值得注意的是微信支付的交易金额单位是分,没有小数。native 支付的方式返回内容是一个支付链接 code_url,根据支付链接生成二维码展示并支付。

支付下单需要传入支付金额,订单号,商户号等信息。

订单下完之后,需要查询订单的支付状态则需要查询订单的信息,需要传入订单号和商户号。

订单完成支付后,如果用户需要退款,则需要调用退款接口,需要注意的是传入的退款金额为分,而且需要传入原交易单单号和退款单号。

查询退款单信息,传入退款单号即可。

订单关闭接口,当用户超时未付或者主动关闭订单,需要根据原单号进行订单的关闭操作,此处一般是在定时任务处理订单的超时关闭。

6 总结

本文主要介绍了微信支付中常见的支付产品以及对应的场景,并结合自己的实践编写了与支付相关的代码。支付是一个很重要的业务,需要考虑的环节很多,比如服务的可用、高效、性能以及健壮性。结合微信支付的代码和支付宝支付的代码,可以进行业务的整合,将这两种支付方式整合到自己的项目中,灵活的切换支付方式。本文中所涉及的代码已经上传至 github, 欢迎交流学习。项目地址 springboot-auth。

相关推荐
Java爱好狂.2 小时前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
马良神笔4 小时前
2026 年Rag最近技术前沿总结
后端·python·django
程序猿DD4 小时前
同样10美元,OpenDesign和Command Code的DeepSeek V4.1 Flash额度到底有多少?
后端
高频因子挖掘机5 小时前
A股量化从日线升级到5分钟线:数据量增加后最先暴露哪些工程问题?
后端·github·api
高频因子挖掘机5 小时前
历史行情返回顺序变了,为什么按行号计算指标很危险?
后端·github·api
团子哒哒6 小时前
数组、切片和Map
后端
专注仿真7 小时前
ThinkPHP6 API接口开发实例:从零搭建RESTful风格接口
后端·php·restful
开心猴爷7 小时前
应对iOS审核4.3:可以使用 IpaGuard 来给属性名混淆的技术细节与平衡之道
后端·ios
1m555555557 小时前
RAG 工程实战(五):正确知识已经进入 Prompt,为什么大模型还是会答错?
后端·面试
易小尊7 小时前
我的模型在 65% 以上时准得可怕,在 50% 时像在掷硬币
后端