jeepay支付通道优化

This commit is contained in:
xiaoyu 2022-08-24 14:11:44 +08:00
parent 2743de4b65
commit 29a249b541
22 changed files with 462 additions and 704 deletions

View File

@ -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, '计全付');

View File

@ -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, '计全付');

View File

@ -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网站

View File

@ -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();
}

View File

@ -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);

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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());

View File

@ -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());

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);