feat wap和web支付

This commit is contained in:
xxm1995
2024-03-12 18:46:55 +08:00
committed by 喵呀
parent d69fdea2dd
commit 495f97dbc2
4 changed files with 28 additions and 8 deletions

View File

@@ -24,10 +24,7 @@ public enum PayWayEnum {
QRCODE("qrcode", "扫码支付"),
BARCODE("barcode", "付款码"),
// 通用
JSAPI("jsapi", "公众号/小程序支付"),
// 在非支付宝和微信中, 但支持这两类支付的时候, 需要进行区分
JSAPI_WX_PAY("jsapi_wx_pay", "微信JS支付"),
JSAPI_ALI_PAY("jsapi_ali_pay", "支付宝JS支付");
JSAPI("jsapi", "公众号/小程序支付");
/** 编码 */
private final String code;

View File

@@ -18,7 +18,7 @@ public class UnionPayWay {
// 支付方式
private static final List<PayWayEnum> PAY_WAYS = Arrays.asList(PayWayEnum.WAP, PayWayEnum.APP, PayWayEnum.WEB,
PayWayEnum.QRCODE, PayWayEnum.BARCODE);
PayWayEnum.JSAPI, PayWayEnum.QRCODE, PayWayEnum.BARCODE);
/**
* 根据编码获取

View File

@@ -4,8 +4,8 @@ import cn.bootx.platform.daxpay.code.PayWayEnum;
import cn.bootx.platform.daxpay.exception.pay.PayFailureException;
import cn.bootx.platform.daxpay.param.channel.UnionPayParam;
import cn.bootx.platform.daxpay.param.pay.PayChannelParam;
import cn.bootx.platform.daxpay.service.code.AliPayWay;
import cn.bootx.platform.daxpay.service.code.UnionPayCode;
import cn.bootx.platform.daxpay.service.code.UnionPayWay;
import cn.bootx.platform.daxpay.service.common.context.PayLocal;
import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal;
import cn.bootx.platform.daxpay.service.core.channel.union.entity.UnionPayConfig;
@@ -16,6 +16,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import com.egzosn.pay.common.bean.NoticeParams;
import com.egzosn.pay.union.bean.UnionTransactionType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -46,7 +47,7 @@ public class UnionPayService {
throw new PayFailureException("云闪付未配置可用的支付方式");
}
// 发起的支付类型是否在支持的范围内
PayWayEnum payWayEnum = Optional.ofNullable(AliPayWay.findByCode(payChannelParam.getWay()))
PayWayEnum payWayEnum = Optional.ofNullable(UnionPayWay.findByCode(payChannelParam.getWay()))
.orElseThrow(() -> new PayFailureException("非法的云闪付支付类型"));
if (!unionPayConfig.getPayWays().contains(payWayEnum.getCode())) {
throw new PayFailureException("该云闪付支付方式不可用");
@@ -75,10 +76,33 @@ public class UnionPayService {
else if (payWayEnum == PayWayEnum.APP) {
payBody = this.appPay(totalFee, payOrder, unionPayParam, unionPayKit);
}
// web支付
else if (payWayEnum == PayWayEnum.WEB) {
payBody = this.formPay(totalFee, payOrder, unionPayKit, UnionTransactionType.WEB);
}
// wap支付
else if (payWayEnum == PayWayEnum.WAP) {
payBody = this.formPay(totalFee, payOrder, unionPayKit, UnionTransactionType.WAP );
}
asyncPayInfo.setPayBody(payBody);
}
/**
* jsapi支付
*/
private String formPay(BigDecimal amount, PayOrder payOrder, UnionPayKit unionPayKit, UnionTransactionType type) {
Date expiredTime = DateUtil.date(payOrder.getExpiredTime());
UnionPayOrder unionPayOrder = new UnionPayOrder();
unionPayOrder.setOutTradeNo(String.valueOf(payOrder.getId()));
unionPayOrder.setSubject(payOrder.getTitle());
unionPayOrder.setPrice(amount);
unionPayOrder.setExpirationTime(expiredTime);
unionPayOrder.setTransactionType(type);
return unionPayKit.toPay(unionPayOrder);
}
/**
* APP支付
*/

View File

@@ -555,7 +555,6 @@ public class UnionPayKit extends UnionPayService {
if (SDKConstants.OK_RESP_CODE.equals(response.get(SDKConstants.param_respCode))) {
// //成功,获取tn号
// String tn = (String)response.get(SDKConstants.param_tn);
// //TODO
return response;
}
throw new PayErrorException(new PayException((String) response.get(SDKConstants.param_respCode), (String) response.get(SDKConstants.param_respMsg), response.toJSONString()));