java 支付宝回调接口案例
时间: 2023-09-24 18:13:03 浏览: 135
支付宝接口案例
以下是一个简单的Java支付宝回调接口案例:
```java
import com.alipay.api.AlipayApiException;
import com.alipay.api.internal.util.AlipaySignature;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@Controller
public class AlipayController {
// 支付宝异步通知接口
@RequestMapping("/alipay/notify")
public void notify(HttpServletRequest request) throws AlipayApiException {
// 获取支付宝POST过来反馈信息
Map<String,String> params = new HashMap<>();
Map<String,String[]> requestParams = request.getParameterMap();
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = iter.next();
String[] values = requestParams.get(name);
StringBuilder valueStr = new StringBuilder();
for (int i = 0; i < values.length; i++) {
valueStr.append((i == values.length - 1) ? values[i]: values[i] + ",");
}
// 乱码解决,这段代码在出现乱码时使用
// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
params.put(name, valueStr.toString());
}
// 调用SDK验证签名
boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.publicKey, AlipayConfig.charset, AlipayConfig.signType);
if(signVerified) {
// TODO: 处理业务逻辑
} else {
// TODO: 验签失败则记录异常日志,并在response中返回failure.
}
}
}
```
在上面的代码中,我们通过Spring MVC框架提供的`@Controller`注解标记该类作为一个控制器。然后,我们定义了一个处理支付宝异步通知的方法`notify()`,并将该方法标记为处理`/alipay/notify`请求的方法。
在方法中,我们首先获取支付宝POST过来的反馈信息,并将其转化为一个`Map`对象。接着,我们通过支付宝提供的SDK来验证签名,如果签名验证成功,则说明该回调是真实有效的,可以进行业务逻辑处理。否则,我们需要记录异常日志,并在response中返回`failure`。
需要注意的是,上面的代码中的`AlipayConfig.publicKey`和`AlipayConfig.charset`等参数需要根据你自己的支付宝账号和应用进行相应的配置。
阅读全文