mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-09-07 21:17:42 +00:00
feat wap和web支付
This commit is contained in:
@@ -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;
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据编码获取
|
* 根据编码获取
|
||||||
|
@@ -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支付
|
||||||
*/
|
*/
|
||||||
|
@@ -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()));
|
||||||
|
Reference in New Issue
Block a user