Java实现微信(主、子商户模式)及支付宝支付
Java实现微信(主、子商户模式)及支付宝支付
一、前言
在移动应用中,支付功能是必不可少的。微信和支付宝是中国最常用的两大支付平台。在本文中,我们将详细描述如何使用 Java 实现微信(主、子商户模式)及支付宝支付。
二、参考官方文档
* 微信普通商户: 微信服务商: 微信主商户模式3.1.1 商户信息配置首先,我们需要在微信支付平台上注册并配置我们的商户信息,包括商户ID(appid)、密钥(secret)和API证书。
3.1.2生成预支付单当用户点击支付按钮时,我们需要向微信支付平台发送请求,生成一个预支付单。这个预支付单包含了订单金额、商品描述等信息。
```javaimport java.util.HashMap;
import java.util.Map;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySecurityUtil;
import com.alipay.api.request.AlipayTradePrecreateRequest;
import com.alipay.api.response.AlipayTradePrecreateResponse;
public class WechatPay {
public static void main(String[] args) {
// 商户ID String appId = "your_app_id";
// 密钥 String secret = "your_secret";
// API证书 String apiCertPath = "path/to/api/cert";
//生成预支付单 Map
params.put("body", "测试订单");
params.put("out_trade_no", "1234567890");
params.put("total_amount", "10.00");
params.put("notify_url", " AlipayClient alipayClient = new DefaultAlipayClient(" appId, secret, "json", "RSA2",
apiCertPath, AlipaySecurityUtil.getPublicKeyFromCer(apiCertPath));
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
request.setBizContent(params);
try {
AlipayTradePrecreateResponse response = alipayClient.execute(request);
System.out.println(response.getBody());
} catch (Exception e) {
// 处理异常 }
}
}
```
3.1.3 响应支付结果当用户完成支付后,我们需要向微信支付平台发送请求,获取支付结果。
```javaimport java.util.HashMap;
import java.util.Map;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySecurityUtil;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradeQueryResponse;
public class WechatPay {
public static void main(String[] args) {
// 商户ID String appId = "your_app_id";
// 密钥 String secret = "your_secret";
// API证书 String apiCertPath = "path/to/api/cert";
// 获取支付结果 Map
params.put("out_trade_no", "1234567890");
AlipayClient alipayClient = new DefaultAlipayClient(" appId, secret, "json", "RSA2",
apiCertPath, AlipaySecurityUtil.getPublicKeyFromCer(apiCertPath));
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
request.setBizContent(params);
try {
AlipayTradeQueryResponse response = alipayClient.execute(request);
System.out.println(response.getBody());
} catch (Exception e) {
// 处理异常 }
}
}
```
3.2 微信子商户模式3.2.1 子商户信息配置首先,我们需要在微信支付平台上注册并配置我们的子商户信息,包括子商户ID(appid)、密钥(secret)和API证书。
3.2.2生成预支付单当用户点击支付按钮时,我们需要向微信支付平台发送请求,生成一个预支付单。这个预支付单包含了订单金额、商品描述等信息。
```javaimport java.util.HashMap;
import java.util.Map;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySecurityUtil;
import com.alipay.api.request.AlipayTradePrecreateRequest;
import com.alipay.api.response.AlipayTradePrecreateResponse;
public class WechatPay {
public static void main(String[] args) {
// 子商户ID String appId = "your_sub_app_id";
// 密钥 String secret = "your_sub_secret";
// API证书 String apiCertPath = "path/to/api/cert";
//生成预支付单 Map
params.put("body", "测试订单");
params.put("out_trade_no", "1234567890");
params.put("total_amount", "10.00");
params.put("notify_url", " AlipayClient alipayClient = new DefaultAlipayClient(" appId, secret, "json", "RSA2",
apiCertPath, AlipaySecurityUtil.getPublicKeyFromCer(apiCertPath));
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
request.setBizContent(params);
try {
AlipayTradePrecreateResponse response = alipayClient.execute(request);
System.out.println(response.getBody());
} catch (Exception e) {
// 处理异常 }
}
}
```
3.2.3 响应支付结果当用户完成支付后,我们需要向微信支付平台发送请求,获取支付结果。
```javaimport java.util.HashMap;
import java.util.Map;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySecurityUtil;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradeQueryResponse;
public class WechatPay {
public static void main(String[] args) {
// 子商户ID String appId = "your_sub_app_id";
// 密钥 String secret = "your_sub_secret";
// API证书 String apiCertPath = "path/to/api/cert";
// 获取支付结果 Map
params.put("out_trade_no", "1234567890");
AlipayClient alipayClient = new DefaultAlipayClient(" appId, secret, "json", "RSA2",
apiCertPath, AlipaySecurityUtil.getPublicKeyFromCer(apiCertPath));
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
request.setBizContent(params);
try {
AlipayTradeQueryResponse response = alipayClient.execute(request);
System.out.println(response.getBody());
} catch (Exception e) {
// 处理异常 }
}
}
```
四、支付宝支付
4.1 支付宝主商户模式4.1.1 商户信息配置首先,我们需要在支付宝平台上注册并配置我们的商户信息,包括商户ID(appid)、密钥(secret)和API证书。
4.1.2生成预支付单当用户点击支付按钮时,我们需要向支付宝平台发送请求,生成一个预支付单。这个预支付单包含了订单金额、商品描述等信息。
```javaimport java.util.HashMap;
import java.util.Map;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySecurityUtil;
import com.alipay.api.request.AlipayTradePrecreateRequest;
import com.alipay.api.response.AlipayTradePrecreateResponse;
public class AlipayPay {
public static void main(String[] args) {
// 商户ID String appId = "your_app_id";
// 密钥 String secret = "your_secret";
// API证书 String apiCertPath = "path/to/api/cert";
//生成预支付单 Map
params.put("