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

jeepay支付通道优化

parent 2743de4b
...@@ -761,7 +761,7 @@ INSERT INTO t_pay_interface_define (if_code, if_name, is_mch_mode, is_isv_mode, ...@@ -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, VALUES ('jeepluspay', '计全付', 1, 0, 1,
NULL, NULL,
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"}]', '[{"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, '计全付'); 'http://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/jeepluspay.svg', '#0CACFF', 1, '计全付');
...@@ -262,6 +262,6 @@ INSERT INTO t_pay_interface_define (if_code, if_name, is_mch_mode, is_isv_mode, ...@@ -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, VALUES ('jeepluspay', '计全付', 1, 0, 1,
NULL, NULL,
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"}]', '[{"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, '计全付'); 'http://jeequan.oss-cn-beijing.aliyuncs.com/jeepay/img/jeepluspay.svg', '#0CACFF', 1, '计全付');
...@@ -36,12 +36,13 @@ public class JeepluspayConfig { ...@@ -36,12 +36,13 @@ public class JeepluspayConfig {
public static String PAY_STATE_FAIL = "3"; // 3-支付失败 public static String PAY_STATE_FAIL = "3"; // 3-支付失败
/** 退款订单状态 */ /** 退款订单状态 */
public static String Refund_STATE_SUCCESS = "2"; // 2-退款成功 public static String REFUND_STATE_SUCCESS = "2"; // 2-退款成功
public static String Refund_STATE_FAIL = "3"; // 3-退款失败 public static String REFUND_STATE_FAIL = "3"; // 3-退款失败
/** 支付方式 */ /** 支付方式 */
public static String ALI_BAR = "ALI_BAR"; // 支付宝条码 public static String ALI_BAR = "ALI_BAR"; // 支付宝条码
public static String ALI_JSAPI = "ALI_JSAPI"; // 支付宝生活号 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_APP = "ALI_APP"; // 支付宝APP
public static String ALI_WAP = "ALI_WAP"; // 支付宝WAP public static String ALI_WAP = "ALI_WAP"; // 支付宝WAP
public static String ALI_PC = "ALI_PC"; // 支付宝PC网站 public static String ALI_PC = "ALI_PC"; // 支付宝PC网站
......
...@@ -42,7 +42,7 @@ public class JeepluspayNormalMchParams extends NormalMchParams { ...@@ -42,7 +42,7 @@ public class JeepluspayNormalMchParams extends NormalMchParams {
private String signType; private String signType;
/** md5秘钥 */ /** md5秘钥 */
private String AppSecret; private String appSecret;
/** RSA2: 应用私钥 */ /** RSA2: 应用私钥 */
private String rsa2AppPrivateKey; private String rsa2AppPrivateKey;
...@@ -55,8 +55,8 @@ public class JeepluspayNormalMchParams extends NormalMchParams { ...@@ -55,8 +55,8 @@ public class JeepluspayNormalMchParams extends NormalMchParams {
public String deSenData() { public String deSenData() {
JeepluspayNormalMchParams mchParams = this; JeepluspayNormalMchParams mchParams = this;
if (StringUtils.isNotBlank(this.AppSecret)) { if (StringUtils.isNotBlank(this.appSecret)) {
mchParams.setAppSecret(StringKit.str2Star(this.AppSecret, 4, 4, 6)); mchParams.setAppSecret(StringKit.str2Star(this.appSecret, 4, 4, 6));
} }
return ((JSONObject) JSON.toJSON(mchParams)).toJSONString(); return ((JSONObject) JSON.toJSON(mchParams)).toJSONString();
} }
......
...@@ -80,17 +80,10 @@ public class JeepluspayChannelNoticeService extends AbstractChannelNoticeService ...@@ -80,17 +80,10 @@ public class JeepluspayChannelNoticeService extends AbstractChannelNoticeService
// 验签成功后判断上游订单状态 // 验签成功后判断上游订单状态
ResponseEntity okResponse = textResp("success"); ResponseEntity okResponse = textResp("success");
// 支付状态: 0-订单生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭
String status = paramsJson.getString("state");
ChannelRetMsg result = new ChannelRetMsg(); ChannelRetMsg result = new ChannelRetMsg();
result.setResponseEntity(okResponse); result.setResponseEntity(okResponse);
result.setChannelOrderId(paramsJson.getString("payOrderId")); result.setChannelOrderId(paramsJson.getString("payOrderId"));
result.setChannelState(ChannelRetMsg.ChannelState.WAITING); // 默认支付中 result.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS);
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);
}
return result; return result;
} catch (Exception e) { } catch (Exception e) {
log.error("error", e); log.error("error", e);
...@@ -119,6 +112,12 @@ public class JeepluspayChannelNoticeService extends AbstractChannelNoticeService ...@@ -119,6 +112,12 @@ public class JeepluspayChannelNoticeService extends AbstractChannelNoticeService
log.info("验签失败! 回调参数:parameter = {}", jsonParams); log.info("验签失败! 回调参数:parameter = {}", jsonParams);
return false; 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; return true;
} catch (Exception e) { } catch (Exception e) {
log.error("error", e); log.error("error", e);
......
...@@ -81,20 +81,11 @@ public class JeepluspayChannelRefundNoticeService extends AbstractChannelRefundN ...@@ -81,20 +81,11 @@ public class JeepluspayChannelRefundNoticeService extends AbstractChannelRefundN
//验签成功后判断上游订单状态 //验签成功后判断上游订单状态
ResponseEntity okResponse = textResp("success"); ResponseEntity okResponse = textResp("success");
// 退款状态 0-订单生成 1-退款中 2-退款成功 3-退款失败 4-退款关闭
String status = jsonParams.getString("state");
ChannelRetMsg result = new ChannelRetMsg(); ChannelRetMsg result = new ChannelRetMsg();
result.setChannelOrderId(jsonParams.getString("refundOrderId")); //渠道订单号 result.setChannelOrderId(jsonParams.getString("refundOrderId")); //渠道订单号
result.setResponseEntity(okResponse); //响应数据 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; return result;
} catch (Exception e) { } catch (Exception e) {
log.error("error", e); log.error("error", e);
...@@ -123,6 +114,12 @@ public class JeepluspayChannelRefundNoticeService extends AbstractChannelRefundN ...@@ -123,6 +114,12 @@ public class JeepluspayChannelRefundNoticeService extends AbstractChannelRefundN
log.info("验签失败! 回调参数:parameter = {}", jsonParams); log.info("验签失败! 回调参数:parameter = {}", jsonParams);
return false; 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; return true;
} catch (Exception e) { } catch (Exception e) {
log.error("error", e); log.error("error", e);
......
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;
}
}
...@@ -63,23 +63,20 @@ public class JeepluspayPayOrderQueryService implements IPayOrderQueryService { ...@@ -63,23 +63,20 @@ public class JeepluspayPayOrderQueryService implements IPayOrderQueryService {
request.setBizModel(model); request.setBizModel(model);
// 发起请求 // 发起请求
PayOrderQueryResponse response = new PayOrderQueryResponse(); PayOrderQueryResponse response = new PayOrderQueryResponse();
boolean checkSign = false; if (StringUtils.isEmpty(normalMchParams.getSignType()) || normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE)) {
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()); JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase());
response = jeepayClient.execute(request); response = jeepayClient.execute(request);
checkSign = response.checkSign(normalMchParams.getAppSecret());
isSuccess = response.isSuccess(normalMchParams.getAppSecret());
} else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) {
JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase());
response = jeepayClient.executeByRSA2(request); 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()))) { if (JeepluspayConfig.PAY_STATE_SUCCESS.equals(String.valueOf(response.get().getState()))) {
return ChannelRetMsg.confirmSuccess(response.get().getPayOrderId()); return ChannelRetMsg.confirmSuccess(response.get().getPayOrderId());
......
...@@ -76,32 +76,30 @@ public class JeepluspayRefundService extends AbstractRefundService { ...@@ -76,32 +76,30 @@ public class JeepluspayRefundService extends AbstractRefundService {
try { try {
// 发起退款 // 发起退款
RefundOrderCreateResponse response = new RefundOrderCreateResponse(); RefundOrderCreateResponse response = new RefundOrderCreateResponse();
boolean checkSign = false;
boolean isSuccess = false;
if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) {
JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase());
response = jeepayClient.execute(request); response = jeepayClient.execute(request);
checkSign = response.checkSign(normalMchParams.getAppSecret());
isSuccess = response.isSuccess(normalMchParams.getAppSecret());
} else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) {
JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase());
response = jeepayClient.executeByRSA2(request); response = jeepayClient.executeByRSA2(request);
checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey());
isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey());
} }
if (checkSign) { // 下单返回状态
channelRetMsg.setChannelOrderId(response.get().getRefundOrderId()); Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext);
// 退款发送成功
if (isSuccess) { // 退款发送成功
if (isSuccess) {
if (JeepluspayConfig.REFUND_STATE_SUCCESS.equals(response.get().getState().toString())) {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS); 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) { } catch (JeepayException e) {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
} }
...@@ -120,22 +118,19 @@ public class JeepluspayRefundService extends AbstractRefundService { ...@@ -120,22 +118,19 @@ public class JeepluspayRefundService extends AbstractRefundService {
request.setBizModel(model); request.setBizModel(model);
// 发起请求 // 发起请求
RefundOrderQueryResponse response = new RefundOrderQueryResponse(); RefundOrderQueryResponse response = new RefundOrderQueryResponse();
boolean checkSign = false;
boolean isSuccess = false;
if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) { if (normalMchParams.getSignType().equals(JeepluspayConfig.DEFAULT_SIGN_TYPE) || StringUtils.isEmpty(normalMchParams.getSignType())) {
JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase()); JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getAppSecret(), Jeepay.getApiBase());
response = jeepayClient.execute(request); response = jeepayClient.execute(request);
checkSign = response.checkSign(normalMchParams.getAppSecret());
isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey());
} else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) { } else if (normalMchParams.getSignType().equals(JeepluspayConfig.SIGN_TYPE_RSA2)) {
JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase());
response = jeepayClient.executeByRSA2(request); 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())) { if (JeepluspayConfig.PAY_STATE_SUCCESS.equals(response.get().getState().toString())) {
return ChannelRetMsg.confirmSuccess(response.get().getRefundOrderId()); return ChannelRetMsg.confirmSuccess(response.get().getRefundOrderId());
......
...@@ -16,14 +16,12 @@ ...@@ -16,14 +16,12 @@
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.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.msg.ChannelRetMsg; ...@@ -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.UnifiedOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliAppOrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliAppOrderRS;
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;
/* /*
...@@ -53,59 +49,38 @@ public class AliApp extends JeepluspayPaymentService { ...@@ -53,59 +49,38 @@ public class AliApp extends JeepluspayPaymentService {
@Override @Override
public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) { 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); AliAppOrderRS res = ApiResBuilder.buildSuccess(AliAppOrderRS.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.ALI_APP);
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); // 支付宝app支付参数
checkSign = response.checkSign(normalMchParams.getAppSecret()); JSONObject channelExtra = new JSONObject();
isSuccess = response.isSuccess(normalMchParams.getAppSecret()); channelExtra.put("payDataType", CS.PAY_DATA_TYPE.ALI_APP);
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) { if (isSuccess) {
// 下单成功
String payData = response.getData().getString("payData");
res.setPayData(payData);
channelRetMsg.setChannelAttach(payData);
channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); channelRetMsg.setChannelOrderId(response.get().getPayOrderId());
if (isSuccess) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
// 下单成功 } else {
JSONObject payData = response.getData().getJSONObject("payData"); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
res.setPayData(payData.toJSONString()); channelRetMsg.setChannelErrCode(response.get().getErrCode());
channelRetMsg.setChannelAttach(payData.toJSONString()); 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) { } catch (JeepayException e) {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
......
...@@ -16,15 +16,12 @@ ...@@ -16,15 +16,12 @@
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;
...@@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; ...@@ -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.AliBarOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliBarOrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliBarOrderRS;
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.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -60,56 +56,41 @@ public class AliBar extends JeepluspayPaymentService { ...@@ -60,56 +56,41 @@ public class AliBar extends JeepluspayPaymentService {
@Override @Override
public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) { public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) {
AliBarOrderRQ bizRQ = (AliBarOrderRQ) rq; 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); AliBarOrderRS res = ApiResBuilder.buildSuccess(AliBarOrderRS.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.ALI_BAR);
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()); JSONObject channelExtra = new JSONObject();
isSuccess = response.isSuccess(normalMchParams.getAppSecret()); channelExtra.put("authCode", bizRQ.getAuthCode());
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) { if (JeepluspayConfig.PAY_STATE_SUCCESS.equals(response.getData().getString("orderState"))) {
// 下单成功 // 支付成功
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS);
} else { }else {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); // 支付中
channelRetMsg.setChannelErrCode(response.get().getErrCode()); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
channelRetMsg.setChannelErrMsg(response.get().getErrMsg());
} }
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) { } catch (JeepayException e) {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
......
...@@ -16,15 +16,12 @@ ...@@ -16,15 +16,12 @@
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;
...@@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; ...@@ -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.AliJsapiOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliJsapiOrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliJsapiOrderRS;
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.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -60,59 +56,38 @@ public class AliJsapi extends JeepluspayPaymentService { ...@@ -60,59 +56,38 @@ public class AliJsapi 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 {
AliJsapiOrderRQ bizRQ = (AliJsapiOrderRQ) rq; 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); AliJsapiOrderRS res = ApiResBuilder.buildSuccess(AliJsapiOrderRS.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.ALI_JSAPI);
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); // 支付宝用户ID
checkSign = response.checkSign(normalMchParams.getAppSecret()); JSONObject channelExtra = new JSONObject();
isSuccess = response.isSuccess(normalMchParams.getAppSecret()); channelExtra.put("buyerUserId", bizRQ.getBuyerUserId());
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) { if (isSuccess) {
// 下单成功
JSONObject payData = response.getData().getJSONObject("payData");
res.setAlipayTradeNo(payData.getString("alipayTradeNo"));
res.setPayData(payData.toJSONString());
channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); channelRetMsg.setChannelOrderId(response.get().getPayOrderId());
if (isSuccess) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
// 下单成功 } else {
JSONObject payData = response.getData().getJSONObject("payData"); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
res.setAlipayTradeNo(payData.getString("alipayTradeNo")); channelRetMsg.setChannelErrCode(response.get().getErrCode());
res.setPayData(payData.toJSONString()); 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) { } catch (JeepayException e) {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
......
...@@ -16,15 +16,12 @@ ...@@ -16,15 +16,12 @@
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;
...@@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; ...@@ -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.AliLiteOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliLiteOrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliLiteOrderRS;
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.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -60,59 +56,38 @@ public class AliLite extends JeepluspayPaymentService { ...@@ -60,59 +56,38 @@ public class AliLite 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 {
AliLiteOrderRQ bizRQ = (AliLiteOrderRQ) rq; 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); AliLiteOrderRS res = ApiResBuilder.buildSuccess(AliLiteOrderRS.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.ALI_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); // 支付宝用户ID
checkSign = response.checkSign(normalMchParams.getAppSecret()); JSONObject channelExtra = new JSONObject();
isSuccess = response.isSuccess(normalMchParams.getAppSecret()); channelExtra.put("buyerUserId", bizRQ.getBuyerUserId());
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) { if (isSuccess) {
// 下单成功
JSONObject payData = response.getData().getJSONObject("payData");
res.setAlipayTradeNo(payData.getString("alipayTradeNo"));
res.setPayData(payData.toJSONString());
channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); channelRetMsg.setChannelOrderId(response.get().getPayOrderId());
if (isSuccess) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
// 下单成功 } else {
JSONObject payData = response.getData().getJSONObject("payData"); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
res.setAlipayTradeNo(payData.getString("alipayTradeNo")); channelRetMsg.setChannelErrCode(response.get().getErrCode());
res.setPayData(payData.toJSONString()); 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) { } 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;
...@@ -30,9 +28,7 @@ import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg; ...@@ -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.UnifiedOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliPcOrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliPcOrderRS;
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;
/* /*
...@@ -52,62 +48,44 @@ public class AliPc extends JeepluspayPaymentService { ...@@ -52,62 +48,44 @@ public class AliPc extends JeepluspayPaymentService {
@Override @Override
public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) { 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); AliPcOrderRS res = ApiResBuilder.buildSuccess(AliPcOrderRS.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.ALI_PC);
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) { if (isSuccess) {
channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); // 下单成功
if (isSuccess) { String payUrl = response.getData().getString("payData");
// 下单成功 String payDataType = response.getData().getString("payDataType");
String payUrl = response.getData().getString("payData"); if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) {
String payDataType = response.getData().getString("payDataType"); //表单方式
if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) { //表单方式 res.setFormContent(payUrl);
res.setFormContent(payUrl); } else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) {
} else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) { //二维码图片地址 //二维码图片地址
res.setCodeImgUrl(payUrl); res.setCodeImgUrl(payUrl);
} else { // 默认都为 payUrl方式
res.setPayUrl(payUrl);
}
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
} else { } else {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); // 默认都为 payUrl方式
channelRetMsg.setChannelErrCode(response.get().getErrCode()); res.setPayUrl(payUrl);
channelRetMsg.setChannelErrMsg(response.get().getErrMsg());
} }
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) { } 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.AliQrOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliQrOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliQrOrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliQrOrderRS;
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,59 +50,37 @@ public class AliQr extends JeepluspayPaymentService { ...@@ -54,59 +50,37 @@ public class AliQr 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 {
AliQrOrderRQ aliQrOrderRQ = (AliQrOrderRQ) rq; 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); AliQrOrderRS res = ApiResBuilder.buildSuccess(AliQrOrderRS.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.ALI_QR);
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) { if (isSuccess) {
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()));
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);
} else { } else {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); res.setCodeUrl(response.get().getPayData());
channelRetMsg.setChannelErrCode(response.get().getErrCode());
channelRetMsg.setChannelErrMsg(response.get().getErrMsg());
} }
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) { } 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;
...@@ -30,9 +28,7 @@ import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg; ...@@ -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.UnifiedOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliWapOrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.AliWapOrderRS;
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;
/* /*
...@@ -52,62 +48,44 @@ public class AliWap extends JeepluspayPaymentService { ...@@ -52,62 +48,44 @@ public class AliWap extends JeepluspayPaymentService {
@Override @Override
public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) { 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); AliWapOrderRS res = ApiResBuilder.buildSuccess(AliWapOrderRS.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.ALI_WAP);
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) { if (isSuccess) {
channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); // 下单成功
if (isSuccess) { String payUrl = response.getData().getString("payData");
// 下单成功 String payDataType = response.getData().getString("payDataType");
String payUrl = response.getData().getString("payData"); if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) {
String payDataType = response.getData().getString("payDataType"); //表单方式
if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) { //表单方式 res.setFormContent(payUrl);
res.setFormContent(payUrl); } else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) {
} else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) { //二维码图片地址 //二维码图片地址
res.setCodeImgUrl(payUrl); res.setCodeImgUrl(payUrl);
} else { // 默认都为 payUrl方式
res.setPayUrl(payUrl);
}
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
} else { } else {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); // 默认都为 payUrl方式
channelRetMsg.setChannelErrCode(response.get().getErrCode()); res.setPayUrl(payUrl);
channelRetMsg.setChannelErrMsg(response.get().getErrMsg());
} }
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) { } catch (JeepayException e) {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
......
...@@ -16,14 +16,12 @@ ...@@ -16,14 +16,12 @@
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.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.msg.ChannelRetMsg; ...@@ -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.UnifiedOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxAppOrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxAppOrderRS;
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;
/* /*
...@@ -53,60 +49,39 @@ public class WxApp extends JeepluspayPaymentService { ...@@ -53,60 +49,39 @@ public class WxApp 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 {
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); WxAppOrderRS res = ApiResBuilder.buildSuccess(WxAppOrderRS.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_APP);
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); // 微信app支付参数
checkSign = response.checkSign(normalMchParams.getAppSecret()); JSONObject channelExtra = new JSONObject();
isSuccess = response.isSuccess(normalMchParams.getAppSecret()); channelExtra.put("payDataType", CS.PAY_DATA_TYPE.WX_APP);
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) { if (isSuccess) {
// 下单成功
JSONObject resJSON = new JSONObject();
resJSON.put("package", response.getData().getString("payData"));
res.setPayInfo(resJSON.toJSONString());
channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); channelRetMsg.setChannelOrderId(response.get().getPayOrderId());
if (isSuccess) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
// 下单成功 } else {
JSONObject payData = response.getData().getJSONObject("payData"); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
JSONObject resJSON = new JSONObject(); channelRetMsg.setChannelErrCode(response.get().getErrCode());
resJSON.put("package", payData.toJSONString()); channelRetMsg.setChannelErrMsg(response.get().getErrMsg());
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());
}
} }
} catch (JeepayException e) { } catch (JeepayException e) {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
......
...@@ -16,15 +16,12 @@ ...@@ -16,15 +16,12 @@
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;
...@@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; ...@@ -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.AliBarOrderRS;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxBarOrderRQ; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxBarOrderRQ;
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.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -60,56 +56,42 @@ public class WxBar extends JeepluspayPaymentService { ...@@ -60,56 +56,42 @@ public class WxBar 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 {
WxBarOrderRQ bizRQ = (WxBarOrderRQ) rq; 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); AliBarOrderRS res = ApiResBuilder.buildSuccess(AliBarOrderRS.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_BAR);
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("authCode", bizRQ.getAuthCode());
isSuccess = response.isSuccess(normalMchParams.getAppSecret()); // 用户付款码值
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) { if (isSuccess) {
channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); // 下单成功
if (isSuccess) { if (JeepluspayConfig.PAY_STATE_SUCCESS.equals(response.getData().getString("orderState"))) {
// 下单成功 // 支付成功
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_SUCCESS);
} else { }else {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); // 支付中
channelRetMsg.setChannelErrCode(response.get().getErrCode()); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
channelRetMsg.setChannelErrMsg(response.get().getErrMsg());
} }
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) { } 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;
...@@ -30,9 +28,7 @@ import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg; ...@@ -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.UnifiedOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxH5OrderRS; import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxH5OrderRS;
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;
/* /*
...@@ -52,63 +48,44 @@ public class WxH5 extends JeepluspayPaymentService { ...@@ -52,63 +48,44 @@ public class WxH5 extends JeepluspayPaymentService {
@Override @Override
public AbstractRS pay(UnifiedOrderRQ rq, PayOrder payOrder, MchAppConfigContext mchAppConfigContext) { 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); WxH5OrderRS res = ApiResBuilder.buildSuccess(WxH5OrderRS.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_H5);
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) { if (isSuccess) {
channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); // 下单成功
if (isSuccess) { String payUrl = response.getData().getString("payData");
// 下单成功 String payDataType = response.getData().getString("payDataType");
String payUrl = response.getData().getString("payData"); if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) {
String payDataType = response.getData().getString("payDataType"); //表单方式
if (CS.PAY_DATA_TYPE.FORM.equals(payDataType)) { //表单方式 res.setFormContent(payUrl);
res.setFormContent(payUrl); } else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) {
} else if (CS.PAY_DATA_TYPE.CODE_IMG_URL.equals(payDataType)) { //二维码图片地址 //二维码图片地址
res.setCodeImgUrl(payUrl); res.setCodeImgUrl(payUrl);
} else { // 默认都为 payUrl方式
res.setPayUrl(payUrl);
}
// 支付中
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
} else { } else {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); // 默认都为 payUrl方式
channelRetMsg.setChannelErrCode(response.get().getErrCode()); res.setPayUrl(payUrl);
channelRetMsg.setChannelErrMsg(response.get().getErrMsg());
} }
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) { } catch (JeepayException e) {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
......
...@@ -16,15 +16,12 @@ ...@@ -16,15 +16,12 @@
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;
...@@ -33,7 +30,6 @@ import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ; ...@@ -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.WxJsapiOrderRQ;
import com.jeequan.jeepay.pay.rqrs.payorder.payway.WxJsapiOrderRS; 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;
...@@ -62,58 +58,38 @@ public class WxJsapi extends JeepluspayPaymentService { ...@@ -62,58 +58,38 @@ public class WxJsapi 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 {
WxJsapiOrderRQ bizRQ = (WxJsapiOrderRQ) 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_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); WxJsapiOrderRS res = ApiResBuilder.buildSuccess(WxJsapiOrderRS.class);
ChannelRetMsg channelRetMsg = new ChannelRetMsg(); ChannelRetMsg channelRetMsg = new ChannelRetMsg();
res.setChannelRetMsg(channelRetMsg); res.setChannelRetMsg(channelRetMsg);
try { 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(); PayOrderCreateResponse response = JeepluspayKit.payRequest(payOrder, mchAppConfigContext, model);
boolean checkSign = false; // 下单返回状态
boolean isSuccess = false; Boolean isSuccess = JeepluspayKit.checkPayResp(response, mchAppConfigContext);
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)) { if (isSuccess) {
JeepayClient jeepayClient = JeepayClient.getInstance(normalMchParams.getAppId(), normalMchParams.getRsa2AppPrivateKey(), Jeepay.getApiBase()); // 下单成功
response = jeepayClient.executeByRSA2(request); res.setPayInfo(response.getData().getString("payData"));
checkSign = response.checkSignByRsa2(normalMchParams.getRsa2PayPublicKey());
isSuccess = response.isSuccessByRsa2(normalMchParams.getRsa2PayPublicKey());
}
if (checkSign) {
channelRetMsg.setChannelOrderId(response.get().getPayOrderId()); channelRetMsg.setChannelOrderId(response.get().getPayOrderId());
if (isSuccess) { channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING);
// 下单成功 } else {
JSONObject payData = response.getData().getJSONObject("payData"); channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
res.setPayInfo(payData.toJSONString()); channelRetMsg.setChannelErrCode(response.get().getErrCode());
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.WAITING); channelRetMsg.setChannelErrMsg(response.get().getErrMsg());
} else {
channelRetMsg.setChannelState(ChannelRetMsg.ChannelState.CONFIRM_FAIL);
channelRetMsg.setChannelErrCode(response.get().getErrCode());
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