|
@@ -1,8 +1,12 @@
|
|
|
package cn.iocoder.yudao.framework.pay.core.client.impl.alipay;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import cn.iocoder.yudao.framework.pay.core.client.PayCommonResult;
|
|
|
import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderUnifiedReqDTO;
|
|
|
+import cn.iocoder.yudao.framework.pay.core.client.dto.order.PayOrderUnifiedRespDTO;
|
|
|
import cn.iocoder.yudao.framework.pay.core.enums.PayChannelEnum;
|
|
|
+import cn.iocoder.yudao.framework.pay.core.enums.PayDisplayModeEnum;
|
|
|
import com.alipay.api.AlipayApiException;
|
|
|
import com.alipay.api.domain.AlipayTradePrecreateModel;
|
|
|
import com.alipay.api.request.AlipayTradePrecreateRequest;
|
|
@@ -13,6 +17,7 @@ import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString
|
|
|
|
|
|
|
|
|
* 支付宝【扫码支付】的 PayClient 实现类
|
|
|
+ *
|
|
|
* 文档:https:
|
|
|
*
|
|
|
* @author 芋道源码
|
|
@@ -21,24 +26,31 @@ import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString
|
|
|
public class AlipayQrPayClient extends AbstractAlipayClient {
|
|
|
|
|
|
public AlipayQrPayClient(Long channelId, AlipayPayClientConfig config) {
|
|
|
- super(channelId, PayChannelEnum.ALIPAY_QR.getCode(), config, new AlipayPayCodeMapping());
|
|
|
+ super(channelId, PayChannelEnum.ALIPAY_QR.getCode(), config,
|
|
|
+ new AlipayPayCodeMapping());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public PayCommonResult<AlipayTradePrecreateResponse> doUnifiedOrder(PayOrderUnifiedReqDTO reqDTO) {
|
|
|
-
|
|
|
+ public PayCommonResult<PayOrderUnifiedRespDTO> doUnifiedOrder(PayOrderUnifiedReqDTO reqDTO) {
|
|
|
+
|
|
|
AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
|
|
|
+
|
|
|
model.setOutTradeNo(reqDTO.getMerchantOrderId());
|
|
|
model.setSubject(reqDTO.getSubject());
|
|
|
model.setBody(reqDTO.getBody());
|
|
|
- model.setTotalAmount(formatAmount(reqDTO.getAmount()).toString());
|
|
|
-
|
|
|
-
|
|
|
+ model.setTotalAmount(formatAmount(reqDTO.getAmount()));
|
|
|
+ model.setProductCode("FACE_TO_FACE_PAYMENT");
|
|
|
+
|
|
|
+
|
|
|
+ String displayMode = PayDisplayModeEnum.QR_CODE.getMode();
|
|
|
+
|
|
|
+
|
|
|
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
|
|
|
request.setBizModel(model);
|
|
|
request.setNotifyUrl(reqDTO.getNotifyUrl());
|
|
|
- request.setReturnUrl(reqDTO.getReturnUrl());
|
|
|
-
|
|
|
+ request.setReturnUrl(reqDTO.getReturnUrl());
|
|
|
+
|
|
|
+
|
|
|
AlipayTradePrecreateResponse response;
|
|
|
try {
|
|
|
response = client.execute(request);
|
|
@@ -46,7 +58,10 @@ public class AlipayQrPayClient extends AbstractAlipayClient {
|
|
|
log.error("[unifiedOrder][request({}) 发起支付失败]", toJsonString(reqDTO), e);
|
|
|
return PayCommonResult.build(e.getErrCode(), e.getErrMsg(), null, codeMapping);
|
|
|
}
|
|
|
-
|
|
|
- return PayCommonResult.build(response.getCode(), response.getMsg(), response, codeMapping);
|
|
|
+
|
|
|
+ PayOrderUnifiedRespDTO respDTO = new PayOrderUnifiedRespDTO()
|
|
|
+ .setDisplayMode(displayMode).setDisplayContent(response.getQrCode());
|
|
|
+ return PayCommonResult.build(StrUtil.blankToDefault(response.getCode(),"10000"),
|
|
|
+ response.getMsg(), respDTO, codeMapping);
|
|
|
}
|
|
|
}
|