mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-13 05:12:07 +08:00
新增支付模块:测试阿里云沙箱回调
This commit is contained in:
@@ -224,7 +224,10 @@
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-biz-pay</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
@@ -333,6 +336,10 @@
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-mq</artifactId>
|
||||
</include>
|
||||
<include>
|
||||
<groupId>com.cf.imes</groupId>
|
||||
<artifactId>cf-spring-boot-starter-biz-pay</artifactId>
|
||||
</include>
|
||||
</includes>
|
||||
</configuration>
|
||||
<executions>
|
||||
|
||||
+114
@@ -0,0 +1,114 @@
|
||||
package com.cf.imes.module.system.controller.admin.pay;
|
||||
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.lang.generator.SnowflakeGenerator;
|
||||
import cn.hutool.http.Method;
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import com.alipay.api.AlipayConfig;
|
||||
import com.alipay.api.DefaultAlipayClient;
|
||||
import com.alipay.api.domain.AlipayTradePagePayModel;
|
||||
import com.alipay.api.request.AlipayTradePagePayRequest;
|
||||
import com.alipay.api.response.AlipayTradePagePayResponse;
|
||||
import com.cf.imes.framework.common.pojo.CommonResult;
|
||||
import com.cf.imes.framework.pay.core.enums.order.PayOrderDisplayModeEnum;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.security.PermitAll;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import static cn.hutool.core.date.DatePattern.NORM_DATETIME_FORMATTER;
|
||||
import static com.cf.imes.framework.common.pojo.CommonResult.success;
|
||||
|
||||
/**
|
||||
* @author Gqr
|
||||
* @since 2025/4/8 16:09
|
||||
*/
|
||||
//@Tag(name = "管理后台 - 应用注册信息")
|
||||
@RestController
|
||||
@RequestMapping("/system/pay")
|
||||
@Validated
|
||||
@Slf4j
|
||||
public class PayController {
|
||||
|
||||
// @Resource
|
||||
// private SnowflakeIdWorker3rd snowflakeIdWorker3rd;
|
||||
|
||||
@GetMapping("")
|
||||
// @Operation(summary = "获得应用注册")
|
||||
// @Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
// @PreAuthorize("@ss.hasPermission('system:application:query')")
|
||||
@PermitAll
|
||||
public CommonResult<String> getApplication() throws AlipayApiException {
|
||||
// 1.1 构建 AlipayTradePagePayModel 请求
|
||||
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
|
||||
// ① 通用的参数
|
||||
SnowflakeGenerator snowflakeGenerator = new SnowflakeGenerator();
|
||||
String outTradeNo = snowflakeGenerator.next().toString();
|
||||
model.setOutTradeNo(outTradeNo);
|
||||
model.setSubject("产品名称");
|
||||
model.setBody("描述");
|
||||
model.setTotalAmount("0.11");
|
||||
model.setTimeExpire(LocalDateTimeUtil.format(LocalDateTime.now().plus(100, ChronoUnit.SECONDS), NORM_DATETIME_FORMATTER));
|
||||
model.setProductCode("FAST_INSTANT_TRADE_PAY"); // 销售产品码. 目前 PC 支付场景下仅支持 FAST_INSTANT_TRADE_PAY
|
||||
// ② 个性化的参数
|
||||
// 如果想弄更多个性化的参数,可参考 https://www.pingxx.com/api/支付渠道 extra 参数说明.html 的 alipay_pc_direct 部分进行拓展
|
||||
model.setQrPayMode("1"); // 跳转模式 - 订单码,效果参见:https://help.pingxx.com/article/1137360/
|
||||
// ③ 支付宝 PC 支付有两种展示模式:FORM、URL
|
||||
String displayMode = PayOrderDisplayModeEnum.URL.getMode();
|
||||
|
||||
// 1.2 构建 AlipayTradePagePayRequest 请求
|
||||
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
|
||||
request.setBizModel(model);
|
||||
request.setNotifyUrl("https://chenfeng.tech:3345/admin-api/system/pay/order/" + outTradeNo);
|
||||
request.setReturnUrl("");
|
||||
|
||||
// 2.1 执行请求
|
||||
AlipayTradePagePayResponse response;
|
||||
AlipayConfig alipayConfig = new AlipayConfig();
|
||||
alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");
|
||||
alipayConfig.setFormat("json");
|
||||
alipayConfig.setCharset("utf-8");
|
||||
alipayConfig.setSignType("RSA2");
|
||||
alipayConfig.setPrivateKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCzOXNjRYBHpsJ2WGm43QB4ktKY6m24xf0Mepn5iHPyHtvbBPQXa3lyG7Nztxwk+oL5jbxEj+QB6nNVL2anOJT9fzr96qEwNc9a+7RnOeGDVfWN/FRTEYw0oExzqLoiO1rZlEWUpFpFnhQkEcBco/SJEJAE9WOe9N8y2O5B4EU1ik5667u8fzyC+XukTj/NhIhqdQdN1Vr953rFI8eh3ToDYcnvLjq2yt6zLLbhSxhg6mvw7dapHTyPitqkm/OhgfcNjlfSuTAIj7KtgluFA2eZzWqwbJmeKCqv///6YQl8/sFpHDmVY39WN0hQwoEFTo/dcWChsrN1cH1cbooIWdQ7AgMBAAECggEAO1cjSFQjtBWXv11oq8eot0NNrUm5SHttXGtffcpbMWhcPPk35GU2UbywPvj6vZegNAZktoK56JR62VKXd3h5hDFTE+1Sr0axwBsk0STN8RFN+1P3i4V82ZPVnFnaPylN3EqGez+rj+9WFdc2zLWQaq1sMegZsvC60fgXcwJRh/cT7FKLJe3qxb2nJJB+d+6yEHKMgaHSICv3b7SpGuhJaq8O62iY1oDj/u9EKgLtU28kiAunvXHnby1F6T+Fq26wCn3Q0GnRKWAhGXElXGjAY8hzcR0RBGLuROJbW3oa1wXX1DOMnRiAaHaFXsj7TTkGc3sCyGOLb9RgVaR9jQ9fwQKBgQDmQLQRACspFJeL640mO7C42P2zeu9hcHPypOudkMZIXobvvwZkP7w6rIv9XbG8xah7P5kNbaM1KP3ke5pNHnrCiphEv8rbmHlfoSaNKSS/omLAAa/Xm0OqMUOgpHe3PFITsiE2SARIqZaQoaR8+UUkJsRnIyLuf43SoOG1FC9F2wKBgQDHQ/4He/V/IxuTac7O+qMM9lFu+uyhsc+bMecyylh0AoADmscg4l98Kcs+IS5QB1HYEYo1fNElJ1Rs8iREHm+iK3h4xKIrG6KhObTVnqfYlCz2MYiHDW252KOqPdyxpeEuMSpoIVdcsvDBb+yYCTOT/DfX16eRSyl2pSv7SkFpIQKBgQDih1PgyfaskvrKCPO0YtNp+OoZE2DBz53zYjgAq/e4KW++HYUPSflJDIspuW1tGFW69AYDRRNl8K9hhA15w/vou+w07zCIPYlkASrphEoIU52t47r5d2Lp5U/wkv7JAoqJoB22xsGYL2jXYIBxB9jzSUS/Z70tQcbpK6kDuxkLMwKBgGgEyz/W6qFyjzuVmTqcxa7Hilz3qb0CmBA4rarqy9/LSk4XZul4okWrf4gwQ//MwmGbTl17iaXucPjqMhpJFRc/wASzCMCeDXhCKm71AkNhnlLqKo3taaEBQPZmkqU9pV26lpuDBBrE4j7oEUaQTxdqKzCGR9flt4BS2rGz4o9hAoGAYPufk/GigoOzUhv8KS2Vm7syIEr0jLOM87AmoO5DQrKGLoy80Nvjr5XuAhTwB0UnFUuchyFimmew3Bbi3iTCjAUmC06w4KWcTbY2Lu4YQpZU7gkFViuAWLIuJgN2xmWaCoaiphbVqB/+Wew4gFVgGXF39AUJS4fiXAIj4QiWO/I=");
|
||||
alipayConfig.setAlipayPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtNsXwyaUwihNYoDLXZbET+jroEDUk1DfarrbcMPZy/uIW423KSDwTQi9SPuR4EgwB4sHy/UFhLe95gk0LnhZeZ0ddTSxsZ/Ps5eHlwxV0CR1Xw5K+yMNKyXkSuKDx5pbIv+xUveWRlOqte9fZDOKfXMplEjKJS/CeosXyKyzKiO8bXuYSBv4+lt6RkgFdKjEPGE5AqtvqyGDN86CHe2zf0lJUWLUwb4nlWpoW/6SihhG9+MKUrnBGPI132lZWkmZz3MriKb6yGo4/7Ospm+oWZYGj7vzI+WX25mFONFzmLx8q8h3PnZfODr7uXenRbaVraj7LRAneVSKKi3sAzdonwIDAQAB");
|
||||
alipayConfig.setAppId("9021000142647599");
|
||||
|
||||
DefaultAlipayClient client = new DefaultAlipayClient(alipayConfig);
|
||||
if (Objects.equals(displayMode, PayOrderDisplayModeEnum.FORM.getMode())) {
|
||||
response = client.pageExecute(request, Method.POST.name()); // 需要特殊使用 POST 请求
|
||||
} else {
|
||||
response = client.pageExecute(request, Method.GET.name());
|
||||
}
|
||||
System.out.println(1);
|
||||
// 2.2 处理结果
|
||||
if (!response.isSuccess()) {
|
||||
// return buildClosedPayOrderRespDTO(reqDTO, response);
|
||||
}
|
||||
return success(response.getBody());
|
||||
// PayOrderRespDTO.waitingOf(displayMode, response.getBody(),
|
||||
// reqDTO.getOutTradeNo(), response);
|
||||
// return success(true);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping(value = "/order/{channelId}")
|
||||
// @Operation(summary = "支付渠道的统一【支付】回调")
|
||||
@PermitAll
|
||||
public String notifyOrder(@PathVariable("channelId") Long channelId,
|
||||
@RequestParam(required = false) Map<String, String> params,
|
||||
@RequestBody(required = false) String body) {
|
||||
log.info("[notifyOrder][channelId({}) 回调数据({}/{})]", channelId, params, body);
|
||||
return "success";
|
||||
}
|
||||
}
|
||||
@@ -171,6 +171,7 @@ chenfeng:
|
||||
- /admin-api/system/auth/login/sms/check
|
||||
- /admin-api/system/token/check
|
||||
- /rpc-api/**
|
||||
- /admin-api/system/pay/**
|
||||
#- /admin-api/system/**
|
||||
#- /rpc-api/system/organ/valid # 防止递归。避免调用 /rpc-api/system/organ/valid 接口时,又去触发 /rpc-api/system/organ/valid 去校验
|
||||
#- /rpc-api/system/organ/id-list # 获得组织列表的时候,无需传递组织编号
|
||||
|
||||
Reference in New Issue
Block a user