支付宝单例模式配置 测试接口
This commit is contained in:
parent
5fc6d77853
commit
abe040de40
@ -1,14 +1,26 @@
|
||||
package net.jieyuu.config;
|
||||
|
||||
import com.alipay.api.AlipayClient;
|
||||
import com.alipay.api.DefaultAlipayClient;
|
||||
|
||||
public class AlipayConfig {
|
||||
|
||||
|
||||
/**
|
||||
* 支付宝网关地址 todo
|
||||
*/
|
||||
public static final String PAY_GATEWAY = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
|
||||
|
||||
/**
|
||||
* 支付宝APPID todo
|
||||
*/
|
||||
public static final String APPID = "9021000140690163";
|
||||
/**
|
||||
* 应用私钥
|
||||
* 应用私钥 todo
|
||||
*/
|
||||
public static final String APP_PRI_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXErw8mdLqhNbQqNBAC4mUYXpRb3hbTYCg+W+JJe5R7oid7yGI61h9DhdWPZIKelKIN3km7QX8wa7BygBLx0U8LVmxh1Y14kxluNqykqeZc/250L+Y2fTTWZBoeaQvajZnLgnMm8ym/Z0Ned6vvCp+2OY4xjpAxJQm3RW6EMdQDQ3did8pAX03KU7W3+TZ7t3I8Ml9JeNyh4wyM4KNVH0aKTGYYn0uR6Euh5On1hID86ENRuSg3Xu9cvUkH2px/6RX2HBG43/kKHniz3T2AB+Htx6r+1GMqKjx8f3dxkKYro2EmxBxdSxEJgOqh7JjGP0qqiWwaW8zgicwtmrccI7XAgMBAAECggEAGz/Q3ilsxspRKO/aKEMsfKwccQXnMqjHE8IKITXLR9H7qGkSpmy02FGrWe3fIq6vpkxDOQc1tkKFMAUsin6V+WXAsOnVXgDEgPCX2e/j9STb1iFV/c8Kfvi/uGiAeeDxkSjXsaVEg7ZpFp4t0YriK2EaHZF7vmT2yA/GtHoESWbYw/2bchW/6OUbmugIzR7GVAjvc7/ZmkZVCnG4xDdW2Nu5jHNLPvNTluB5CZUnjjXvdRtChTdktgQD1t8LSQ6I1NHJutw10/N1anwQ99uO+LMxDUnZZvZshP26ooO2Og/kWPEU2oUgdB37DGJ0OfSWrEF67fzCyKuBxKT1TnmikQKBgQD0R09FD6vo+H6gd4WhN/BfUHtoN5Lyz8kkvaDWDzyCC/t+utJ+hNXTSHgz+hA/OQxCk0iIlPnPfBJRhzhxB2yUVwD//nXB3lu3hnfnkXrg3iKKjqkO6SP9yDHi7XghDTdU2P1F1cj+gfH+nasMElesDBSjtfHYLBS0WiHUec6LLwKBgQCeUoBZAa5p5ILHflnFva4eFQdEtr5gAwH8oRqFCTZBQtWdCDUQ9MvciLK1Pe9hBhR8iOCtP15Qgpc867vld/ZF1VeW0TYtxBwfM+u3JdXllYtx6KIt1L83jWhcmHWdv73bCCUPw/m7FTPi3lrUAGRw0+jWYoLVpmEHrd9THHes2QKBgHh7g3mIlT2+8pWq3dn6gTBBvdxVLMFeAtOARAfQVAPAbTbAZnnIgr5HDCJ2v/Su6oEbq7bR47SWeWKE0y3Mf51anD+m/eW1Cn+mbxVkB7tJVLgKTQ/xpbLSPuiyP4HtxtCuhZ0gKJZ++SCgG3FEysEs5DEq2DHK7BtYKT9nJJw5AoGAQzRMDPwcuBBqvxnQK5LvlQ9iDXXw67p7HmyYYD5fzGX9XPH97Jus6YkRKsQGl83H5nEHxiKu+0fjwNVj5ez9GfmMe5WFBPpI4andddnWqOTI02pnZUL4hDE/Sobg7jxU7+POL5oFqLdAVh4CuhkMiaQ6Ir6gQOamK2dP8+ySlEkCgYEA1kBmBFtKFl4V+ZshqcjMWcMCAANWf3jKkBAf9Dvr632vcafQeXTZdnWLQkwuwz/r0aoSKcCIuhxPzKpalSoyItX5DYYNG5BiC/Wwo3ktTvv+2xdnkpgx/+2gvbJLtNsikCDWC6zWO7Q/4/v0LsrzEWNgMXUIepqPffI3NUGtWkU=";
|
||||
/**
|
||||
* 支付宝公钥
|
||||
* 支付宝公钥 todo
|
||||
*/
|
||||
public static final String ALIPAY_PUB_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj4BMyZx16Xpfd00w25ub4ZcWzRiWCx1v6EScmq2ezu/W95FO70r6EawFGVh2nE+XqZFlf53bIBhwtxUCV2xJEy9qHuooVvqByoMRdSs4y1BlUR99WfYqc+67i41rp8hDDZ8s31/9gXbiVfsSFe3YqHq3WzCuYbqwpwt0vEFbX829DZP3BNJ/DTbx2mtFYEJYFRi8nKkHFjivjjMw9nbAQsFQT6Q7GpPR6cqUGX1YYzvsdo1U+XF3FG4SoPYZKh6KVdRJQ/RKzYnNgPN7d6UydUarFRCnyLQ9qa/gFTX373pM+IlD9WhW15ixGq/USgcOBLZ+1Ujc90OLym0mulCGRQIDAQAB";
|
||||
|
||||
@ -22,7 +34,34 @@ public class AlipayConfig {
|
||||
*/
|
||||
public static final String CHARSET = "UTF-8";
|
||||
|
||||
|
||||
/**
|
||||
* 返回参数格式
|
||||
*/
|
||||
public static final String FORMAT = "json";
|
||||
|
||||
/**
|
||||
* 构造函数私有
|
||||
*/
|
||||
private AlipayConfig() {
|
||||
|
||||
}
|
||||
|
||||
private volatile static AlipayClient instance = null;
|
||||
|
||||
/**
|
||||
* 单例模式获取,双重锁校验
|
||||
*/
|
||||
public static AlipayClient getInstance() {
|
||||
|
||||
if (instance == null) {
|
||||
synchronized (AlipayConfig.class) { // 加锁
|
||||
if (instance == null) {
|
||||
instance = new DefaultAlipayClient(PAY_GATEWAY, APPID, APP_PRI_KEY, FORMAT, CHARSET, ALIPAY_PUB_KEY, SIGN_TYPE);
|
||||
}
|
||||
}
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
}
|
@ -18,7 +18,7 @@ public class InterceptorConfig implements WebMvcConfigurer {
|
||||
//拦截的路径
|
||||
.addPathPatterns("/api/order/*/**")
|
||||
//放行的路径
|
||||
.excludePathPatterns("api/callback/*/**", "/api/order/*/query_state");
|
||||
.excludePathPatterns("api/callback/*/**", "/api/order/*/query_state", "/api/order/*/test_pay");
|
||||
|
||||
WebMvcConfigurer.super.addInterceptors(registry);
|
||||
}
|
||||
|
@ -1,10 +1,15 @@
|
||||
package net.jieyuu.controller;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alipay.api.request.AlipayTradeAppPayRequest;
|
||||
import com.alipay.api.response.AlipayTradeAppPayResponse;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.jieyuu.config.AlipayConfig;
|
||||
import net.jieyuu.config.PayUrlConfig;
|
||||
import net.jieyuu.enums.BizCodeEnum;
|
||||
import net.jieyuu.enums.ClientType;
|
||||
import net.jieyuu.enums.ProductOrderPayTypeEnum;
|
||||
@ -17,6 +22,9 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@ -35,6 +43,9 @@ public class ProductOrderController {
|
||||
@Autowired
|
||||
private ProductOrderService orderService;
|
||||
|
||||
@Autowired
|
||||
private PayUrlConfig payUrlConfig;
|
||||
|
||||
@ApiOperation("提交订单")
|
||||
@PostMapping("confirm")
|
||||
public void confirmOrder(@ApiParam("订单对象") @RequestBody ConfirmOrderRequest confirmOrderRequest, HttpServletResponse response) {
|
||||
@ -88,5 +99,44 @@ public class ProductOrderController {
|
||||
return StringUtils.isBlank(state) ? JsonData.buildResult(BizCodeEnum.ORDER_CONFIRM_NOT_EXIST) : JsonData.buildSuccess(state);
|
||||
}
|
||||
|
||||
@GetMapping("/test_pay")
|
||||
public void test_Alipay(HttpServletResponse response) throws Exception {
|
||||
HashMap<String, String> content = new HashMap<>();
|
||||
//商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复
|
||||
String no = UUID.randomUUID().toString();
|
||||
log.info("订单号:{}", no);
|
||||
content.put("out_trade_no", no);
|
||||
content.put("product_code", "FAST_INSTANT_TRADE_PAY");
|
||||
//订单总金额,单位为元,精确到小数点后两位
|
||||
content.put("total_amount", String.valueOf("111.99"));
|
||||
//商品标题/交易标题/订单标题/订单关键字等。 注意:不可使用特殊字符,如 /,=,& 等。
|
||||
content.put("subject", "杯子");
|
||||
//商品描述,可空
|
||||
content.put("body", "好的杯子");
|
||||
|
||||
// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
|
||||
content.put("timeout_express", "5m");
|
||||
|
||||
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
|
||||
request.setBizContent(JSON.toJSONString(content));
|
||||
request.setNotifyUrl(payUrlConfig.getAlipayCallbackUrl());
|
||||
request.setReturnUrl(payUrlConfig.getAlipaySuccessReturnUrl());
|
||||
|
||||
AlipayTradeAppPayResponse alipayTradeAppPayResponse = AlipayConfig.getInstance().pageExecute(request);
|
||||
|
||||
|
||||
if (alipayTradeAppPayResponse.isSuccess()) {
|
||||
System.out.println("调用成功");
|
||||
String form = alipayTradeAppPayResponse.getBody();
|
||||
response.setContentType("text/html;charset=utf-8");
|
||||
response.getWriter().write(form);
|
||||
response.getWriter().flush();
|
||||
response.getWriter().close();
|
||||
} else {
|
||||
System.out.println("调用失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user