返回

用心避坑——Java对接微信支付API3姿势大公开

后端

通过 Java 对接微信支付 API3 的完整指南

准备就绪

踏入微信支付 API3 集成的世界,首先需要准备以下工具:

  • Java 开发环境 (JDK)
  • 微信支付 API3 文档
  • 微信支付 API3 SDK

创建项目

在 IntelliJ IDEA 中,创建一个新的 Maven 项目,为你的微信支付集成之旅奠定基础。

配置 SDK

将微信支付 API3 SDK 添加到你的项目中,就像给汽车装上引擎一样。你可以使用 Maven 依赖或直接下载 JAR 包。

配置微信支付 API3 密钥

就像使用密钥解锁保险柜一样,我们需要配置微信支付 API3 密钥以访问其服务。将下载的证书文件配置到项目的 application.properties 文件中。

开发支付功能

现在,我们进入激动人心的部分:开发支付功能。我们创建一个简单的 Servlet 来处理支付请求,就像一个支付网关一样。

import com.github.wechatpay.apiv3.bean.request.wxpay.UnifiedOrderRequest;
import com.github.wechatpay.apiv3.bean.result.wxpay.UnifiedOrderResult;
import com.github.wechatpay.apiv3.client.WxPayClient;
import com.github.wechatpay.apiv3.util.PemUtils;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.PrivateKey;

public class PayServlet extends HttpServlet {

    private WxPayClient client;

    @Override
    public void init() throws ServletException {
        try {
            // 初始化微信支付API3客户端
            PrivateKey privateKey = PemUtils.loadPrivateKey(Files.readAllBytes(Paths.get("apiclient_cert.p12")), "微信支付商户号");
            client = new WxPayClient.Builder()
                    .privateKey(privateKey)
                    .build();
        } catch (IOException e) {
            throw new ServletException("初始化微信支付API3客户端失败", e);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取请求参数
        String body = req.getParameter("body");
        String totalFee = req.getParameter("totalFee");

        // 构建微信支付统一下单请求对象
        UnifiedOrderRequest unifiedOrderRequest = new UnifiedOrderRequest();
        unifiedOrderRequest.setBody(body);
        unifiedOrderRequest.setTotalFee(Integer.parseInt(totalFee));

        // 调用微信支付统一下单API
        UnifiedOrderResult unifiedOrderResult = client.execute(unifiedOrderRequest);

        // 将统一下单结果返回给前端
        resp.getWriter().write(unifiedOrderResult.toJsonString());
    }
}

部署项目

像火箭发射一样,将你的项目部署到服务器上,让它在现实世界中翱翔。

结语

恭喜你,已经成功对接了微信支付 API3!现在,你的用户可以享受无缝的支付体验,而你也可以坐收收益。

常见问题解答

  • 我需要哪些先决条件才能使用微信支付 API3?

    • JDK、微信支付 API3 文档和 SDK。
  • 如何配置微信支付 API3 密钥?

    • 下载证书文件并将其配置到项目的 application.properties 文件中。
  • 我可以在哪里找到微信支付 API3 文档?

  • 如何处理支付回调?

    • 创建一个 Servlet 来处理回调通知,并使用 WxPayNotifyClient 来验证签名和处理通知。
  • 我可以在哪里获得微信支付 API3 支持?

    • 微信支付官方社区和微信支付 API3 GitHub 仓库。