添加pcpay 支付
This commit is contained in:
@@ -1929,57 +1929,110 @@ public class PayService {
|
|||||||
|
|
||||||
String reqbody = "店铺收款码";
|
String reqbody = "店铺收款码";
|
||||||
|
|
||||||
|
if("WECHAT".equals(payType)){
|
||||||
PublicResp<JspayResp> publicResp = thirdPayService.jspay(url, thirdApply.getAppId(), thirdApply.getAppToken(), reqbody, reqbody, orderInfo.getOrderAmount().multiply(new BigDecimal(100)).longValue(), payType, "WECHAT".equals(payType) ? thirdApply.getSmallAppid() : null, userId, ip, DateUtils.getSsdfTimes(), thirdApply.getStoreId(), backUrl, backUrl);
|
PublicResp<JspayResp> publicResp = thirdPayService.jspay(url, thirdApply.getAppId(), thirdApply.getAppToken(), reqbody, reqbody, orderInfo.getOrderAmount().multiply(new BigDecimal(100)).longValue(), payType, "WECHAT".equals(payType) ? thirdApply.getSmallAppid() : null, userId, ip, DateUtils.getSsdfTimes(), thirdApply.getStoreId(), backUrl, backUrl);
|
||||||
|
|
||||||
|
|
||||||
if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) {
|
if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) {
|
||||||
if ("000000".equals(publicResp.getCode())) {
|
if ("000000".equals(publicResp.getCode())) {
|
||||||
JspayResp scanpayResp = publicResp.getObjData();
|
JspayResp scanpayResp = publicResp.getObjData();
|
||||||
if ("TRADE_SUCCESS".equals(scanpayResp.getState())) {
|
if ("TRADE_SUCCESS".equals(scanpayResp.getState())) {
|
||||||
|
|
||||||
payment.setTradeNumber(scanpayResp.getPayOrderId());
|
payment.setTradeNumber(scanpayResp.getPayOrderId());
|
||||||
payment.setUpdatedAt(System.currentTimeMillis());
|
payment.setUpdatedAt(System.currentTimeMillis());
|
||||||
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
|
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
|
||||||
|
|
||||||
//处理支付成功的订单
|
//处理支付成功的订单
|
||||||
orderInfo.setStatus("closed");
|
orderInfo.setStatus("closed");
|
||||||
orderInfo.setPayOrderNo(scanpayResp.getPayOrderId());
|
orderInfo.setPayOrderNo(scanpayResp.getPayOrderId());
|
||||||
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
|
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
|
||||||
|
|
||||||
|
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
return Result.success(CodeEnum.SUCCESS, mapper.readTree(scanpayResp.getPayInfo()));
|
return Result.success(CodeEnum.SUCCESS, mapper.readTree(scanpayResp.getPayInfo()));
|
||||||
|
|
||||||
} else if ("TRADE_AWAIT".equals(scanpayResp.getState())) {
|
} else if ("TRADE_AWAIT".equals(scanpayResp.getState())) {
|
||||||
orderInfo.setStatus("paying");
|
orderInfo.setStatus("paying");
|
||||||
orderInfo.setPayOrderNo(payment.getTradeNumber());
|
orderInfo.setPayOrderNo(payment.getTradeNumber());
|
||||||
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
|
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
|
||||||
|
|
||||||
payment.setTradeNumber(scanpayResp.getPayOrderId());
|
payment.setTradeNumber(scanpayResp.getPayOrderId());
|
||||||
payment.setUpdatedAt(System.currentTimeMillis());
|
payment.setUpdatedAt(System.currentTimeMillis());
|
||||||
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
|
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
|
||||||
|
|
||||||
|
|
||||||
if ("WECHAT".equals(scanpayResp.getPayType())) {
|
if ("WECHAT".equals(scanpayResp.getPayType())) {
|
||||||
orderInfo.setPayType("WECHAT");
|
orderInfo.setPayType("WECHAT");
|
||||||
} else if ("ALIPAY".equals(scanpayResp.getPayType())) {
|
} else if ("ALIPAY".equals(scanpayResp.getPayType())) {
|
||||||
orderInfo.setPayType("ALIPAY");
|
orderInfo.setPayType("ALIPAY");
|
||||||
} else if ("UNIONPAY".equals(scanpayResp.getPayType())) {
|
} else if ("UNIONPAY".equals(scanpayResp.getPayType())) {
|
||||||
orderInfo.setPayType("UNIONPAY");
|
orderInfo.setPayType("UNIONPAY");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
Map<String,Object> map=new HashMap<>();
|
||||||
|
|
||||||
|
map.put("orderInfo",orderInfo);
|
||||||
|
map.put("payInfo",mapper.readTree(scanpayResp.getPayInfo()));
|
||||||
|
return Result.success(CodeEnum.PAYING, map);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else if("ALIPAY".equals(payType)){
|
||||||
|
PublicResp<ApppayResp> publicResp= thirdPayService.apppay(url,thirdApply.getAppId(),thirdApply.getAppToken(),reqbody,reqbody,orderInfo.getOrderAmount().multiply(new BigDecimal(100)).longValue(),payType,ip,DateUtils.getSsdfTimes(),thirdApply.getStoreId(),backUrl,backUrl);
|
||||||
|
|
||||||
|
if (ObjectUtil.isNotNull(publicResp) && ObjectUtil.isNotEmpty(publicResp)) {
|
||||||
|
if ("000000".equals(publicResp.getCode())) {
|
||||||
|
ApppayResp scanpayResp = publicResp.getObjData();
|
||||||
|
if ("TRADE_SUCCESS".equals(scanpayResp.getState())) {
|
||||||
|
|
||||||
|
payment.setTradeNumber(scanpayResp.getPayOrderId());
|
||||||
|
payment.setUpdatedAt(System.currentTimeMillis());
|
||||||
|
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
|
||||||
|
|
||||||
|
//处理支付成功的订单
|
||||||
|
orderInfo.setStatus("closed");
|
||||||
|
orderInfo.setPayOrderNo(scanpayResp.getPayOrderId());
|
||||||
|
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
|
||||||
|
|
||||||
|
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
return Result.success(CodeEnum.SUCCESS, mapper.readTree(scanpayResp.getPayInfo()));
|
||||||
|
|
||||||
Map<String,Object> map=new HashMap<>();
|
} else if ("TRADE_AWAIT".equals(scanpayResp.getState())) {
|
||||||
|
orderInfo.setStatus("paying");
|
||||||
|
orderInfo.setPayOrderNo(payment.getTradeNumber());
|
||||||
|
tbOrderInfoMapper.updateByPrimaryKeySelective(orderInfo);
|
||||||
|
|
||||||
map.put("orderInfo",orderInfo);
|
payment.setTradeNumber(scanpayResp.getPayOrderId());
|
||||||
map.put("payInfo",mapper.readTree(scanpayResp.getPayInfo()));
|
payment.setUpdatedAt(System.currentTimeMillis());
|
||||||
return Result.success(CodeEnum.PAYING, map);
|
tbOrderPaymentMapper.updateByPrimaryKeySelective(payment);
|
||||||
|
|
||||||
|
|
||||||
|
if ("WECHAT".equals(scanpayResp.getPayType())) {
|
||||||
|
orderInfo.setPayType("WECHAT");
|
||||||
|
} else if ("ALIPAY".equals(scanpayResp.getPayType())) {
|
||||||
|
orderInfo.setPayType("ALIPAY");
|
||||||
|
} else if ("UNIONPAY".equals(scanpayResp.getPayType())) {
|
||||||
|
orderInfo.setPayType("UNIONPAY");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
|
Map<String,Object> map=new HashMap<>();
|
||||||
|
|
||||||
|
map.put("orderInfo",orderInfo);
|
||||||
|
map.put("payInfo",mapper.readTree(scanpayResp.getPayInfo()));
|
||||||
|
return Result.success(CodeEnum.PAYING, map);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return Result.fail(CodeEnum.FAIL);
|
return Result.fail(CodeEnum.FAIL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.thirdpay.req;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ChrpayReq implements Serializable {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private String subject;
|
||||||
|
|
||||||
|
private String body;
|
||||||
|
|
||||||
|
private Long amount;
|
||||||
|
|
||||||
|
private String currency="cny";
|
||||||
|
|
||||||
|
private String payType;
|
||||||
|
|
||||||
|
|
||||||
|
private String clientIp;
|
||||||
|
|
||||||
|
private String mchOrderNo;
|
||||||
|
|
||||||
|
private String storeId;
|
||||||
|
|
||||||
|
private String notifyUrl;
|
||||||
|
|
||||||
|
private String returnUrl;
|
||||||
|
|
||||||
|
public ChrpayReq(String subject, String body, Long amount, String currency, String payType, String clientIp, String mchOrderNo, String storeId, String notifyUrl, String returnUrl) {
|
||||||
|
this.subject = subject;
|
||||||
|
this.body = body;
|
||||||
|
this.amount = amount;
|
||||||
|
this.currency = currency;
|
||||||
|
this.payType = payType;
|
||||||
|
this.clientIp = clientIp;
|
||||||
|
this.mchOrderNo = mchOrderNo;
|
||||||
|
this.storeId = storeId;
|
||||||
|
this.notifyUrl = notifyUrl;
|
||||||
|
this.returnUrl = returnUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.thirdpay.resp;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class ChrpayResp implements Serializable {
|
||||||
|
|
||||||
|
private Long amount;
|
||||||
|
|
||||||
|
private String mchOrderNo;
|
||||||
|
|
||||||
|
private String payOrderId;
|
||||||
|
|
||||||
|
private String mercNo;
|
||||||
|
|
||||||
|
private String channelSendNo;
|
||||||
|
|
||||||
|
private String channelTradeNo;
|
||||||
|
|
||||||
|
private String state;
|
||||||
|
|
||||||
|
private String payType;
|
||||||
|
|
||||||
|
private String ifCode;
|
||||||
|
|
||||||
|
private String extParam;
|
||||||
|
|
||||||
|
private String payInfo;
|
||||||
|
|
||||||
|
private String liteInfo;
|
||||||
|
|
||||||
|
private String note;
|
||||||
|
|
||||||
|
private String tradeFee;
|
||||||
|
|
||||||
|
private String storeId;
|
||||||
|
|
||||||
|
private String subject;
|
||||||
|
|
||||||
|
private String drType;
|
||||||
|
|
||||||
|
private String refundAmt;
|
||||||
|
|
||||||
|
private String refundState;
|
||||||
|
|
||||||
|
private String cashFee;
|
||||||
|
|
||||||
|
private String settlementType;
|
||||||
|
}
|
||||||
@@ -36,6 +36,8 @@ public class ThirdPayService {
|
|||||||
private static String jspay="/api/open/payment/jspay";
|
private static String jspay="/api/open/payment/jspay";
|
||||||
|
|
||||||
private static String apppay="/api/open/payment/apppay";
|
private static String apppay="/api/open/payment/apppay";
|
||||||
|
|
||||||
|
private static String chrpay="/api/open/payment/chrpay";
|
||||||
/**
|
/**
|
||||||
* 被扫接口
|
* 被扫接口
|
||||||
* @param url
|
* @param url
|
||||||
@@ -420,6 +422,47 @@ public class ThirdPayService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 聚合收银台
|
||||||
|
* @param url
|
||||||
|
* @param appId
|
||||||
|
* @param key
|
||||||
|
* @param subject
|
||||||
|
* @param body
|
||||||
|
* @param amount
|
||||||
|
* @param clientIp
|
||||||
|
* @param mchOrderNo
|
||||||
|
* @param storeId
|
||||||
|
* @param notifyUrl
|
||||||
|
* @param returnUrl
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public PublicResp<ChrpayResp> chrpay(String url,String appId,String key,String subject, String body, Long amount, String payType, String clientIp, String mchOrderNo, String storeId, String notifyUrl, String returnUrl){
|
||||||
|
ChrpayReq chrpayReq=new ChrpayReq(subject, body, amount, "cny",payType,clientIp, mchOrderNo, storeId, notifyUrl, returnUrl);
|
||||||
|
|
||||||
|
|
||||||
|
PublicParam param=new PublicParam(appId,null,SignTypeEnum.MD5.getValue(), null,DateUtils.getSdfTimes(),"1.0",String.valueOf(System.currentTimeMillis()));
|
||||||
|
try {
|
||||||
|
String str=JSONUtil.toJSONString(sortFields(chrpayReq));
|
||||||
|
param.setBizData(str);
|
||||||
|
String tt = sortFieldsAndPrint(param);
|
||||||
|
String MD5 = tt.concat("appSecret=" + key);
|
||||||
|
log.info("加签原传:{}", MD5);
|
||||||
|
String sign = MD5Util.encrypt(MD5);
|
||||||
|
param.setSign(sign);
|
||||||
|
String reqbody = JSONUtil.toJSONString(param);
|
||||||
|
log.info("请求参数:{}", reqbody);
|
||||||
|
String response = HttpRequest.post(url.concat(chrpay)).body(reqbody).execute().body();
|
||||||
|
log.info("返回结果:{}", response);
|
||||||
|
PublicResp<ChrpayResp> resp =JSONUtil.parseJSONStr2T(response,PublicResp.class);
|
||||||
|
resp.setObjData(JSONUtil.parseJSONStr2T(resp.getBizData(),ChrpayResp.class));
|
||||||
|
return resp;
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user