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

相关推荐
万少17 小时前
DeepSeek 昨晚刚开源了 Harness:附万少的2 万字保姆级教程
前端·后端·架构
大鸡腿同学21 小时前
身弱体质|你的 FM 该关了📻
后端
Csvn21 小时前
📊 SQL 入门 Day 18:索引原理
后端·sql
Csvn21 小时前
🐍 Day3 : Python 容器精讲 — list、dict、set、tuple 底层实现与高级操作
后端·python
用户9385156350721 小时前
ESLint 代码规范完全指南——从 AST 原理到 flat config 逐行解析
javascript·后端·代码规范
用户938515635071 天前
深入理解 Next.js:从 SPA 的 SEO 问题到约定式路由与 SSR 原理
前端·后端·全栈
码事漫谈1 天前
Deepseek涨价了,前后对比,竟然差这么多
后端
东风破_1 天前
大前端手里的 Next.js:从 #root 到 SEO,一份 HTML 的两种命运
前端·后端
IT_陈寒1 天前
Vue的v-for不听话?我被这个Key的坑整懵了
前端·人工智能·后端
众人皆醒我独醉1 天前
训练加速实战:Flash Attention、Gradient Checkpointing 与数据流水线
后端·面试·gpu