集成 封装处理

This commit is contained in:
gong
2026-01-14 18:43:20 +08:00
parent c48c0f6d7d
commit c4cb2989b3
4 changed files with 96 additions and 89 deletions

View File

@@ -1,8 +1,10 @@
package com.czg; package com.czg;
import com.czg.dto.req.PayParamsDto; import com.czg.constants.SystemConstants;
import com.czg.dto.req.RefundParamsDto; import com.czg.dto.req.RefundParamsDto;
import com.czg.exception.CzgException; import com.czg.exception.CzgException;
import com.czg.pay.CzgPayBaseReq;
import com.czg.pay.NativeMerchantDTO;
import com.czg.third.alipay.AlipayIsvPayManager; import com.czg.third.alipay.AlipayIsvPayManager;
import com.czg.third.wechat.WechatPayManager; import com.czg.third.wechat.WechatPayManager;
@@ -20,13 +22,11 @@ public class PayManager {
* @param paramsDto 参数 * @param paramsDto 参数
* @return 结果 * @return 结果
*/ */
public static Map<String, Object> jsapiPay(PayParamsDto paramsDto) { public static Map<String, Object> jsapiPay(CzgPayBaseReq<?> paramsDto, NativeMerchantDTO merchantDTO) {
paramsDto.verifyParams(); if (SystemConstants.PayType.WECHAT.equals(paramsDto.getPayType())) {
return WechatPayManager.jsapiPay(null, paramsDto, merchantDTO);
if (PayCst.Platform.WECHAT.equals(paramsDto.getPlatform())) { } else if (SystemConstants.PayType.ALIPAY.equals(paramsDto.getPayType())) {
return WechatPayManager.jsapiPay(null, paramsDto); return AlipayIsvPayManager.jsapiPay(null, paramsDto, merchantDTO);
} else if (PayCst.Platform.ALIPAY.equals(paramsDto.getPlatform())) {
return AlipayIsvPayManager.jsapiPay(null, paramsDto);
} else { } else {
throw new CzgException("不支持的支付平台"); throw new CzgException("不支持的支付平台");
} }
@@ -38,13 +38,11 @@ public class PayManager {
* @param paramsDto 参数 * @param paramsDto 参数
* @return 结果 * @return 结果
*/ */
public static Map<String, Object> barPay(PayParamsDto paramsDto) { public static Map<String, Object> barPay(CzgPayBaseReq<String> paramsDto, NativeMerchantDTO merchantDTO) {
paramsDto.verifyParams(); if (SystemConstants.PayType.WECHAT.equals(paramsDto.getPayType())) {
return WechatPayManager.barPay(null, paramsDto, merchantDTO);
if (PayCst.Platform.WECHAT.equals(paramsDto.getPlatform())) { } else if (SystemConstants.PayType.ALIPAY.equals(paramsDto.getPayType())) {
return WechatPayManager.barPay(null, paramsDto); return AlipayIsvPayManager.barPay(null, paramsDto, merchantDTO);
} else if (PayCst.Platform.ALIPAY.equals(paramsDto.getPlatform())) {
return AlipayIsvPayManager.barPay(null, paramsDto);
} else { } else {
throw new CzgException("不支持的支付平台"); throw new CzgException("不支持的支付平台");
} }
@@ -54,9 +52,9 @@ public class PayManager {
* 查询订单状态 * 查询订单状态
*/ */
public static Map<String, Object> queryOrderStatus(String platform, String orderNo, String subMerchantId) { public static Map<String, Object> queryOrderStatus(String platform, String orderNo, String subMerchantId) {
if (PayCst.Platform.WECHAT.equals(platform)) { if (SystemConstants.PayType.WECHAT.equals(platform)) {
return WechatPayManager.queryOrder(null, orderNo, subMerchantId); return WechatPayManager.queryOrder(null, orderNo, subMerchantId);
} else if (PayCst.Platform.ALIPAY.equals(platform)) { } else if (SystemConstants.PayType.ALIPAY.equals(platform)) {
return AlipayIsvPayManager.queryOrder(null, orderNo, subMerchantId); return AlipayIsvPayManager.queryOrder(null, orderNo, subMerchantId);
} else { } else {
throw new CzgException("不支持的支付平台"); throw new CzgException("不支持的支付平台");
@@ -67,9 +65,9 @@ public class PayManager {
* 退款 * 退款
*/ */
public static Map<String, Object> refund(String platform, RefundParamsDto paramsDto) { public static Map<String, Object> refund(String platform, RefundParamsDto paramsDto) {
if (PayCst.Platform.WECHAT.equals(platform)) { if (SystemConstants.PayType.WECHAT.equals(platform)) {
return WechatPayManager.refundOrder(null, paramsDto); return WechatPayManager.refundOrder(null, paramsDto);
} else if (PayCst.Platform.ALIPAY.equals(platform)) { } else if (SystemConstants.PayType.ALIPAY.equals(platform)) {
return AlipayIsvPayManager.refundOrder(null, paramsDto); return AlipayIsvPayManager.refundOrder(null, paramsDto);
} else { } else {
throw new CzgException("不支持的支付平台"); throw new CzgException("不支持的支付平台");
@@ -77,27 +75,5 @@ public class PayManager {
} }
public static void main(String[] args) { public static void main(String[] args) {
// jsapiPay(new PayParamsDto()
// .setPlatform(PayCst.Platform.ALIPAY)
// .setAppId("2021004145625815")
// .setOpenId("123123123")
// .setOrderNo("1111231231213")
// .setTitle("1213")
// .setMerchantId("123312321")
// .setBody("1213")
// .setAmount(1000L)
// .setPayParams("{\"app_auth_token\": \"ssss\"}")
// .setNotifyUrl("https://www.baidu.com"));
jsapiPay(new PayParamsDto()
.setPlatform(PayCst.Platform.WECHAT)
.setAppId("wxd88fffa983758a30")
.setOpenId("or1l86yipGvwyfPhrKIAcQuSfAV8")
.setOrderNo("1111231231213")
.setTitle("1213")
.setMerchantId("1738216504")
.setBody("1213")
.setAmount(1000L)
.setPayParams("{\"app_auth_token\": \"ssss\"}")
.setNotifyUrl("https://www.baidu.com"));
} }
} }

View File

@@ -5,12 +5,14 @@ import com.alipay.v3.ApiException;
import com.alipay.v3.api.AlipayTradeApi; import com.alipay.v3.api.AlipayTradeApi;
import com.alipay.v3.model.AlipayTradeCreateModel; import com.alipay.v3.model.AlipayTradeCreateModel;
import com.alipay.v3.model.AlipayTradeCreateResponseModel; import com.alipay.v3.model.AlipayTradeCreateResponseModel;
import com.alipay.v3.model.AlipayTradePayModel;
import com.alipay.v3.model.ExtendParams; import com.alipay.v3.model.ExtendParams;
import com.alipay.v3.util.model.CustomizedParams; import com.alipay.v3.util.model.CustomizedParams;
import com.czg.PayCst; import com.czg.PayCst;
import com.czg.dto.req.PayParamsDto;
import com.czg.dto.req.RefundParamsDto; import com.czg.dto.req.RefundParamsDto;
import com.czg.exception.CzgException; import com.czg.exception.CzgException;
import com.czg.pay.CzgPayBaseReq;
import com.czg.pay.NativeMerchantDTO;
import com.czg.third.alipay.dto.config.AlipayConfigDto; import com.czg.third.alipay.dto.config.AlipayConfigDto;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -31,23 +33,23 @@ public class AlipayIsvPayManager {
* @param configDto 配置 * @param configDto 配置
* @param paramsDto 参数 * @param paramsDto 参数
*/ */
public static Map<String, Object> jsapiPay(AlipayConfigDto configDto, PayParamsDto paramsDto) { public static Map<String, Object> jsapiPay(AlipayConfigDto configDto, CzgPayBaseReq<?> paramsDto, NativeMerchantDTO merchantDTO) {
try { try {
AlipayClient.setApiClient(configDto); AlipayClient.setApiClient(configDto);
AlipayTradeApi api = new AlipayTradeApi(); AlipayTradeApi api = new AlipayTradeApi();
AlipayTradeCreateModel model = new AlipayTradeCreateModel(); AlipayTradeCreateModel model = new AlipayTradeCreateModel();
model.setOutTradeNo(paramsDto.getOrderNo()); model.setOutTradeNo(paramsDto.getMchOrderNo());
model.setProductCode("JSAPI_PAY"); model.setProductCode("JSAPI_PAY");
model.setOpAppId(paramsDto.getAppId()); model.setOpAppId(merchantDTO.getAlipayMerchantId());
model.setOpBuyerOpenId(paramsDto.getOpenId()); model.setOpBuyerOpenId(paramsDto.getUserId());
model.setTotalAmount(getYuanAmountByFen(paramsDto.getAmount())); model.setTotalAmount(getYuanAmountByFen(paramsDto.getAmount()));
model.setSubject(paramsDto.getTitle()); model.setSubject(paramsDto.getSubject());
model.setBody(paramsDto.getBody()); model.setBody(paramsDto.getBody());
model.setNotifyUrl(paramsDto.getNotifyUrl() + "/" + PayCst.Platform.ALIPAY); model.setNotifyUrl(paramsDto.getNotifyUrl() + "/" + PayCst.Platform.ALIPAY);
model.setExtendParams(new ExtendParams()); model.setExtendParams(new ExtendParams());
CustomizedParams customizedParams = new CustomizedParams(); CustomizedParams customizedParams = new CustomizedParams();
customizedParams.setAppAuthToken(paramsDto.getAlipayAuthInfo().getAppAuthToken()); customizedParams.setAppAuthToken(merchantDTO.getAlipayAuthInfo().getAppAuthToken());
AlipayTradeCreateResponseModel responseModel = api.create(model, customizedParams); AlipayTradeCreateResponseModel responseModel = api.create(model, customizedParams);
log.info("支付宝 jsapi 支付结果: {}", responseModel); log.info("支付宝 jsapi 支付结果: {}", responseModel);
@@ -69,10 +71,26 @@ public class AlipayIsvPayManager {
* @param configDto 配置 * @param configDto 配置
* @param paramsDto 参数 * @param paramsDto 参数
*/ */
public static Map<String, Object> barPay(AlipayConfigDto configDto, PayParamsDto paramsDto) { public static Map<String, Object> barPay(AlipayConfigDto configDto, CzgPayBaseReq<String> paramsDto, NativeMerchantDTO merchantDTO) {
try { try {
AlipayClient.setApiClient(configDto); AlipayClient.setApiClient(configDto);
// 构造请求参数以调用接口
AlipayTradeApi api = new AlipayTradeApi();
AlipayTradePayModel data = new AlipayTradePayModel();
data.setOutTradeNo(paramsDto.getMchOrderNo());
data.setTotalAmount(getYuanAmountByFen(paramsDto.getAmount()));
data.setSubject(paramsDto.getSubject());
// 设置支付授权码
data.setAuthCode(merchantDTO.getAlipayAuthInfo().getAppAuthToken());
// 设置支付场景
data.setScene("bar_code");
// 设置产品码
data.setProductCode("FACE_TO_FACE_PAYMENT");
data.setAuthCode(paramsDto.getData());
// AlipayTradeCreateResponseModel responseModel = api.create(data);
return new JSONObject(); return new JSONObject();
// } catch (ApiException e) { // } catch (ApiException e) {
// String body = e.getResponseBody(); // String body = e.getResponseBody();

View File

@@ -5,9 +5,10 @@ import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.czg.PayCst; import com.czg.PayCst;
import com.czg.dto.req.PayParamsDto;
import com.czg.dto.req.RefundParamsDto; import com.czg.dto.req.RefundParamsDto;
import com.czg.exception.CzgException; import com.czg.exception.CzgException;
import com.czg.pay.CzgPayBaseReq;
import com.czg.pay.NativeMerchantDTO;
import com.czg.third.wechat.dto.config.WechatPayConfigDto; import com.czg.third.wechat.dto.config.WechatPayConfigDto;
import com.wechat.pay.java.core.Config; import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.cipher.Signer; import com.wechat.pay.java.core.cipher.Signer;
@@ -45,31 +46,31 @@ public class WechatPayManager {
* @param configDto 配置 * @param configDto 配置
* @param paramsDto 参数 * @param paramsDto 参数
*/ */
public static Map<String, Object> jsapiPay(WechatPayConfigDto configDto, PayParamsDto paramsDto) { public static Map<String, Object> jsapiPay(WechatPayConfigDto configDto, CzgPayBaseReq<?> paramsDto, NativeMerchantDTO merchantDTO) {
if (configDto == null) { if (configDto == null) {
configDto = WechatPayConfigDto.getDefaultConfig(); configDto = WechatPayConfigDto.getDefaultConfig();
} }
try { try {
JSONObject reqData = new JSONObject(); JSONObject reqData = new JSONObject();
reqData.put("sp_appid", paramsDto.getAppId()); reqData.put("sp_appid", paramsDto.getSubAppid());
reqData.put("sp_mchid", configDto.getMerchantId()); reqData.put("sp_mchid", configDto.getMerchantId());
reqData.put("sub_mchid", paramsDto.getMerchantId()); reqData.put("sub_mchid", merchantDTO.getWechatMerchantId());
reqData.put("description", paramsDto.getTitle()); reqData.put("description", paramsDto.getSubject());
reqData.put("out_trade_no", paramsDto.getOrderNo()); reqData.put("out_trade_no", paramsDto.getMchOrderNo());
reqData.put("notify_url", paramsDto.getNotifyUrl() + "/" + PayCst.Platform.WECHAT); reqData.put("notify_url", paramsDto.getNotifyUrl() + "/" + PayCst.Platform.WECHAT);
reqData.put("attach", paramsDto.getExtData()); reqData.put("attach", paramsDto.getExtParam());
JSONObject amount = new JSONObject(); JSONObject amount = new JSONObject();
amount.put("total", paramsDto.getAmount()); amount.put("total", paramsDto.getAmount());
reqData.put("amount", amount); reqData.put("amount", amount);
JSONObject payer = new JSONObject(); JSONObject payer = new JSONObject();
payer.put("sp_openid", paramsDto.getOpenId()); payer.put("sp_openid", paramsDto.getUserId());
reqData.put("payer", payer); reqData.put("payer", payer);
String string = WechatReqUtils.postReq(configDto, "/v3/pay/partner/transactions/jsapi", reqData.toJSONString()); String string = WechatReqUtils.postReq(configDto, "/v3/pay/partner/transactions/jsapi", reqData.toJSONString());
log.info("微信支付请求结果: orderNo = {}, res = {}", paramsDto.getOrderNo(), string); log.info("微信支付请求结果: orderNo = {}, res = {}", paramsDto.getMchOrderNo(), string);
JSONObject object = JSONObject.parseObject(string); JSONObject object = JSONObject.parseObject(string);
@@ -77,23 +78,23 @@ public class WechatPayManager {
String nonceStr = NonceUtil.createNonce(32); String nonceStr = NonceUtil.createNonce(32);
String packageVal = "prepay_id=" + object.getString("prepay_id"); String packageVal = "prepay_id=" + object.getString("prepay_id");
String message = String message =
paramsDto.getAppId() + "\n" + timestamp + "\n" + nonceStr + "\n" + packageVal + "\n"; paramsDto.getSubAppid() + "\n" + timestamp + "\n" + nonceStr + "\n" + packageVal + "\n";
Config config = WechatConfig.getRsaConfig(configDto); Config config = WechatConfig.getRsaConfig(configDto);
Signer signer = config.createSigner(); Signer signer = config.createSigner();
String sign = signer.sign(message).getSign(); String sign = signer.sign(message).getSign();
JSONObject res = new JSONObject(); JSONObject res = new JSONObject();
res.put("appId", paramsDto.getAppId()); res.put("appId", paramsDto.getSubAppid());
res.put("timeStamp", String.valueOf(timestamp)); res.put("timeStamp", String.valueOf(timestamp));
res.put("nonceStr", nonceStr); res.put("nonceStr", nonceStr);
res.put("package", packageVal); res.put("package", packageVal);
res.put("signType", "RSA"); res.put("signType", "RSA");
res.put("paySign", sign); res.put("paySign", sign);
log.info("微信支付签名结果: orderNo = {}, res = {}", paramsDto.getOrderNo(), res); log.info("微信支付签名结果: orderNo = {}, res = {}", paramsDto.getMchOrderNo(), res);
return res; return res;
} catch (Exception e) { } catch (Exception e) {
log.error("微信支付异常: orderNo = {}, e = {}", paramsDto.getOrderNo(), e.getMessage()); log.error("微信支付异常: orderNo = {}, e = {}", paramsDto.getMchOrderNo(), e.getMessage());
throw new CzgException("微信支付异常"); throw new CzgException("微信支付异常");
} }
} }
@@ -105,7 +106,7 @@ public class WechatPayManager {
* @param configDto 配置 * @param configDto 配置
* @param paramsDto 参数 * @param paramsDto 参数
*/ */
public static Map<String, Object> barPay(WechatPayConfigDto configDto, PayParamsDto paramsDto) { public static Map<String, Object> barPay(WechatPayConfigDto configDto, CzgPayBaseReq<String> paramsDto, NativeMerchantDTO merchantDTO) {
try { try {
if (configDto == null) { if (configDto == null) {
configDto = WechatPayConfigDto.getDefaultConfig(); configDto = WechatPayConfigDto.getDefaultConfig();
@@ -119,28 +120,28 @@ public class WechatPayManager {
// 添加根元素 // 添加根元素
Element xml = document.addElement("xml"); Element xml = document.addElement("xml");
addElementIfNotEmpty(xml, "appid", paramsDto.getAppId()); addElementIfNotEmpty(xml, "appid", paramsDto.getSubAppid());
payMap.put("appid", paramsDto.getAppId()); payMap.put("appid", paramsDto.getSubAppid());
addElementIfNotEmpty(xml, "mch_id", configDto.getMerchantId()); addElementIfNotEmpty(xml, "mch_id", configDto.getMerchantId());
payMap.put("mch_id", configDto.getMerchantId()); payMap.put("mch_id", configDto.getMerchantId());
addElementIfNotEmpty(xml, "sub_mch_id", paramsDto.getMerchantId()); addElementIfNotEmpty(xml, "sub_mch_id", merchantDTO.getWechatMerchantId());
payMap.put("sub_mch_id", paramsDto.getMerchantId()); payMap.put("sub_mch_id", merchantDTO.getWechatMerchantId());
addElementIfNotEmpty(xml, "nonce_str", nonceStr); addElementIfNotEmpty(xml, "nonce_str", nonceStr);
payMap.put("nonce_str", nonceStr); payMap.put("nonce_str", nonceStr);
addElementIfNotEmpty(xml, "body", paramsDto.getTitle()); addElementIfNotEmpty(xml, "body", paramsDto.getSubject());
payMap.put("body", paramsDto.getTitle()); payMap.put("body", paramsDto.getSubject());
addElementIfNotEmpty(xml, "out_trade_no", paramsDto.getOrderNo()); addElementIfNotEmpty(xml, "out_trade_no", paramsDto.getMchOrderNo());
payMap.put("out_trade_no", paramsDto.getOrderNo()); payMap.put("out_trade_no", paramsDto.getMchOrderNo());
addElementIfNotEmpty(xml, "total_fee", paramsDto.getAmount()); addElementIfNotEmpty(xml, "total_fee", paramsDto.getAmount());
payMap.put("total_fee", paramsDto.getAmount()); payMap.put("total_fee", paramsDto.getAmount());
addElementIfNotEmpty(xml, "spbill_create_ip", paramsDto.getClientIp()); addElementIfNotEmpty(xml, "spbill_create_ip", paramsDto.getClientIp());
payMap.put("spbill_create_ip", paramsDto.getClientIp()); payMap.put("spbill_create_ip", paramsDto.getClientIp());
addElementIfNotEmpty(xml, "auth_code", paramsDto.getBarCode()); addElementIfNotEmpty(xml, "auth_code", paramsDto.getData());
payMap.put("auth_code", paramsDto.getBarCode()); payMap.put("auth_code", paramsDto.getData());
if (StrUtil.isNotBlank(paramsDto.getExtData())) { if (StrUtil.isNotBlank(paramsDto.getExtParam())) {
addElementIfNotEmpty(xml, "attach", paramsDto.getExtData()); addElementIfNotEmpty(xml, "attach", paramsDto.getExtParam());
payMap.put("attach", paramsDto.getExtData()); payMap.put("attach", paramsDto.getExtParam());
} }
String sign = signBarPayParam(configDto, payMap); String sign = signBarPayParam(configDto, payMap);
@@ -154,10 +155,10 @@ public class WechatPayManager {
log.info("微信条码支付参数:{}", xmlStr); log.info("微信条码支付参数:{}", xmlStr);
String post = HttpUtil.post(BAR_PAY_URL, xmlStr); String post = HttpUtil.post(BAR_PAY_URL, xmlStr);
log.info("微信条码支付请求结果: orderNo = {}, res = {}", paramsDto.getOrderNo(), post); log.info("微信条码支付请求结果: orderNo = {}, res = {}", paramsDto.getMchOrderNo(), post);
JSONObject res = new JSONObject(); JSONObject res = new JSONObject();
res.put("orderNo", paramsDto.getOrderNo()); res.put("orderNo", paramsDto.getMchOrderNo());
SAXReader saxReader = new SAXReader(); SAXReader saxReader = new SAXReader();
Document read = saxReader.read(stringToInputStream(post)); Document read = saxReader.read(stringToInputStream(post));
@@ -171,7 +172,7 @@ public class WechatPayManager {
if (StrUtil.isNotBlank(errCode)) { if (StrUtil.isNotBlank(errCode)) {
if ("SYSTEMERROR".equals(errCode) || "BANKERROR".equals(errCode) || "USERPAYING".equals(errCode)) { if ("SYSTEMERROR".equals(errCode) || "BANKERROR".equals(errCode) || "USERPAYING".equals(errCode)) {
// 等待结果 // 等待结果
log.info("微信条码支付等待结果: orderNo = {}, err {}", paramsDto.getOrderNo(), errCodeDes); log.info("微信条码支付等待结果: orderNo = {}, err {}", paramsDto.getMchOrderNo(), errCodeDes);
res.put("status", "TRADE_AWAIT"); res.put("status", "TRADE_AWAIT");
return res; return res;
} }
@@ -181,19 +182,19 @@ public class WechatPayManager {
} }
if (!PAY_SUCCESS.equals(returnCode)) { if (!PAY_SUCCESS.equals(returnCode)) {
log.error("微信条码支付失败: orderNo = {}, msg = {}", paramsDto.getOrderNo(), rootElement.elementText("return_msg")); log.error("微信条码支付失败: orderNo = {}, msg = {}", paramsDto.getMchOrderNo(), rootElement.elementText("return_msg"));
res.put("status", "TRADE_FAIL"); res.put("status", "TRADE_FAIL");
return res; return res;
} }
// 支付成功 // 支付成功
log.info("微信条码支付成功: orderNo = {}, msg = {}", paramsDto.getOrderNo(), rootElement.elementText("return_msg")); log.info("微信条码支付成功: orderNo = {}, msg = {}", paramsDto.getMchOrderNo(), rootElement.elementText("return_msg"));
res.put("status", "TRADE_SUCCESS"); res.put("status", "TRADE_SUCCESS");
return res; return res;
} catch (CzgException e) { } catch (CzgException e) {
throw e; throw e;
} catch (Exception e) { } catch (Exception e) {
log.error("微信条码支付异常: orderNo = {}, e = {}", paramsDto.getOrderNo(), e.getMessage()); log.error("微信条码支付异常: orderNo = {}, e = {}", paramsDto.getMchOrderNo(), e.getMessage());
throw new CzgException("微信支付异常"); throw new CzgException("微信支付异常");
} }
} }

View File

@@ -2,6 +2,7 @@ package com.czg.impl;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.czg.PayAdapter; import com.czg.PayAdapter;
import com.czg.PayManager;
import com.czg.constant.PayChannelCst; import com.czg.constant.PayChannelCst;
import com.czg.entity.resp.CzgBaseResp; import com.czg.entity.resp.CzgBaseResp;
import com.czg.entity.resp.CzgRefundResp; import com.czg.entity.resp.CzgRefundResp;
@@ -11,6 +12,7 @@ import com.czg.pay.CzgPayBaseReq;
import com.czg.pay.CzgRefundReq; import com.czg.pay.CzgRefundReq;
import com.czg.pay.NativeMerchantDTO; import com.czg.pay.NativeMerchantDTO;
import com.czg.resp.CzgResult; import com.czg.resp.CzgResult;
import jakarta.validation.constraints.NotBlank;
import lombok.NonNull; import lombok.NonNull;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -38,15 +40,15 @@ public class NativePayAdapter implements PayAdapter {
switch (payType) { switch (payType) {
// case H5_PAY: // case H5_PAY:
// return h5Pay(polyMerchantDTO, domain, notifyUrl, bizData); // return h5Pay(polyMerchantDTO, domain, notifyUrl, bizData);
// case JS_PAY: case JS_PAY:
// return jsPay(polyMerchantDTO, domain, notifyUrl, bizData); return jsPay(polyMerchantDTO, notifyUrl, bizData);
// case LT_PAY: case LT_PAY:
// return ltPay(polyMerchantDTO, domain, notifyUrl, bizData); return jsPay(polyMerchantDTO, notifyUrl, bizData);
// case SCAN_PAY: // case SCAN_PAY:
// return scanPay(polyMerchantDTO, domain, notifyUrl, bizData); // return scanPay(polyMerchantDTO, domain, notifyUrl, bizData);
// case MICRO_PAY: case MICRO_PAY:
// //扫码支付 扫描码 //扫码支付 扫描码
// return microPay(polyMerchantDTO, domain, notifyUrl, (CzgPayBaseReq<String>) bizData); return barPay(polyMerchantDTO, notifyUrl, (CzgPayBaseReq<String>) bizData);
default: default:
throw new CzgException("原生支付不支持该支付方式: " + bizData.getPayType()); throw new CzgException("原生支付不支持该支付方式: " + bizData.getPayType());
} }
@@ -70,4 +72,14 @@ public class NativePayAdapter implements PayAdapter {
public CzgResult<CzgRefundResp> queryRefund(String domain, String payData, String mchRefundNo, String refundOrderId) { public CzgResult<CzgRefundResp> queryRefund(String domain, String payData, String mchRefundNo, String refundOrderId) {
return null; return null;
} }
private CzgResult<Map<String, Object>> jsPay(NativeMerchantDTO merchantDTO, String notifyUrl, CzgPayBaseReq<?> bizData) {
bizData.setNotifyUrl(notifyUrl);
return CzgResult.success(PayManager.jsapiPay(bizData, merchantDTO));
}
private CzgResult<Map<String, Object>> barPay(NativeMerchantDTO merchantDTO, String notifyUrl, CzgPayBaseReq<String> bizData) {
bizData.setNotifyUrl(notifyUrl);
return CzgResult.success(PayManager.barPay(bizData, merchantDTO));
}
} }