支付宝支付成功回调案例 java
时间: 2023-07-11 17:45:39 浏览: 152
java接入支付宝
以下是一个简单的支付宝支付成功回调的Java代码示例:
```java
public class AlipayCallbackServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 获取支付宝POST过来反馈信息
Map<String, String> params = new HashMap<String, String>();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
// 乱码解决,这段代码在出现乱码时使用。
// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
params.put(name, valueStr);
}
// 2. 切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
// boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)
if (AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGN_TYPE)) {
// 3. 验证成功后进行业务处理
String outTradeNo = request.getParameter("out_trade_no"); // 商户订单号
String tradeNo = request.getParameter("trade_no"); // 支付宝交易号
String tradeStatus = request.getParameter("trade_status"); // 交易状态
if (tradeStatus.equals("TRADE_FINISHED") || tradeStatus.equals("TRADE_SUCCESS")) {
// 处理支付成功逻辑
// ...
}
response.getWriter().println("success");
} else {
response.getWriter().println("fail");
}
}
}
```
该代码中,我们从request中获取支付宝POST过来的反馈信息,然后使用支付宝提供的工具类对反馈信息进行验签,验证成功后进行业务处理,处理完毕后向支付宝返回"success"表示处理成功。
阅读全文