关注

Java 后端如何调用微信支付和支付宝支付

目录

Java 后端如何调用微信支付和支付宝支付

引言

一、微信支付

1.1 基本概念

1.2 前期准备

1.3 配置依赖

1.4 代码示例:扫码支付

1.5 代码解释

二、支付宝支付

2.1 基本概念

2.2 前期准备

2.3 配置依赖

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

2.5 代码解释

三、注意事项

四、总结


引言

在当今数字化的商业环境中,线上支付已成为交易的主流方式。微信支付和支付宝支付作为国内两大主流的第三方支付平台,拥有庞大的用户群体。对于 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 后端与微信支付和支付宝支付的对接。

转载自CSDN-专业IT技术社区

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_57836225/article/details/145841152

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--