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

相关推荐
明月_清风19 小时前
加密解密系统完全指南:原理剖析与 Go 实践
后端
小江的记录本20 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
冬奇Lab21 小时前
每日一个开源项目(第105篇):Twenty - 跳出 Salesforce 的圈套,定义现代开源 CRM
前端·后端·开源
ServBay1 天前
月之暗面 Kimi Code 0.4.0 发布,终端 AI 编码助手全面采用 TypeScript,实现毫秒级启动
后端·aigc·ai编程
小江的记录本1 天前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
小江的记录本1 天前
【JVM虚拟机】垃圾回收GC:垃圾收集器:G1:Region分区、Mixed GC、回收流程、适用场景(高频)(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·spring cloud·面试
欧雷殿1 天前
从「吸引子引导工程」看我的「一人公司」实践
前端·人工智能·后端
卷无止境1 天前
用一个电影院售票厅,把 SimPy 的条件事件讲透
后端
日月云棠1 天前
9 Double 与 Float —— IEEE 754 浮点数在 Java 中的实现
java·后端