Java后端调用微信支付和支付宝支付的详细步骤

 更新时间:2025年04月17日 08:56:37   作者:阿贾克斯的黎明  
这篇文章主要介绍了Java后端如何调用微信支付和支付宝支付,涵盖了基本概念、配置步骤、代码示例以及注意事项,文中通过代码介绍的非常详细,需要的朋友可以参考下

引言

在当今数字化的商业环境中,线上支付已成为交易的主流方式。微信支付和支付宝支付作为国内两大主流的第三方支付平台,拥有庞大的用户群体。对于 Java 后端开发者来说,实现与这两个支付平台的对接是常见的需求。本文将详细介绍 Java 后端如何调用微信支付和支付宝支付,涵盖基本概念、配置步骤、代码示例以及注意事项。

一、微信支付

1.1 基本概念

微信支付是腾讯公司推出的一种便捷支付方式,支持多种支付场景,如扫码支付、JSAPI 支付、APP 支付等。在 Java 后端调用微信支付,主要是通过调用微信支付提供的 API 接口来完成支付流程。

1.2 前期准备

1.3 配置依赖

在 pom.xml 中添加以下依赖:

<dependency>
    <groupId>com.github.wxpay</groupId>
    <artifactId>wxpay-sdk</artifactId>
    <version>0.0.3</version>
</dependency>

1.4 代码示例:扫码支付

import com.github.wxpay.sdk.WXPay;
import com.github.wxpay.sdk.WXPayConfig;
import com.github.wxpay.sdk.WXPayConstants;
import com.github.wxpay.sdk.WXPayUtil;

import java.util.HashMap;
import java.util.Map;

public class WechatPayExample {

    public static void main(String[] args) throws Exception {
        // 实现 WXPayConfig 接口
        WXPayConfig config = new WXPayConfig() {
            @Override
            public String getAppID() {
                return "your_app_id";
            }

            @Override
            public String getMchID() {
                return "your_mch_id";
            }

            @Override
            public String getKey() {
                return "your_api_key";
            }

            @Override
            public InputStream getCertStream() {
                // 加载商户证书
                return WechatPayExample.class.getResourceAsStream("/apiclient_cert.p12");
            }

            @Override
            public int getHttpConnectTimeoutMs() {
                return 8000;
            }

            @Override
            public int getHttpReadTimeoutMs() {
                return 10000;
            }
        };

        WXPay wxpay = new WXPay(config, WXPayConstants.SignType.MD5);

        // 组装请求参数
        Map<String, String> data = new HashMap<>();
        data.put("body", "商品描述");
        data.put("out_trade_no", "20250225001");
        data.put("total_fee", "1");
        data.put("spbill_create_ip", "127.0.0.1");
        data.put("notify_url", "https://yourdomain.com/notify");
        data.put("trade_type", "NATIVE");

        // 调用统一下单接口
        Map<String, String> resp = wxpay.unifiedOrder(data);
        System.out.println(resp);

        if ("SUCCESS".equals(resp.get("return_code")) && "SUCCESS".equals(resp.get("result_code"))) {
            String codeUrl = resp.get("code_url");
            System.out.println("生成的二维码链接: " + codeUrl);
        }
    }
}

1.5 代码解释

  • 实现 WXPayConfig 接口:该接口用于配置微信支付的基本信息,如 app_idmch_idapi_key 等。
  • 创建 WXPay 对象:使用配置信息创建 WXPay 对象,指定签名类型为 MD5。
  • 组装请求参数:根据业务需求组装统一下单接口的请求参数,如商品描述、订单号、金额等。
  • 调用统一下单接口:调用 unifiedOrder 方法发起统一下单请求,返回支付结果信息。
  • 获取二维码链接:如果下单成功,从返回结果中获取 code_url,用于生成支付二维码。

二、支付宝支付

2.1 基本概念

支付宝支付是蚂蚁金服旗下的支付平台,同样支持多种支付场景,如扫码支付、电脑网站支付、手机网站支付等。Java 后端调用支付宝支付也是通过调用支付宝提供的 API 接口来实现。

2.2 前期准备

  • 注册支付宝开放平台账号:登录支付宝开放平台(支付宝开放平台)进行注册,创建应用并获取应用 ID(app_id)。
  • 配置密钥:生成应用私钥和公钥,将公钥上传到支付宝开放平台。
  • 配置支付参数:在开放平台配置支付回调地址等参数。

2.3 配置依赖

在 pom.xml 中添加以下依赖:

<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>4.10.115.ALL</version>
</dependency>

2.4 代码示例:电脑网站支付

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;

public class AlipayExample {

    public static void main(String[] args) {
        // 支付宝网关
        String gatewayUrl = "https://openapi.alipay.com/gateway.do";
        // 应用 ID
        String appId = "your_app_id";
        // 应用私钥
        String privateKey = "your_private_key";
        // 支付宝公钥
        String alipayPublicKey = "your_alipay_public_key";
        // 字符编码格式
        String charset = "UTF-8";
        // 签名方式
        String signType = "RSA2";
        // 支付成功回调地址
        String returnUrl = "https://yourdomain.com/return";
        // 支付结果通知地址
        String notifyUrl = "https://yourdomain.com/notify";

        // 创建 AlipayClient 对象
        AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl, appId, privateKey, "json", charset, alipayPublicKey, signType);

        // 创建 AlipayTradePagePayRequest 对象
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        alipayRequest.setReturnUrl(returnUrl);
        alipayRequest.setNotifyUrl(notifyUrl);

        // 组装请求参数
        alipayRequest.setBizContent("{\"out_trade_no\":\"20250225002\"," +
                "\"total_amount\":\"0.01\"," +
                "\"subject\":\"商品名称\"," +
                "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

        try {
            // 调用支付接口
            String result = alipayClient.pageExecute(alipayRequest).getBody();
            System.out.println(result);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
    }
}

2.5 代码解释

  • 创建 AlipayClient 对象:使用支付宝网关、应用 ID、应用私钥、支付宝公钥等信息创建 AlipayClient 对象。
  • 创建 AlipayTradePagePayRequest 对象:设置支付成功回调地址和支付结果通知地址。
  • 组装请求参数:根据业务需求组装支付请求的业务参数,如订单号、金额、商品名称等。
  • 调用支付接口:调用 pageExecute 方法发起支付请求,返回支付页面的 HTML 代码。

三、注意事项

  • 签名验证:在与支付平台交互过程中,要确保签名的正确性,防止数据被篡改。
  • 回调处理:支付完成后,支付平台会向回调地址发送通知,要正确处理回调信息,更新订单状态。
  • 异常处理:在调用支付接口时,要对可能出现的异常进行捕获和处理,保证系统的稳定性。

四、总结

通过以上步骤和代码示例,我们可以看到 Java 后端调用微信支付和支付宝支付的基本流程。在实际开发中,要根据具体的业务需求选择合适的支付场景和接口,同时要注意支付安全和数据的准确性。希望本文能帮助你顺利实现 Java 后端与微信支付和支付宝支付的对接。

到此这篇关于Java后端调用微信支付和支付宝支付的文章就介绍到这了,更多相关Java后端调用微信和支付宝支付内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot项目搭建的两种方式

    Spring Boot项目搭建的两种方式

    springboot简单快捷方便的优点深受用户喜爱,springboot开发环境搭建过程是每个开发者必须要做的工作,今天小编写的一篇教程关于Spring Boot项目搭建方法,通过两种方式给大家介绍的非常详细,需要的朋友参考下吧
    2021-06-06
  • 深入理解Java三大特性中的多态

    深入理解Java三大特性中的多态

    多态性是对象多种表现形式的体现。在面向对象中,最常见的多态发生在使用父类的引用来引用子类的对象。下面这篇文章主要给大家深入的介绍了Java三大特性中多态的相关资料,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01
  • MyBatis中如何查询某个时间段内的数据

    MyBatis中如何查询某个时间段内的数据

    这篇文章主要介绍了MyBatis中如何查询某个时间段内的数据,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Java并发中的ABA问题学习与解决方案

    Java并发中的ABA问题学习与解决方案

    这篇文章主要介绍了Java并发中的ABA问题学习与解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Spring Cache与Redis结合的使用方式

    Spring Cache与Redis结合的使用方式

    这篇文章主要介绍了Spring Cache与Redis结合的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • SpringCloud Gateway鉴权和跨域解决方案

    SpringCloud Gateway鉴权和跨域解决方案

    网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过 网关这一层,也就是说,API 的实现方面更多的考虑业务逻辑,而安全、性能、监控可以交由 网关来做,这样既提高业务灵活性又不缺安全性,本文给大家介绍SpringCloud Gateway鉴权和跨域解决方案,一起看看吧
    2023-11-11
  • 从零开始Mybatis连接数据库的方法

    从零开始Mybatis连接数据库的方法

    这篇文章主要介绍了Mybatis连接数据库的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Java8 使用 stream().sorted()对List集合进行排序的操作

    Java8 使用 stream().sorted()对List集合进行排序的操作

    这篇文章主要介绍了Java8 使用 stream().sorted()对List集合进行排序的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Spring Boot 中的 @PutMapping 注解原理及使用小结

    Spring Boot 中的 @PutMapping 注解原理及使用小结

    在本文中,我们介绍了 Spring Boot 中的 @PutMapping 注解,它可以将 HTTP PUT 请求映射到指定的处理方法上,我们还介绍了 @PutMapping 注解的原理以及如何在 Spring Boot 中使用它,感兴趣的朋友跟随小编一起看看吧
    2023-12-12
  • Java微信小程序oss图片上传的实现方法

    Java微信小程序oss图片上传的实现方法

    这篇文章主要介绍了Java微信小程序oss图片上传的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12

最新评论