以下是一个Java对接支付宝支付的实例代码,以及相应的代码解说。
Java对接支付宝支付实例代码
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class PayServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 创建AlipayClient对象
AlipayClient alipayClient = new DefaultAlipayClient(
"https://openapi.alipay.com/gateway.do", // 支付宝网关地址
"your-app-id", // 你的AppId
"your-app-private-key", // 你的应用私钥
"json", // 格式,如json
"UTF-8", // 字符编码
"your-alipay-public-key", // 支付宝公钥
"RSA2" // 签名方式
);
// 创建AlipayTradePagePayRequest对象
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
request.setReturnUrl("http://www.us87.com/?your-return-url"); // 支付成功后的返回地址
request.setNotifyUrl("http://www.us87.com/?http://your-notify-url"); // 支付成功后的异步通知地址
// 设置请求参数
request.setBizContent("{" +
" \"out_trade_no\":\"" + System.currentTimeMillis() + "\", " + // 商户订单号
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\", " + // 销售产品码,使用预下单时固定值
" \"total_amount\":\"10.00\", " + // 订单总金额
" \"subject\":\"商品A\" " + // 商品的标题/交易标题/订单标题/订单关键字等
"}");
// 调用SDK发起支付请求
try {
String form = alipayClient.pageExecute(request).getBody(); // 调用SDK生成表单
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(form); // 直接将完整的表单html输出到页面
} catch (Exception e) {
e.printStackTrace();
}
}
}
代码解说
-
导入必要的类:导入了支付宝SDK中的必要类,包括
AlipayClient
、DefaultAlipayClient
、AlipayTradePagePayRequest
以及AlipayTradePagePayResponse
。 -
创建AlipayClient对象:使用
DefaultAlipayClient
构造函数创建支付宝客户端对象,传入支付宝网关地址、AppId、应用私钥、格式、字符编码、支付宝公钥和签名方式。 -
创建支付请求对象:创建
AlipayTradePagePayRequest
对象,并设置支付成功后的返回地址和异步通知地址。 -
设置业务参数:通过
setBizContent
方法设置支付业务参数,包括商户订单号、销售产品码、订单总金额和商品标题。 -
发起支付请求:调用
pageExecute
方法发起支付请求,并获取返回的表单HTML代码。 -
输出HTML表单:将获取到的HTML代码输出到页面,这样用户的浏览器就会自动跳转到支付宝支付页面进行支付。
注意事项
- 确保替换代码中的
your-app-id
、your-app-private-key
、your-alipay-public-key
和URL地址为你自己的支付宝应用信息。 - 确保服务器支持HTTPS,因为支付宝要求所有接口调用都必须通过HTTPS进行。
- 异步通知(
notifyUrl
)是支付宝支付完成后向商户服务器发送支付结果通知的地址,商户需要在这个地址上接收通知并进行处理,如更新订单状态等。 - 同步返回(
returnUrl
)是用户支付完成后返回到商户网站的地址,可以用于显示支付结果页面。
以上代码和解说可以帮助你理解如何在Java应用中集成支付宝支付功能,并发布技术类文章。