-
Notifications
You must be signed in to change notification settings - Fork 919
支付宝_快速入门
egan edited this page Dec 9, 2019
·
6 revisions
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);
}
/**
* 跳到支付页面
* 针对实时支付,即时付款
* @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();
}
/**
* 支付回调地址
* @param request
* @return
*/
@RequestMapping(value = "payBack.json")
public String payBack(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();
}