feat wap和web支付

This commit is contained in:
xxm1995
2024-03-12 18:46:55 +08:00
parent 197382b1f8
commit 77ed232e40
4 changed files with 28 additions and 8 deletions

View File

@@ -24,10 +24,7 @@ public enum PayWayEnum {
QRCODE("qrcode", "扫码支付"), QRCODE("qrcode", "扫码支付"),
BARCODE("barcode", "付款码"), BARCODE("barcode", "付款码"),
// 通用 // 通用
JSAPI("jsapi", "公众号/小程序支付"), JSAPI("jsapi", "公众号/小程序支付");
// 在非支付宝和微信中, 但支持这两类支付的时候, 需要进行区分
JSAPI_WX_PAY("jsapi_wx_pay", "微信JS支付"),
JSAPI_ALI_PAY("jsapi_ali_pay", "支付宝JS支付");
/** 编码 */ /** 编码 */
private final String code; 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, 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.exception.pay.PayFailureException;
import cn.bootx.platform.daxpay.param.channel.UnionPayParam; import cn.bootx.platform.daxpay.param.channel.UnionPayParam;
import cn.bootx.platform.daxpay.param.pay.PayChannelParam; 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.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.context.PayLocal;
import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal;
import cn.bootx.platform.daxpay.service.core.channel.union.entity.UnionPayConfig; 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.date.DateUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import com.egzosn.pay.common.bean.NoticeParams; import com.egzosn.pay.common.bean.NoticeParams;
import com.egzosn.pay.union.bean.UnionTransactionType;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -46,7 +47,7 @@ public class UnionPayService {
throw new PayFailureException("云闪付未配置可用的支付方式"); throw new PayFailureException("云闪付未配置可用的支付方式");
} }
// 发起的支付类型是否在支持的范围内 // 发起的支付类型是否在支持的范围内
PayWayEnum payWayEnum = Optional.ofNullable(AliPayWay.findByCode(payChannelParam.getWay())) PayWayEnum payWayEnum = Optional.ofNullable(UnionPayWay.findByCode(payChannelParam.getWay()))
.orElseThrow(() -> new PayFailureException("非法的云闪付支付类型")); .orElseThrow(() -> new PayFailureException("非法的云闪付支付类型"));
if (!unionPayConfig.getPayWays().contains(payWayEnum.getCode())) { if (!unionPayConfig.getPayWays().contains(payWayEnum.getCode())) {
throw new PayFailureException("该云闪付支付方式不可用"); throw new PayFailureException("该云闪付支付方式不可用");
@@ -75,10 +76,33 @@ public class UnionPayService {
else if (payWayEnum == PayWayEnum.APP) { else if (payWayEnum == PayWayEnum.APP) {
payBody = this.appPay(totalFee, payOrder, unionPayParam, unionPayKit); 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); 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支付 * APP支付
*/ */

View File

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