Spring Boot 对接微信支付的详细

Spring Boot 对接微信支付的详细教程,涵盖从环境准备到支付回调的全流程,适用于 ​​公众号支付、小程序支付、H5 支付​​ 等场景(以最常用的公众号支付为例)。

​​一、前置准备​​
1. 注册微信支付商户号


​​前提条件​​:需先拥有已认证的微信公众号/小程序(服务号/小程序),且主体为企业/组织。


​​步骤​​:


登录 微信支付商户平台,点击「立即注册」。


选择「企业/组织」类型,填写营业执照、法人信息、银行账户等资料,完成审核(约 1-3 个工作日)。


审核通过后,登录商户平台获取以下关键信息:

​​商户号(mch_id)​​:商户平台的唯一标识(如 1234567890)。
​​API 密钥(API Key)​​:商户平台的支付密钥(需手动设置,用于签名验证,长度 32 位)。
​​商户证书​​:登录商户平台 → 「账户中心」→ 「API 安全」→ 下载 apiclient_cert.pem(公钥证书)和 apiclient_key.pem(私钥证书)(用于双向 SSL 验证,部分接口需要)。
​​公众账号 ID(appid)​​:关联的微信公众号/小程序的 appid(如 wx1234567890abcdef)。

2. 配置支付权限

在商户平台 → 「产品中心」→ 选择需要开通的支付场景(如「公众号支付」),开通后等待审核。

3. 开发环境准备

​​JDK 1.8+​​、Maven 3.6+、Spring Boot 2.3+(推荐 2.7.x 或 3.0+)。
微信支付 SDK:推荐使用

### Spring Boot微信小程序支付集成教程 #### 添加依赖项 为了使Spring Boot应用程序能够处理来自微信小程序的请求并完成支付流程,需引入必要的依赖库。对于微信支付功能而言,在`pom.xml`文件中加入如下配置: ```xml <dependency> <groupId>com.github.wechatpay-apiv3</groupId> <artifactId>wechatpay-java</artifactId> <version>0.2.1</version> </dependency> ``` 上述代码展示了如何通过Maven管理器向项目添加官方推荐使用的WeChat Pay Java SDK版本[^2]。 #### 创建服务接口 定义用于发起预支付交易的服务方法,该方法接收从前端传来的订单详情参数,并调用微信统一下单API获取prepay_id返回给前端应用以便后续操作。 ```java @Service public class WeChatPayService { @Value("${wechat.pay.appid}") private String appId; public Map<String, Object> unifiedOrder(String outTradeNo, BigDecimal totalAmount) throws Exception { // 构建请求体... // 调用统一下单 API ... // 返回 prepay_id 给前端 return result; } } ``` 这段示例说明了怎样封装一个简单的统一订单服务类来准备发送至微信服务器的数据包以及解析响应消息[^1]。 #### 控制层设计 编写控制器用来接受HTTP POST请求并将业务逻辑委托给之前提到的服务组件执行。这里假设已经完成了安全校验等工作。 ```java @RestController @RequestMapping("/api/pay") public class PaymentController { @Autowired private WeChatPayService weChatPayService; @PostMapping("/create-order") public ResponseEntity<Map<String,Object>> createOrder(@RequestBody OrderRequest request){ try{ var response = this.weChatPayService.unifiedOrder(request.getOutTradeNo(),request.getTotalFee()); return new ResponseEntity<>(response,HttpStatus.OK); }catch (Exception e){ log.error(e.getMessage()); throw new RuntimeException("Create order failed"); } } } ``` 此片段解释了RESTful风格下的控制函数是如何工作的——它负责接收外部输入并通过内部机制触发相应的动作。 #### 前端交互指南 最后一步是在微信小程序侧实现页面跳转到支付界面的功能。通常情况下会利用wx.requestPayment() API 完成这一过程。下面给出了一段简化版的小程序JavaScript脚本样例: ```javascript const app = getApp(); Page({ data: {}, async payNow(orderInfo) { const res = await wx.request({ url: &#39;https://yourdomain.com/api/pay/create-order&#39;, method: "POST", data: { ...orderInfo }, header: {&#39;content-type&#39;: &#39;application/json&#39;} }); let paymentData = {...res.data}; wx.requestPayment({ timeStamp: paymentData.timeStamp, nonceStr: paymentData.nonceStr, package: `prepay_id=${paymentData.prepayId}`, signType: &#39;MD5&#39;, paySign: paymentData.sign, success(res) { console.log(&#39;success&#39;, res); }, fail(err) { console.error(&#39;fail&#39;, err); } }); } }); ``` 以上就是整个从后端搭建直至前端调用的一套完整的方案描述[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔向理想的星辰大海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值