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。

相关推荐
卷无止境43 分钟前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
谢亮_vipxieliang1 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
狼爷1 小时前
从零用 Java 构建 AI Agent 框架:JavaManus 设计与实现深度解析
后端·langchain·aigc
郑州光合科技余经理1 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
专业程序开发源2 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
专业程序开发源2 小时前
springboot社区养老系统44071-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
小呆呆6662 小时前
副业搞起来,小说,漫画,漫剧的成本优化思路
前端·后端·面试
周杰伦fans2 小时前
8GB显存下模型量化实战指南
人工智能·后端·c#
余槐i3 小时前
数据没回滚也不报错:@Transactional 自调用失效的 3 种复现与修复
spring boot·mysql·多线程·spring 事务
小蒜学长3 小时前
基于SpringBoot的佳新超市管理系统设计与实现系统(代码+数据库+LW)
java·数据库·spring boot·后端·佳新超市管理系统