Commit 29a249b5 authored by xiaoyu's avatar xiaoyu
Browse files

jeepay支付通道优化

parent 2743de4b
...@@ -16,24 +16,20 @@ ...@@ -16,24 +16,20 @@
package com.jeequan.jeepay.pay.channel.jeepluspay.payway; package com.jeequan.jeepay.pay.channel.jeepluspay.payway;
import com.alibaba.fastjson.JSONObject; 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.entity.PayOrder;
import com.jeequan.jeepay.core.exception.BizException; import com.jeequan.jeepay.core.exception.BizException;
import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; 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.exception.JeepayException;
import com.jeequan.jeepay.model.PayOrderCreateReqModel; 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.channel.jeepluspay.JeepluspayPaymentService;
import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.model.MchAppConfigContext;
import com.jeequan.jeepay.pay.rqrs.AbstractRS; import com.jeequan.jeepay.pay.rqrs.AbstractRS;
import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg; import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg;
import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; 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.WxJsapiOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxLiteOrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxJsapiOrderRS;
import com.jeequan.jeepay.pay.util.ApiResBuilder; import com.jeequan.jeepay.pay.util.ApiResBuilder;
import com.jeequan.jeepay.request.PayOrderCreateRequest;
import com.jeequan.jeepay.response.PayOrderCreateResponse; import com.jeequan.jeepay.response.PayOrderCreateResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -52,7 +48,7 @@ public class WxLite extends JeepluspayPaymentService { ...@@ -52,7 +48,7 @@ public class WxLite extends JeepluspayPaymentService {
@Override @Override
public String preCheck(UnifiedOrderRQ rq, PayOrder payOrder) { public String preCheck(UnifiedOrderRQ rq, PayOrder payOrder) {
WxLiteOrderRQ bizRQ = (WxLiteOrderRQ) rq; WxJsapiOrderRQ bizRQ = (WxJsapiOrderRQ) rq;
if (StringUtils.isEmpty(bizRQ.getOpenid())) { if (StringUtils.isEmpty(bizRQ.getOpenid())) {
throw new BizException("[openid]不可为空"); throw new BizException("[openid]不可为空");
} }
...@@ -61,60 +57,38 @@ public class WxLite extends JeepluspayPaymentService { ...@@ -61,60 +57,38 @@ public class WxLite extends JeepluspayPaymentService {
@Override @Override
public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception { public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception {
WxLiteOrderRQ bizRQ = (WxLiteOrderRQ) rq; 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_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);
// 构造函数响应数据 // 构造函数响应数据
WxLiteOrderRS res = ApiResBuilder.buildSuccess(WxLiteOrderRS.class); WxJsapiOrderRS res = ApiResBuilder.buildSuccess(WxJsapiOrderRS.class);
ChannelRetMsg channelRetMsg = new ChannelRetMsg(); ChannelRetMsg channelRetMsg = new ChannelRetMsg();
res.setChannelRetMsg(channelRetMsg); res.setChannelRetMsg(channelRetMsg);
try { try {
// 发起统一下单 // 构建请求数据
PayOrderCreateResponse response = new PayOrderCreateResponse(); PayOrderCreateReqModel model = new PayOrderCreateReqModel();
boolean checkSign = false; // 支付方式
boolean isSuccess = false; model.setWayCode(JeepluspayConfig.WX_LITE);
if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { // 异步通知地址
JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); model.setNotifyUrl(getNotifyUrl());
response = jeepayClient.execute(request); JSONObject channelExtra = new JSONObject();
checkSign = response.checkSign(normalMchParams.getAppSecret()); channelExtra.put("openid", bizRQ.getOpenid());
isSuccess = response.isSuccess(normalMchParams.getAppSecret()); // 微信openId
model.setChannelExtra(channelExtra.toString());
} else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { // 发起统一下单
JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model);
response = jeepayClient.executeByRSA2(request); // 下单返回状态
checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext);
isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey());
}
if (checkSign) {
channelRetMsg.setChannelOrderId(response.get().getPayOrderId());
if (isSuccess) { if (isSuccess) {
// 下单成功 // 下单成功
JSONObject payData = response.getData().getJSONObject("payData"); res.setPayInfo(response.getData().getString("payData"));
res.setPayInfo(payData.toJSONString()); channelRetMsg.setChannelOrderId(response.get().getPayOrderId());
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
} else { } else {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
channelRetMsg.setChannelErrCode(response.get().getErrCode()); channelRetMsg.setChannelErrCode(response.get().getErrCode());
channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); channelRetMsg.setChannelErrMsg(response.get().getErrMsg());
} }
}
} catch (JeepayException e) { } catch (JeepayException e) {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
} }
......
...@@ -15,14 +15,12 @@ ...@@ -15,14 +15,12 @@
*/ */
package com.jeequan.jeepay.pay.channel.jeepluspay.payway; 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.constants.CS;
import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.entity.PayOrder;
import com.jeequan.jeepay.core.model.params.jeepluspay.JeepluspayConfig; 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.exception.JeepayException;
import com.jeequan.jeepay.model.PayOrderCreateReqModel; 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.channel.jeepluspay.JeepluspayPaymentService;
import com.jeequan.jeepay.pay.model.MchAppConfigContext; import com.jeequan.jeepay.pay.model.MchAppConfigContext;
import com.jeequan.jeepay.pay.rqrs.AbstractRS; import com.jeequan.jeepay.pay.rqrs.AbstractRS;
...@@ -31,9 +29,7 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; ...@@ -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.WxNativeOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxNativeOrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxNativeOrderRS;
import com.jeequan.jeepay.pay.util.ApiResBuilder; import com.jeequan.jeepay.pay.util.ApiResBuilder;
import com.jeequan.jeepay.request.PayOrderCreateRequest;
import com.jeequan.jeepay.response.PayOrderCreateResponse; import com.jeequan.jeepay.response.PayOrderCreateResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/* /*
...@@ -54,45 +50,23 @@ public class WxNative extends JeepluspayPaymentService { ...@@ -54,45 +50,23 @@ public class WxNative extends JeepluspayPaymentService {
@Override @Override
public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception { public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) throws Exception {
WxNativeOrderRQ bizRQ = (WxNativeOrderRQ) rq; 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); WxNativeOrderRS res = ApiResBuilder.buildSuccess(WxNativeOrderRS.class);
ChannelRetMsg channelRetMsg = new ChannelRetMsg(); ChannelRetMsg channelRetMsg = new ChannelRetMsg();
res.setChannelRetMsg(channelRetMsg); res.setChannelRetMsg(channelRetMsg);
try { try {
// 发起统一下单 // 构建请求数据
PayOrderCreateResponse response = new PayOrderCreateResponse(); PayOrderCreateReqModel model = new PayOrderCreateReqModel();
boolean checkSign = false; // 支付方式
boolean isSuccess = false; model.setWayCode(JeepluspayConfig.WX_NATIVE);
if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { // 异步通知地址
JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); model.setNotifyUrl(getNotifyUrl());
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()); PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model);
response = jeepayClient.executeByRSA2(request); // 下单返回状态
checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey()); Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext);
isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey());
}
if (checkSign) {
channelRetMsg.setChannelOrderId(response.get().getPayOrderId());
if (isSuccess) { if (isSuccess) {
// 下单成功 // 下单成功
// 二维码图片地址 // 二维码图片地址
...@@ -101,13 +75,13 @@ public class WxNative extends JeepluspayPaymentService { ...@@ -101,13 +75,13 @@ public class WxNative extends JeepluspayPaymentService {
} else { } else {
res.setCodeUrl(response.get().getPayData()); res.setCodeUrl(response.get().getPayData());
} }
channelRetMsg.setChannelOrderId(response.get().getPayOrderId());
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
} else { } else {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
channelRetMsg.setChannelErrCode(response.get().getErrCode()); channelRetMsg.setChannelErrCode(response.get().getErrCode());
channelRetMsg.setChannelErrMsg(response.get().getErrMsg()); channelRetMsg.setChannelErrMsg(response.get().getErrMsg());
} }
}
} catch (JeepayException e) { } catch (JeepayException e) {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment