AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage();
aliPayConfigStorage.setPid("合作者id");
aliPayConfigStorage.setAppId("应用id");
aliPayConfigStorage.setPublicKey("支付宝公钥");
aliPayConfigStorage.setKeyPrivate("应用私钥");
aliPayConfigStorage.setNotifyUrl("异步回调地址");
aliPayConfigStorage.setReturnUrl("同步回调地址");
aliPayConfigStorage.setSignType("签名方式");
aliPayConfigStorage.setSeller("收款账号");
aliPayConfigStorage.setInputCharset("utf-8");
//是否为测试账号,沙箱环境
aliPayConfigStorage.setTest(true);
PayService service = new AliPayService(aliPayConfigStorage);
PayOrder payOrder = new PayOrder("订单title", "摘要", new BigDecimal(0.01) , UUID.randomUUID().toString().replace("-", ""));
/*-----------扫码付-------------------*/
payOrder.setTransactionType(AliTransactionType.SWEEPPAY);
//获取扫码付的二维码
BufferedImage image = service.genQrPay(payOrder);
/*-----------/扫码付-------------------*/
@RestController
public class PayController {
private PayService service = null;
@PostConstruct
public void init() {
AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage();
aliPayConfigStorage.setPid("合作者id");
aliPayConfigStorage.setAppId("应用id");
aliPayConfigStorage.setKeyPublic("支付宝公钥");
aliPayConfigStorage.setKeyPrivate("应用私钥");
aliPayConfigStorage.setNotifyUrl("异步回调地址");
aliPayConfigStorage.setReturnUrl("同步回调地址");
aliPayConfigStorage.setSignType("签名方式");
aliPayConfigStorage.setSeller("收款账号");
aliPayConfigStorage.setInputCharset("utf-8");
//是否为测试账号,沙箱环境
aliPayConfigStorage.setTest(true);
// service = new AliPayService(aliPayConfigStorage);
//请求连接池配置
HttpConfigStorage httpConfigStorage = new HttpConfigStorage();
//最大连接数
httpConfigStorage.setMaxTotal(20);
//默认的每个路由的最大连接数
httpConfigStorage.setDefaultMaxPerRoute(10);
service = new AliPayService(aliPayConfigStorage, httpConfigStorage);
//以下拦截器与处理器用于支付与业务隔离简化版回调
//增加支付回调消息拦截器
service.addPayMessageInterceptor(new AliPayMessageInterceptor());
//设置回调消息处理
service.setPayMessageHandler(spring.getBean(AliPayMessageHandler.class));
}
/**
* 跳到支付页面
* 针对实时支付,即时付款
* @return
*/
@RequestMapping(value = "toPay.html", produces = "text/html;charset=UTF-8")
public String toPay() {
PayOrder order = new PayOrder("订单title", "摘要", new BigDecimal(0.01) , UUID.randomUUID().toString().replace("-", ""));
//网页支付
order.setTransactionType(AliTransactionType.PAGE);
//获取支付订单信息
Map orderInfo = service.orderInfo(order);
//组装成html表单信息
return service.buildRequest(orderInfo, MethodType.POST);
}
/**
* 获取二维码图像
* 二维码支付
* @return
*/
@RequestMapping(value = "toQrPay.jpg", produces = "image/jpeg;charset=UTF-8")
public byte[] toWxQrPay( ) throws IOException {
PayOrder order = new PayOrder("订单title", "摘要", new BigDecimal(0.01) , UUID.randomUUID().toString().replace("-", ""));
//扫码付
order.setTransactionType(AliTransactionType.SWEEPPAY);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(service.genQrPay(order), "JPEG", baos);
return baos.toByteArray();
}
/**
* 支付回调地址 方式一
*
* 方式二,{@link #payBack(HttpServletRequest)} 是属于简化方式, 试用与简单的业务场景
*
*
* @param request 请求
*
* @return 返回对应的响应码
* @see #payBack(HttpServletRequest)
*/
@Deprecated
@RequestMapping(value = "payBackBefore.json")
public String payBackBefore(HttpServletRequest request) throws IOException {
//获取支付方返回的对应参数
Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream());
if (null == params) {
return service.getPayOutMessage("fail", "失败").toMessage();
}
//校验
if (service.verify(params)) {
//这里处理业务逻辑
//......业务逻辑处理块........
return service.getPayOutMessage("success", "成功").toMessage();
}
return service.getPayOutMessage("fail", "失败").toMessage();
}
/**
* 支付回调地址
*
* @param request 请求
*
* @return 返回对应的响应码
*
* 业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
*
* 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
*
*/
@RequestMapping(value = "payBack.json")
public String payBack(HttpServletRequest request) throws IOException {
//业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看com.egzosn.pay.common.api.PayService.setPayMessageHandler()
return service.payBack(request.getParameterMap(), request.getInputStream()).toMessage();
}