diff --git a/docs/sql/init.sql b/docs/sql/init.sql index 45b45a6..22ef8b6 100644 --- a/docs/sql/init.sql +++ b/docs/sql/init.sql @@ -761,7 +761,7 @@ INSERT INTO t_pay_interface_define (if_code, if_name, is_mch_mode, is_isv_mode, VALUES ('jeepluspay', '计全付', 1, 0, 1, NULL, NULL, - '[{"name":"signType","desc":"签名方式","type":"radio","verify":"required","values":"MD5,RSA2","titles":"MD5,RSA2"},{"name":"merchantNo","desc":"计全付商户号","type":"text","verify":"required"},{"name":"appId","desc":"应用ID","type":"text","verify":"required"},{"name":"appSecret","desc":"md5秘钥","type":"textarea","verify":"required","star":"1"},{"name":"rsa2AppPrivateKey","desc":"RSA2: 应用私钥","type":"text","verify":"required","star":"1"},{"name":"rsa2PayPublicKey","desc":"RSA2: 支付网关公钥","type":"text","verify":"required","star":"1"}]', + '[{"name":"signType","desc":"签名方式","type":"radio","verify":"required","values":"MD5,RSA2","titles":"MD5,RSA2"},{"name":"merchantNo","desc":"计全付商户号","type":"text","verify":"required"},{"name":"appId","desc":"应用ID","type":"text","verify":"required"},{"name":"appSecret","desc":"md5秘钥","type":"textarea","verify":"required","star":"1"},{"name":"rsa2AppPrivateKey","desc":"RSA2: 应用私钥","type":"textarea","verify":"required","star":"1"},{"name":"rsa2PayPublicKey","desc":"RSA2: 支付网关公钥","type":"textarea","verify":"required","star":"1"}]', '[{"wayCode": "ALI_APP"}, {"wayCode": "ALI_BAR"}, {"wayCode": "ALI_JSAPI"}, {"wayCode": "ALI_LITE"}, {"wayCode": "ALI_PC"}, {"wayCode": "ALI_QR"}, {"wayCode": "ALI_WAP"}, {"wayCode": "WX_APP"}, {"wayCode": "WX_BAR"}, {"wayCode": "WX_H5"}, {"wayCode": "WX_JSAPI"}, {"wayCode": "WX_LITE"}, {"wayCode": "WX_NATIVE"}]', 'http://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/jeepluspay.svg', '#0CACFF', 1, '计全付'); diff --git a/docs/sql/patch.sql b/docs/sql/patch.sql index b4a6548..1c9cfb5 100644 --- a/docs/sql/patch.sql +++ b/docs/sql/patch.sql @@ -262,6 +262,6 @@ INSERT INTO t_pay_interface_define (if_code, if_name, is_mch_mode, is_isv_mode, VALUES ('jeepluspay', '计全付', 1, 0, 1, NULL, NULL, - '[{"name":"signType","desc":"签名方式","type":"radio","verify":"required","values":"MD5,RSA2","titles":"MD5,RSA2"},{"name":"merchantNo","desc":"计全付商户号","type":"text","verify":"required"},{"name":"appId","desc":"应用ID","type":"text","verify":"required"},{"name":"appSecret","desc":"md5秘钥","type":"textarea","verify":"required","star":"1"},{"name":"rsa2AppPrivateKey","desc":"RSA2: 应用私钥","type":"text","verify":"required","star":"1"},{"name":"rsa2PayPublicKey","desc":"RSA2: 支付网关公钥","type":"text","verify":"required","star":"1"}]', + '[{"name":"signType","desc":"签名方式","type":"radio","verify":"required","values":"MD5,RSA2","titles":"MD5,RSA2"},{"name":"merchantNo","desc":"计全付商户号","type":"text","verify":"required"},{"name":"appId","desc":"应用ID","type":"text","verify":"required"},{"name":"appSecret","desc":"md5秘钥","type":"textarea","verify":"required","star":"1"},{"name":"rsa2AppPrivateKey","desc":"RSA2: 应用私钥","type":"textarea","verify":"required","star":"1"},{"name":"rsa2PayPublicKey","desc":"RSA2: 支付网关公钥","type":"textarea","verify":"required","star":"1"}]', '[{"wayCode": "ALI_APP"}, {"wayCode": "ALI_BAR"}, {"wayCode": "ALI_JSAPI"}, {"wayCode": "ALI_LITE"}, {"wayCode": "ALI_PC"}, {"wayCode": "ALI_QR"}, {"wayCode": "ALI_WAP"}, {"wayCode": "WX_APP"}, {"wayCode": "WX_BAR"}, {"wayCode": "WX_H5"}, {"wayCode": "WX_JSAPI"}, {"wayCode": "WX_LITE"}, {"wayCode": "WX_NATIVE"}]', 'http://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/jeepluspay.svg', '#0CACFF', 1, '计全付'); diff --git a/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/params/jeepluspay/JeepluspayConfig.java b/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/params/jeepluspay/JeepluspayConfig.java index c88ef7e..85fb616 100644 --- a/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/params/jeepluspay/JeepluspayConfig.java +++ b/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/params/jeepluspay/JeepluspayConfig.java @@ -36,12 +36,13 @@ public class JeepluspayConfig { public static String PAY_STATE_FAIL = "3"; // 3-支付失败 /** 退款订单状态 */ - public static String Refund_STATE_SUCCESS = "2"; // 2-退款成功 - public static String Refund_STATE_FAIL = "3"; // 3-退款失败 + public static String REFUND_STATE_SUCCESS = "2"; // 2-退款成功 + public static String REFUND_STATE_FAIL = "3"; // 3-退款失败 /** 支付方式 */ public static String ALI_BAR = "ALI_BAR"; // 支付宝条码 public static String ALI_JSAPI = "ALI_JSAPI"; // 支付宝生活号 + public static String ALI_LITE = "ALI_LITE"; // 支付宝小程序 public static String ALI_APP = "ALI_APP"; // 支付宝APP public static String ALI_WAP = "ALI_WAP"; // 支付宝WAP public static String ALI_PC = "ALI_PC"; // 支付宝PC网站 diff --git a/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/params/jeepluspay/JeepluspayNormalMchParams.java b/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/params/jeepluspay/JeepluspayNormalMchParams.java index e73ba95..3da1e87 100644 --- a/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/params/jeepluspay/JeepluspayNormalMchParams.java +++ b/jeepay-core/src/main/java/com/jeequan/jeepay/core/model/params/jeepluspay/JeepluspayNormalMchParams.java @@ -42,7 +42,7 @@ public class JeepluspayNormalMchParams extends NormalMchParams { private String signType; /** md5秘钥 */ - private String AppSecret; + private String appSecret; /** RSA2: 应用私钥 */ private String rsa2AppPrivateKey; @@ -55,8 +55,8 @@ public class JeepluspayNormalMchParams extends NormalMchParams { public String deSenData() { JeepluspayNormalMchParams mchParams = this; - if (StringUtils.isNotBlank(this.AppSecret)) { - mchParams.setAppSecret(StringKit.str2Star(this.AppSecret, 4, 4, 6)); + if (StringUtils.isNotBlank(this.appSecret)) { + mchParams.setAppSecret(StringKit.str2Star(this.appSecret, 4, 4, 6)); } return ((JSONObject) JSON.toJSON(mchParams)).toJSONString(); } diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayChannelNoticeService.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayChannelNoticeService.java index d904608..bd9726c 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayChannelNoticeService.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayChannelNoticeService.java @@ -80,17 +80,10 @@ public class JeepluspayChannelNoticeService extends AbstractChannelNoticeService // 验签成功后判断上游订单状态 ResponseEntity okResponse = textResp("success"); - // 支付状态: 0-订单生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭 - String status = paramsJson.getString("state"); ChannelRetMsg result = new ChannelRetMsg(); result.setResponseEntity(okResponse); result.setChannelOrderId(paramsJson.getString("payOrderId")); - result.setChannelState(ChannelRetMsg.ChannelState.WAITING); // 默认支付中 - if (JeepluspayConfig.PAY_STATE_SUCCESS.equals(status)) { - result.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS); - } else if (JeepluspayConfig.PAY_STATE_FAIL.equals(status)) { - result.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - } + result.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS); return result; } catch (Exception e) { log.error("error", e); @@ -119,6 +112,12 @@ public class JeepluspayChannelNoticeService extends AbstractChannelNoticeService log.info("验签失败! 回调参数:parameter = {}", jsonParams); return false; } + // 支付状态: 0-订单生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭 + String status = jsonParams.getString("state"); + if (!JeepluspayConfig.PAY_STATE_SUCCESS.equals(status)) { + log.info("订单状态错误! state = {}", status); + return false; + } return true; } catch (Exception e) { log.error("error", e); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayChannelRefundNoticeService.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayChannelRefundNoticeService.java index 44d2c2c..b640682 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayChannelRefundNoticeService.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayChannelRefundNoticeService.java @@ -81,20 +81,11 @@ public class JeepluspayChannelRefundNoticeService extends AbstractChannelRefundN //验签成功后判断上游订单状态 ResponseEntity okResponse = textResp("success"); - // 退款状态 0-订单生成 1-退款中 2-退款成功 3-退款失败 4-退款关闭 - String status = jsonParams.getString("state"); - ChannelRetMsg result = new ChannelRetMsg(); result.setChannelOrderId(jsonParams.getString("refundOrderId")); //渠道订单号 result.setResponseEntity(okResponse); //响应数据 + result.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS); - result.setChannelState(ChannelRetMsg.ChannelState.WAITING); // 默认退款中 - - if (JeepluspayConfig.Refund_STATE_SUCCESS.equals(status)) { - result.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS); - }else if (JeepluspayConfig.Refund_STATE_FAIL.equals(status)) { - result.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - } return result; } catch (Exception e) { log.error("error", e); @@ -123,6 +114,12 @@ public class JeepluspayChannelRefundNoticeService extends AbstractChannelRefundN log.info("验签失败! 回调参数:parameter = {}", jsonParams); return false; } + // 退款状态 0-订单生成 1-退款中 2-退款成功 3-退款失败 4-退款关闭 + String status = jsonParams.getString("state"); + if (!JeepluspayConfig.REFUND_STATE_SUCCESS.equals(status)) { + log.info("订单状态错误! state = {}", status); + return false; + } return true; } catch (Exception e) { log.error("error", e); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayKit.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayKit.java new file mode 100644 index 0000000..04eaad9 --- /dev/null +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayKit.java @@ -0,0 +1,75 @@ +package com.jeequan.jeepay.pay.channel.jeepluspay; + +import com.jeequan.jeepay.Jeepay; +import com.jeequan.jeepay.JeepayClient; +import com.jeequan.jeepay.core.constants.CS; +import com.jeequan.jeepay.core.entity.PayOrder; +import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; +import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; +import com.jeequan.jeepay.core.utils.SpringBeansUtil; +import com.jeequan.jeepay.exception.JeepayException; +import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.model.MchAppConfigContext; +import com.jeequan.jeepay.pay.service.ConfigContextQueryService; +import com.jeequan.jeepay.request.PayOrderCreateRequest; +import com.jeequan.jeepay.response.JeepayResponse; +import com.jeequan.jeepay.response.PayOrderCreateResponse; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +/* + * 工具类 + * + * @author xiaoyu + * @site https://www.jeequan.com + * @date 2022/8/23 16:29 + */ +@Slf4j +public class JeepluspayKit { + + + public static PayOrderCreateResponse payRequest(PayOrder payOrder, MchAppConfigContext mchAppConfigContext, PayOrderCreateReqModel model) throws JeepayException { + + // 发起统一下单 + PayOrderCreateResponse response = new PayOrderCreateResponse(); + ConfigContextQueryService configContextQueryService = SpringBeansUtil.getBean(ConfigContextQueryService.class); + JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); + // 构建请求数据 + PayOrderCreateRequest request = new PayOrderCreateRequest(); + model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 + model.setAppId(normalMchParams.getAppId()); // 应用ID + model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 + model.setAmount(payOrder.getAmount()); // 金额,单位分 + model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny + model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 + model.setSubject(payOrder.getSubject()); // 商品标题 + model.setBody(payOrder.getBody()); // 商品描述 + request.setBizModel(model); + + if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { + JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); + response = jeepayClient.execute(request); + + } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { + JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); + response = jeepayClient.executeByRSA2(request); + } + return response; + } + + public static Boolean checkPayResp(JeepayResponse response , MchAppConfigContext mchAppConfigContext) { + ConfigContextQueryService configContextQueryService = SpringBeansUtil.getBean(ConfigContextQueryService.class); + JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); + + boolean isSuccess = false; + if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { + isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + + } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { + isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); + } + + return isSuccess; + } + +} diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayPayOrderQueryService.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayPayOrderQueryService.java index bbf568e..c229469 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayPayOrderQueryService.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayPayOrderQueryService.java @@ -63,23 +63,20 @@ public class JeepluspayPayOrderQueryService implements IPayOrderQueryService { request.setBizModel(model); // 发起请求 PayOrderQueryResponse response = new PayOrderQueryResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { + if (StringUtils.isEmpty(normalMchParams.getSignType()) || normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE)) { JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); } + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); + // 请求响应状态 - if (isSuccess && checkSign) { + if (isSuccess) { // 如果查询请求成功 if (JeepluspayConfig.PAY_STATE_SUCCESS.equals(String.valueOf(response.get().getState()))) { return ChannelRetMsg.confirmSuccess(response.get().getPayOrderId()); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayRefundService.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayRefundService.java index 1ca4961..3be0a46 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayRefundService.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/JeepluspayRefundService.java @@ -76,32 +76,30 @@ public class JeepluspayRefundService extends AbstractRefundService { try { // 发起退款 RefundOrderCreateResponse response = new RefundOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); } - if (checkSign) { - channelRetMsg.setChannelOrderId(response.get().getRefundOrderId()); - // 退款发送成功 - if (isSuccess) { + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); + + // 退款发送成功 + if (isSuccess) { + if (JeepluspayConfig.REFUND_STATE_SUCCESS.equals(response.get().getState().toString())) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS); - } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.getCode().toString()); - channelRetMsg.setChannelErrMsg(response.getMsg()); } + channelRetMsg.setChannelOrderId(response.get().getRefundOrderId()); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.getCode().toString()); + channelRetMsg.setChannelErrMsg(response.getMsg()); } + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); } @@ -120,22 +118,19 @@ public class JeepluspayRefundService extends AbstractRefundService { request.setBizModel(model); // 发起请求 RefundOrderQueryResponse response = new RefundOrderQueryResponse(); - boolean checkSign = false; - boolean isSuccess = false; if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); } + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); + // 请求响应状态 - if (isSuccess && checkSign) { + if (isSuccess) { // 如果查询请求成功 if (JeepluspayConfig.PAY_STATE_SUCCESS.equals(response.get().getState().toString())) { return ChannelRetMsg.confirmSuccess(response.get().getRefundOrderId()); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliApp.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliApp.java index 6c4432b..4802ce8 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliApp.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliApp.java @@ -16,14 +16,12 @@ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; import com.alibaba.fastjson.JSONObject; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -31,9 +29,7 @@ import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg; import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliAppOrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /* @@ -53,59 +49,38 @@ public class AliApp extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) { - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.ALI_APP); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - JSONObject channelExtra = new JSONObject(); - channelExtra.put("payDataType", CS.PAY_DATA_TYPE.ALI_APP); - model.setChannelExtra(channelExtra.toString()); // 支付宝app支付参数 - request.setBizModel(model); // 构造函数响应数据 AliAppOrderRS res = ApiResBuilder.buildSuccess(AliAppOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.ALI_APP); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + // 支付宝app支付参数 + JSONObject channelExtra = new JSONObject(); + channelExtra.put("payDataType", CS.PAY_DATA_TYPE.ALI_APP); + model.setChannelExtra(channelExtra.toString()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { + if (isSuccess) { + // 下单成功 + String payData = response.getData().getString("payData"); + res.setPayData(payData); + channelRetMsg.setChannelAttach(payData); channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 - JSONObject payData = response.getData().getJSONObject("payData"); - res.setPayData(payData.toJSONString()); - channelRetMsg.setChannelAttach(payData.toJSONString()); - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); - } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); - } + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliBar.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliBar.java index 3db8c63..8f0a984 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliBar.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliBar.java @@ -16,15 +16,12 @@ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; import com.alibaba.fastjson.JSONObject; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; -import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.exception.BizException; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliBarOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliBarOrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -60,56 +56,41 @@ public class AliBar extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) { AliBarOrderRQ bizRQ = (AliBarOrderRQ) rq; - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.ALI_BAR); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - JSONObject channelExtra = new JSONObject(); - channelExtra.put("authCode", bizRQ.getAuthCode()); - model.setChannelExtra(channelExtra.toString()); // 用户付款码值 - request.setBizModel(model); // 构造函数响应数据 AliBarOrderRS res = ApiResBuilder.buildSuccess(AliBarOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.ALI_BAR); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + // 用户付款码值 + JSONObject channelExtra = new JSONObject(); + channelExtra.put("authCode", bizRQ.getAuthCode()); + model.setChannelExtra(channelExtra.toString()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { - channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 + // 下单成功 + if (isSuccess) { + if (JeepluspayConfig.PAY_STATE_SUCCESS.equals(response.getData().getString("orderState"))) { + // 支付成功 channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS); - } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); + }else { + // 支付中 + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); } + channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliJsapi.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliJsapi.java index edb18c8..1bc12e0 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliJsapi.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliJsapi.java @@ -16,15 +16,12 @@ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; import com.alibaba.fastjson.JSONObject; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; -import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.exception.BizException; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliJsapiOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliJsapiOrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -60,59 +56,38 @@ public class AliJsapi extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception { AliJsapiOrderRQ bizRQ = (AliJsapiOrderRQ) rq; - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.ALI_JSAPI); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - JSONObject channelExtra = new JSONObject(); - channelExtra.put("buyerUserId", bizRQ.getBuyerUserId()); - model.setChannelExtra(channelExtra.toString()); // 支付宝用户ID - request.setBizModel(model); // 构造函数响应数据 AliJsapiOrderRS res = ApiResBuilder.buildSuccess(AliJsapiOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.ALI_JSAPI); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + // 支付宝用户ID + JSONObject channelExtra = new JSONObject(); + channelExtra.put("buyerUserId", bizRQ.getBuyerUserId()); + model.setChannelExtra(channelExtra.toString()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { + if (isSuccess) { + // 下单成功 + JSONObject payData = response.getData().getJSONObject("payData"); + res.setAlipayTradeNo(payData.getString("alipayTradeNo")); + res.setPayData(payData.toJSONString()); channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 - JSONObject payData = response.getData().getJSONObject("payData"); - res.setAlipayTradeNo(payData.getString("alipayTradeNo")); - res.setPayData(payData.toJSONString()); - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); - } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); - } + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliLite.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliLite.java index e3123d3..7d71737 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliLite.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliLite.java @@ -16,15 +16,12 @@ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; import com.alibaba.fastjson.JSONObject; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; -import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.exception.BizException; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliLiteOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliLiteOrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -60,59 +56,38 @@ public class AliLite extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception { AliLiteOrderRQ bizRQ = (AliLiteOrderRQ) rq; - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.WX_LITE); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - JSONObject channelExtra = new JSONObject(); - channelExtra.put("buyerUserId", bizRQ.getBuyerUserId()); - model.setChannelExtra(channelExtra.toString()); // 支付宝用户ID - request.setBizModel(model); // 构造函数响应数据 AliLiteOrderRS res = ApiResBuilder.buildSuccess(AliLiteOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.ALI_LITE); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + // 支付宝用户ID + JSONObject channelExtra = new JSONObject(); + channelExtra.put("buyerUserId", bizRQ.getBuyerUserId()); + model.setChannelExtra(channelExtra.toString()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { + if (isSuccess) { + // 下单成功 + JSONObject payData = response.getData().getJSONObject("payData"); + res.setAlipayTradeNo(payData.getString("alipayTradeNo")); + res.setPayData(payData.toJSONString()); channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 - JSONObject payData = response.getData().getJSONObject("payData"); - res.setAlipayTradeNo(payData.getString("alipayTradeNo")); - res.setPayData(payData.toJSONString()); - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); - } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); - } + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliPc.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliPc.java index 3c9d92c..cc32f59 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliPc.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliPc.java @@ -15,14 +15,12 @@ */ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -30,9 +28,7 @@ import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg; import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliPcOrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /* @@ -52,62 +48,44 @@ public class AliPc extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) { - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.ALI_PC); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - request.setBizModel(model); + // 构造函数响应数据 AliPcOrderRS res = ApiResBuilder.buildSuccess(AliPcOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.ALI_PC); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { - channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 - String payUrl = response.getData().getString("payData"); - String payDataType = response.getData().getString("payDataType"); - if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) { //表单方式 - res.setFormContent(payUrl); - } else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) { //二维码图片地址 - res.setCodeImgUrl(payUrl); - } else { // 默认都为 payUrl方式 - res.setPayUrl(payUrl); - } - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + if (isSuccess) { + // 下单成功 + String payUrl = response.getData().getString("payData"); + String payDataType = response.getData().getString("payDataType"); + if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) { + //表单方式 + res.setFormContent(payUrl); + } else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) { + //二维码图片地址 + res.setCodeImgUrl(payUrl); } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); + // 默认都为 payUrl方式 + res.setPayUrl(payUrl); } + channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliQr.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliQr.java index 7680fa3..9ac83d0 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliQr.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliQr.java @@ -15,14 +15,12 @@ */ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -31,9 +29,7 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliQrOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliQrOrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /* @@ -54,59 +50,37 @@ public class AliQr extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception { AliQrOrderRQ aliQrOrderRQ = (AliQrOrderRQ) rq; - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.ALI_QR); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - request.setBizModel(model); // 构造函数响应数据 AliQrOrderRS res = ApiResBuilder.buildSuccess(AliQrOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.ALI_QR); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { - channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 - // 二维码图片地址 - if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(aliQrOrderRQ.getPayDataType())) { - res.setCodeImgUrl(sysConfigService.getDBApplicationConfig().genScanImgUrl(response.get().getPayData())); - } else { - res.setCodeUrl(response.get().getPayData()); - } - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + if (isSuccess) { + // 下单成功 + // 二维码图片地址 + if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(aliQrOrderRQ.getPayDataType())) { + res.setCodeImgUrl(sysConfigService.getDBApplicationConfig().genScanImgUrl(response.get().getPayData())); } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); + res.setCodeUrl(response.get().getPayData()); } + channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliWap.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliWap.java index 91356db..8619f8d 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliWap.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/AliWap.java @@ -15,14 +15,12 @@ */ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -30,9 +28,7 @@ import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg; import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliWapOrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /* @@ -52,62 +48,44 @@ public class AliWap extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) { - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.ALI_WAP); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - request.setBizModel(model); + // 构造函数响应数据 AliWapOrderRS res = ApiResBuilder.buildSuccess(AliWapOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.ALI_WAP); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { - channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 - String payUrl = response.getData().getString("payData"); - String payDataType = response.getData().getString("payDataType"); - if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) { //表单方式 - res.setFormContent(payUrl); - } else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) { //二维码图片地址 - res.setCodeImgUrl(payUrl); - } else { // 默认都为 payUrl方式 - res.setPayUrl(payUrl); - } - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + if (isSuccess) { + // 下单成功 + String payUrl = response.getData().getString("payData"); + String payDataType = response.getData().getString("payDataType"); + if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) { + //表单方式 + res.setFormContent(payUrl); + } else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) { + //二维码图片地址 + res.setCodeImgUrl(payUrl); } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); + // 默认都为 payUrl方式 + res.setPayUrl(payUrl); } + channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxApp.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxApp.java index ff92489..2e7eeb9 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxApp.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxApp.java @@ -16,14 +16,12 @@ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; import com.alibaba.fastjson.JSONObject; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -31,9 +29,7 @@ import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg; import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxAppOrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /* @@ -53,60 +49,39 @@ public class WxApp extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception { - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.WX_APP); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - JSONObject channelExtra = new JSONObject(); - channelExtra.put("payDataType", CS.PAY_DATA_TYPE.WX_APP); - model.setChannelExtra(channelExtra.toString()); // 微信app支付参数 - request.setBizModel(model); + // 构造函数响应数据 WxAppOrderRS res = ApiResBuilder.buildSuccess(WxAppOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.WX_APP); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + // 微信app支付参数 + JSONObject channelExtra = new JSONObject(); + channelExtra.put("payDataType", CS.PAY_DATA_TYPE.WX_APP); + model.setChannelExtra(channelExtra.toString()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { + if (isSuccess) { + // 下单成功 + JSONObject resJSON = new JSONObject(); + resJSON.put("package", response.getData().getString("payData")); + res.setPayInfo(resJSON.toJSONString()); channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 - JSONObject payData = response.getData().getJSONObject("payData"); - JSONObject resJSON = new JSONObject(); - resJSON.put("package", payData.toJSONString()); - res.setPayInfo(resJSON.toJSONString()); - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); - } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); - } + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxBar.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxBar.java index 85de92a..29204a6 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxBar.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxBar.java @@ -16,15 +16,12 @@ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; import com.alibaba.fastjson.JSONObject; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; -import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.exception.BizException; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliBarOrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxBarOrderRQ; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -60,56 +56,42 @@ public class WxBar extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception { WxBarOrderRQ bizRQ = (WxBarOrderRQ) rq; - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.WX_BAR); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - JSONObject channelExtra = new JSONObject(); - channelExtra.put("authCode", bizRQ.getAuthCode()); - model.setChannelExtra(channelExtra.toString()); // 用户付款码值 - request.setBizModel(model); + // 构造函数响应数据 AliBarOrderRS res = ApiResBuilder.buildSuccess(AliBarOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.WX_BAR); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + JSONObject channelExtra = new JSONObject(); + channelExtra.put("authCode", bizRQ.getAuthCode()); + // 用户付款码值 + model.setChannelExtra(channelExtra.toString()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { - channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 + if (isSuccess) { + // 下单成功 + if (JeepluspayConfig.PAY_STATE_SUCCESS.equals(response.getData().getString("orderState"))) { + // 支付成功 channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS); - } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); + }else { + // 支付中 + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); } + channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxH5.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxH5.java index 6d949af..99e2aa6 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxH5.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxH5.java @@ -15,14 +15,12 @@ */ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -30,9 +28,7 @@ import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg; import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxH5OrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /* @@ -52,63 +48,44 @@ public class WxH5 extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) { - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.WX_H5); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - request.setBizModel(model); // 构造函数响应数据 WxH5OrderRS res = ApiResBuilder.buildSuccess(WxH5OrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.WX_H5); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { - channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 - String payUrl = response.getData().getString("payData"); - String payDataType = response.getData().getString("payDataType"); - if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) { //表单方式 - res.setFormContent(payUrl); - } else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) { //二维码图片地址 - res.setCodeImgUrl(payUrl); - } else { // 默认都为 payUrl方式 - res.setPayUrl(payUrl); - } - // 支付中 - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + if (isSuccess) { + // 下单成功 + String payUrl = response.getData().getString("payData"); + String payDataType = response.getData().getString("payDataType"); + if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) { + //表单方式 + res.setFormContent(payUrl); + } else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) { + //二维码图片地址 + res.setCodeImgUrl(payUrl); } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); + // 默认都为 payUrl方式 + res.setPayUrl(payUrl); } + channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); + // 支付中 + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxJsapi.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxJsapi.java index 6b303f7..85073de 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxJsapi.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxJsapi.java @@ -16,15 +16,12 @@ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; import com.alibaba.fastjson.JSONObject; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; -import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.exception.BizException; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxJsapiOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxJsapiOrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -62,58 +58,38 @@ public class WxJsapi extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception { WxJsapiOrderRQ bizRQ = (WxJsapiOrderRQ) rq; - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.WX_JSAPI); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - JSONObject channelExtra = new JSONObject(); - channelExtra.put("openid", bizRQ.getOpenid()); - model.setChannelExtra(channelExtra.toString()); // 微信openId - request.setBizModel(model); + // 构造函数响应数据 WxJsapiOrderRS res = ApiResBuilder.buildSuccess(WxJsapiOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.WX_JSAPI); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + JSONObject channelExtra = new JSONObject(); + channelExtra.put("openid", bizRQ.getOpenid()); + // 微信openId + model.setChannelExtra(channelExtra.toString()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } + if (isSuccess) { + // 下单成功 + res.setPayInfo(response.getData().getString("payData")); - if (checkSign) { channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 - JSONObject payData = response.getData().getJSONObject("payData"); - res.setPayInfo(payData.toJSONString()); - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); - } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); - } + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxLite.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxLite.java index fc75e2b..9dd1ea3 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxLite.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxLite.java @@ -16,24 +16,20 @@ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; import com.alibaba.fastjson.JSONObject; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; -import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.exception.BizException; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg; import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; -import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxLiteOrderRQ; -import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxLiteOrderRS; +import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxJsapiOrderRQ; +import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxJsapiOrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -52,7 +48,7 @@ public class WxLite extends JeepluspayPaymentService { @Override public String preCheck(UnifiedOrderRQ rq, PayOrder payOrder) { - WxLiteOrderRQ bizRQ = (WxLiteOrderRQ) rq; + WxJsapiOrderRQ bizRQ = (WxJsapiOrderRQ) rq; if (StringUtils.isEmpty(bizRQ.getOpenid())) { throw new BizException("[openid]不可为空"); } @@ -61,59 +57,37 @@ public class WxLite extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception { - WxLiteOrderRQ bizRQ = (WxLiteOrderRQ) rq; - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.WX_LITE); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - JSONObject channelExtra = new JSONObject(); - channelExtra.put("openid", bizRQ.getOpenid()); - model.setChannelExtra(channelExtra.toString()); // 微信openId - request.setBizModel(model); + WxJsapiOrderRQ bizRQ = (WxJsapiOrderRQ) rq; // 构造函数响应数据 - WxLiteOrderRS res = ApiResBuilder.buildSuccess(WxLiteOrderRS.class); + WxJsapiOrderRS res = ApiResBuilder.buildSuccess(WxJsapiOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.WX_LITE); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + JSONObject channelExtra = new JSONObject(); + channelExtra.put("openid", bizRQ.getOpenid()); + // 微信openId + model.setChannelExtra(channelExtra.toString()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { + if (isSuccess) { + // 下单成功 + res.setPayInfo(response.getData().getString("payData")); channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 - JSONObject payData = response.getData().getJSONObject("payData"); - res.setPayInfo(payData.toJSONString()); - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); - } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); - } + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxNative.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxNative.java index c6a6e40..dda58f2 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxNative.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/channel/jeepluspay/payway/WxNative.java @@ -15,14 +15,12 @@ */ package com.jeequan.jeepay.pay.channel.jeepluspay.payway; -import com.jeequan.jeepay.Jeepay; -import com.jeequan.jeepay.JeepayClient; import com.jeequan.jeepay.core.constants.CS; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; -import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayNormalMchParams; import com.jeequan.jeepay.exception.JeepayException; import com.jeequan.jeepay.model.PayOrderCreateReqModel; +import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayKit; import com.jeequan.jeepay.pay.channel.jeepluspay.JeepluspayPaymentService; import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.rqrs.AbstractRS; @@ -31,9 +29,7 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxNativeOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxNativeOrderRS; import com.jeequan.jeepay.pay.util.ApiResBuilder; -import com.jeequan.jeepay.request.PayOrderCreateRequest; import com.jeequan.jeepay.response.PayOrderCreateResponse; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; /* @@ -54,59 +50,37 @@ public class WxNative extends JeepluspayPaymentService { @Override public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception { WxNativeOrderRQ bizRQ = (WxNativeOrderRQ) rq; - JeepluspayNormalMchParams normalMchParams = (JeepluspayNormalMchParams) configContextQueryService.queryNormalMchParams(mchAppConfigContext.getMchNo(), mchAppConfigContext.getAppId(), CS.IF_CODE.JEEPLUSPAY); - // 构建请求数据 - PayOrderCreateRequest request = new PayOrderCreateRequest(); - PayOrderCreateReqModel model = new PayOrderCreateReqModel(); - model.setMchNo(normalMchParams.getMerchantNo()); // 商户号 - model.setAppId(normalMchParams.getAppId()); // 应用ID - model.setMchOrderNo(payOrder.getPayOrderId()); // 商户订单号 - model.setWayCode(JeepluspayConfig.WX_NATIVE); // 支付方式 - model.setAmount(payOrder.getAmount()); // 金额,单位分 - model.setCurrency(payOrder.getCurrency()); // 币种,目前只支持cny - model.setClientIp(payOrder.getClientIp()); // 发起支付请求客户端的IP地址 - model.setSubject(payOrder.getSubject()); // 商品标题 - model.setBody(payOrder.getBody()); // 商品描述 - model.setNotifyUrl(getNotifyUrl()); // 异步通知地址 - request.setBizModel(model); // 构造函数响应数据 WxNativeOrderRS res = ApiResBuilder.buildSuccess(WxNativeOrderRS.class); ChannelRetMsg channelRetMsg = new ChannelRetMsg(); res.setChannelRetMsg(channelRetMsg); try { + // 构建请求数据 + PayOrderCreateReqModel model = new PayOrderCreateReqModel(); + // 支付方式 + model.setWayCode(JeepluspayConfig.WX_NATIVE); + // 异步通知地址 + model.setNotifyUrl(getNotifyUrl()); + // 发起统一下单 - PayOrderCreateResponse response = new PayOrderCreateResponse(); - boolean checkSign = false; - boolean isSuccess = false; - if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); - response = jeepayClient.execute(request); - checkSign = response.checkSign(normalMchParams.getAppSecret()); - isSuccess = response.isSuccess(normalMchParams.getAppSecret()); + PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model); + // 下单返回状态 + Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext); - } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { - JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); - response = jeepayClient.executeByRSA2(request); - checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); - isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey()); - } - - if (checkSign) { - channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); - if (isSuccess) { - // 下单成功 - // 二维码图片地址 - if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(bizRQ.getPayDataType())) { - res.setCodeImgUrl(sysConfigService.getDBApplicationConfig().genScanImgUrl(response.get().getPayData())); - } else { - res.setCodeUrl(response.get().getPayData()); - } - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + if (isSuccess) { + // 下单成功 + // 二维码图片地址 + if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(bizRQ.getPayDataType())) { + res.setCodeImgUrl(sysConfigService.getDBApplicationConfig().genScanImgUrl(response.get().getPayData())); } else { - channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); - channelRetMsg.setChannelErrCode(response.get().getErrCode()); - channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); + res.setCodeUrl(response.get().getPayData()); } + channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); + } else { + channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); + channelRetMsg.setChannelErrCode(response.get().getErrCode()); + channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); } } catch (JeepayException e) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);