目录
引言
在当今数字化的商业环境中,线上支付已成为交易的主流方式。微信支付和支付宝支付作为国内两大主流的第三方支付平台,拥有庞大的用户群体。对于 Java 后端开发者来说,实现与这两个支付平台的对接是常见的需求。本文将详细介绍 Java 后端如何调用微信支付和支付宝支付,涵盖基本概念、配置步骤、代码示例以及注意事项。
一、微信支付
1.1 基本概念
微信支付是腾讯公司推出的一种便捷支付方式,支持多种支付场景,如扫码支付、JSAPI 支付、APP 支付等。在 Java 后端调用微信支付,主要是通过调用微信支付提供的 API 接口来完成支付流程。
1.2 前期准备
- 注册微信支付商户号:登录微信支付商户平台(微信支付 - 中国领先的第三方支付平台 | 微信支付提供安全快捷的支付方式)进行注册,获取商户号(
mch_id
)。 - 配置 API 密钥:在商户平台设置 API 密钥,用于签名验证。
- 获取证书:下载商户证书(
apiclient_cert.p12
),用于安全通信。
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_id
、mch_id
、api_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