记得上下班打卡 | git大法好,push需谨慎

Commit dba268c5 authored by zhengfuxin's avatar zhengfuxin

覆盖

parent 059b0cef
...@@ -50,7 +50,11 @@ public class DragonServiceCommonBiz { ...@@ -50,7 +50,11 @@ public class DragonServiceCommonBiz {
orders.setClientIp(dragonPayBaseReqDto.getClientIp()); orders.setClientIp(dragonPayBaseReqDto.getClientIp());
orders.setNotifyUrl(dragonPayBaseReqDto.getNotifyUrl()); orders.setNotifyUrl(dragonPayBaseReqDto.getNotifyUrl());
orders.setNotifyStatus(Integer.valueOf(DragonConstant.PayNotifyStatusEnum.NOTIFY_INIT.getCode())); orders.setNotifyStatus(Integer.valueOf(DragonConstant.PayNotifyStatusEnum.NOTIFY_INIT.getCode()));
if(dragonPayBaseReqDto.getAppIdType().equals("b")){
orders.setPaymentType((dragonPayBaseReqDto.getDeviceFrom()+dragonPayBaseReqDto.getAppIdType()+dragonPayBaseReqDto.getPayType()).toUpperCase());
}else{
orders.setPaymentType((dragonPayBaseReqDto.getDeviceFrom()+dragonPayBaseReqDto.getPayType()).toUpperCase()); orders.setPaymentType((dragonPayBaseReqDto.getDeviceFrom()+dragonPayBaseReqDto.getPayType()).toUpperCase());
}
// orders.setPaymentId(); // orders.setPaymentId();
orders.setPaymentAt(LocalDateTime.now()); orders.setPaymentAt(LocalDateTime.now());
// orders.setFinishedAt(); // orders.setFinishedAt();
......
...@@ -41,7 +41,11 @@ public class WepayBiz{ ...@@ -41,7 +41,11 @@ public class WepayBiz{
Map<String, Object> respMap = new HashMap<>(); Map<String, Object> respMap = new HashMap<>();
SortedMap<String, Object> paramMap = new TreeMap<>(); SortedMap<String, Object> paramMap = new TreeMap<>();
paramMap.put("appid", appid); paramMap.put("appid", appid);
if (outTradeNo.contains("b")) {
paramMap.put("mch_id", PayWepayUtils.getInstance().getMerchantBId());
}else{
paramMap.put("mch_id", merchantId); paramMap.put("mch_id", merchantId);
}
String nonce_str = PayWepayUtils.getInstance().getNonceStr(); String nonce_str = PayWepayUtils.getInstance().getNonceStr();
paramMap.put("nonce_str", nonce_str); paramMap.put("nonce_str", nonce_str);
paramMap.put("out_trade_no", outTradeNo); paramMap.put("out_trade_no", outTradeNo);
......
...@@ -154,7 +154,11 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -154,7 +154,11 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
protected SortedMap<String, Object> buildRequestParamMap(DragonPayBaseReqDto dragonPayBaseReqDto){ protected SortedMap<String, Object> buildRequestParamMap(DragonPayBaseReqDto dragonPayBaseReqDto){
String nonceStr = PayWepayUtils.getInstance().getNonceStr(); String nonceStr = PayWepayUtils.getInstance().getNonceStr();
SortedMap<String, Object> parameters = new TreeMap<>(); SortedMap<String, Object> parameters = new TreeMap<>();
if(dragonPayBaseReqDto.getAppIdType().equals("b")){
parameters.put("mch_id", PayWepayUtils.getInstance().getMerchantBId());
}else{
parameters.put("mch_id", PayWepayUtils.getInstance().getMerchantId()); parameters.put("mch_id", PayWepayUtils.getInstance().getMerchantId());
}
parameters.put("nonce_str", nonceStr); parameters.put("nonce_str", nonceStr);
parameters.put("spbill_create_ip", dragonPayBaseReqDto.getClientIp()); parameters.put("spbill_create_ip", dragonPayBaseReqDto.getClientIp());
parameters.put("total_fee", dragonPayBaseReqDto.getPrice().multiply(BigDecimal.valueOf(100L)).intValue()+""); parameters.put("total_fee", dragonPayBaseReqDto.getPrice().multiply(BigDecimal.valueOf(100L)).intValue()+"");
...@@ -193,7 +197,12 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy { ...@@ -193,7 +197,12 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
@Override @Override
public DragonPayOrderQueryRespDto checkOrderStatus(String code) { public DragonPayOrderQueryRespDto checkOrderStatus(String code) {
DragonOrdersDto ordersDto = dataUtils.getPayOrderByCode(code); DragonOrdersDto ordersDto = dataUtils.getPayOrderByCode(code);
Map<String, Object> resultMap = wepayBiz.tradeQuery(code,this.getAppid()); Map<String, Object> resultMap=null;
if(code.contains("b")){
resultMap = wepayBiz.tradeQuery(code, PayWepayUtils.getInstance().getAPPLETB_APPID());
}else{
resultMap = wepayBiz.tradeQuery(code,this.getAppid());
}
DragonPayOrderQueryRespDto respDto = dragonPayBiz.buildPayOrderQueryRespDto(ordersDto); DragonPayOrderQueryRespDto respDto = dragonPayBiz.buildPayOrderQueryRespDto(ordersDto);
Object returnCode = resultMap.get("return_code"); Object returnCode = resultMap.get("return_code");
......
...@@ -32,7 +32,11 @@ public class WepayStrategyAppletImpl extends AbstractWepayStrategy{ ...@@ -32,7 +32,11 @@ public class WepayStrategyAppletImpl extends AbstractWepayStrategy{
@Override @Override
SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap, DragonPayBaseReqDto dragonPayBaseReqDto) { SortedMap<String, Object> appendRequestParam(SortedMap<String, Object> requestMap, DragonPayBaseReqDto dragonPayBaseReqDto) {
requestMap.put("trade_type", "JSAPI"); requestMap.put("trade_type", "JSAPI");
if(dragonPayBaseReqDto.getAppIdType().equals("b")){
requestMap.put("appid", PayWepayUtils.getInstance().getAPPLETB_APPID());
}else{
requestMap.put("appid", PayWepayUtils.getInstance().getAPPLET_APP_ID()); requestMap.put("appid", PayWepayUtils.getInstance().getAPPLET_APP_ID());
}
requestMap.put("openid", dragonPayBaseReqDto.getOpenId()); //只有trade_type="JSAPI"时必须传 requestMap.put("openid", dragonPayBaseReqDto.getOpenId()); //只有trade_type="JSAPI"时必须传
return requestMap; return requestMap;
} }
......
/*
package com.liquidnet.service.dragon.controller; package com.liquidnet.service.dragon.controller;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import com.liquidnet.service.dragon.dto.DragonPayOrderQueryRespDto;
import com.liquidnet.service.dragon.service.IDragonOrdersService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
*/
/** /**
* @author AnJiabin <anjiabin@zhengzai.tv> * @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0 * @version V1.0
...@@ -8,19 +30,22 @@ package com.liquidnet.service.dragon.controller; ...@@ -8,19 +30,22 @@ package com.liquidnet.service.dragon.controller;
* @Package com.liquidnet.service.dragon.controller * @Package com.liquidnet.service.dragon.controller
* @Copyright: LightNet @ Copyright (c) 2021 * @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/7/9 12:29 * @date 2021/7/9 12:29
*/ *//*
/*@Slf4j
@Slf4j
@RestController @RestController
@RequestMapping("pay") @RequestMapping("pay")
public class PayController { public class PayController {
@Autowired @Autowired
private IDragonOrdersService dragonOrdersService; private IDragonOrdersService dragonOrdersService;
*//** */
/**
* 电脑网页支付宝支付 * 电脑网页支付宝支付
* *
* @return * @return
*//* *//*
@PostMapping("/dragonPay") @PostMapping("/dragonPay")
@ApiOperation("Dragon支付") @ApiOperation("Dragon支付")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
...@@ -62,7 +87,7 @@ public class PayController { ...@@ -62,7 +87,7 @@ public class PayController {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
//为什么在js和applet中才需要判断open_id? //为什么在js和applet中才需要判断open_id?
if (payType.equalsIgnoreCase(DragonConstant.PayChannelEnum.WEPAY.getCode())) { if (payType.equalsIgnoreCase(DragonConstant.PayChannelEnum.WEPAY.getCode())) {
if (deviceFrom.equalsIgnoreCase(DragonConstant.DeviceFromEnum.JS.getCode()) || deviceFrom.equalsIgnoreCase(DragonConstant.DeviceFromEnum.APPLET.getCode())) { if (deviceFrom.equalsIgnoreCase(DragonConstant.DeviceFromEnum.JS.getCode())||deviceFrom.equalsIgnoreCase(DragonConstant.DeviceFromEnum.APPLETB.getCode()) || deviceFrom.equalsIgnoreCase(DragonConstant.DeviceFromEnum.APPLET.getCode())) {
if (StringUtil.isEmpty(openId)) { if (StringUtil.isEmpty(openId)) {
return ResponseDto.failure("微信支付openId不能为空!"); return ResponseDto.failure("微信支付openId不能为空!");
} }
...@@ -71,6 +96,10 @@ public class PayController { ...@@ -71,6 +96,10 @@ public class PayController {
DragonPayBaseReqDto dragonPayBaseReqDto = DragonPayBaseReqDto.getNew(); DragonPayBaseReqDto dragonPayBaseReqDto = DragonPayBaseReqDto.getNew();
dragonPayBaseReqDto.setPayType(payType); dragonPayBaseReqDto.setPayType(payType);
dragonPayBaseReqDto.setDeviceFrom(deviceFrom); dragonPayBaseReqDto.setDeviceFrom(deviceFrom);
if(deviceFrom.equals("appletb")){
dragonPayBaseReqDto.setDeviceFrom("applet");
dragonPayBaseReqDto.setAppIdType("b");
}
dragonPayBaseReqDto.setOpenId(openId); dragonPayBaseReqDto.setOpenId(openId);
dragonPayBaseReqDto.setType(type); dragonPayBaseReqDto.setType(type);
dragonPayBaseReqDto.setPrice(price); dragonPayBaseReqDto.setPrice(price);
...@@ -138,4 +167,5 @@ public class PayController { ...@@ -138,4 +167,5 @@ public class PayController {
rs.put("result", "" + respDto); rs.put("result", "" + respDto);
return ResponseDto.success(rs); return ResponseDto.success(rs);
} }
}*/ }
*/
...@@ -413,7 +413,11 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -413,7 +413,11 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
} else if (paymentType.equalsIgnoreCase(DragonConstant.PayTypeEnum.PAYMENT_TYPE_APP_WEPAY.getCode())) { } else if (paymentType.equalsIgnoreCase(DragonConstant.PayTypeEnum.PAYMENT_TYPE_APP_WEPAY.getCode())) {
parameters.put("appid", PayWepayUtils.getInstance().getAPP_ID()); parameters.put("appid", PayWepayUtils.getInstance().getAPP_ID());
} else if (paymentType.equalsIgnoreCase(DragonConstant.PayTypeEnum.PAYMENT_TYPE_APPLET_WEPAY.getCode())) { } else if (paymentType.equalsIgnoreCase(DragonConstant.PayTypeEnum.PAYMENT_TYPE_APPLET_WEPAY.getCode())) {
if(code.contains("b")){
parameters.put("appid", PayWepayUtils.getInstance().getAPPLETB_APPID());
}else{
parameters.put("appid", PayWepayUtils.getInstance().getAPPLET_APP_ID()); parameters.put("appid", PayWepayUtils.getInstance().getAPPLET_APP_ID());
}
} else if (paymentType.equalsIgnoreCase(DragonConstant.PayTypeEnum.PAYMENT_TYPE_WAP_WEPAY.getCode())) { } else if (paymentType.equalsIgnoreCase(DragonConstant.PayTypeEnum.PAYMENT_TYPE_WAP_WEPAY.getCode())) {
parameters.put("appid", PayWepayUtils.getInstance().getWAP_APP_ID()); parameters.put("appid", PayWepayUtils.getInstance().getWAP_APP_ID());
}else if(paymentType.equalsIgnoreCase(DragonConstant.PayTypeEnum.PAYMENT_TYPE_MICROPAY_WEPAY.getCode())){ }else if(paymentType.equalsIgnoreCase(DragonConstant.PayTypeEnum.PAYMENT_TYPE_MICROPAY_WEPAY.getCode())){
...@@ -434,7 +438,12 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService ...@@ -434,7 +438,12 @@ public class DragonOrderRefundsServiceImpl implements IDragonOrderRefundsService
try { try {
HttpPost httpost = new HttpPost("https://api.mch.weixin.qq.com/secapi/pay/refund"); HttpPost httpost = new HttpPost("https://api.mch.weixin.qq.com/secapi/pay/refund");
httpost.setEntity(new StringEntity(data, "UTF-8")); httpost.setEntity(new StringEntity(data, "UTF-8"));
CloseableHttpResponse response = PayWepayUtils.getInstance().getHttpClient().execute(httpost); CloseableHttpResponse response=null;
if(code.contains("b")){
response = PayWepayUtils.getInstance().getHttpClientB().execute(httpost);
}else{
response = PayWepayUtils.getInstance().getHttpClient().execute(httpost);
}
try { try {
HttpEntity entity = response.getEntity(); HttpEntity entity = response.getEntity();
entity.getContent(); entity.getContent();
......
...@@ -59,7 +59,11 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService { ...@@ -59,7 +59,11 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService {
@Override @Override
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) {
//设置支付编号 //设置支付编号
if(dragonPayBaseReqDto.getAppIdType().equals("b")){
dragonPayBaseReqDto.setCode(IDGenerator.payCodeByType());
}else{
dragonPayBaseReqDto.setCode(IDGenerator.payCode()); dragonPayBaseReqDto.setCode(IDGenerator.payCode());
}
log.info("dragon:dragonPay:req:dragonPayBaseReqDto : {}",dragonPayBaseReqDto.toString()); log.info("dragon:dragonPay:req:dragonPayBaseReqDto : {}",dragonPayBaseReqDto.toString());
return payChannelStrategyContext.getStrategy(dragonPayBaseReqDto.getPayType()).dragonPay(dragonPayBaseReqDto); return payChannelStrategyContext.getStrategy(dragonPayBaseReqDto.getPayType()).dragonPay(dragonPayBaseReqDto);
} }
...@@ -103,24 +107,24 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService { ...@@ -103,24 +107,24 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService {
public DragonPayBaseRespDto dragonNotifyApple(DragonPayBaseReqDto dragonPayBaseReqDto) { public DragonPayBaseRespDto dragonNotifyApple(DragonPayBaseReqDto dragonPayBaseReqDto) {
//1 调用苹果查询结果 //1 调用苹果查询结果
String verifyResult = buyAppVerify(dragonPayBaseReqDto.getReceiptData()); String verifyResult = buyAppVerify(dragonPayBaseReqDto.getReceiptData());
//第二部
//持久化通知记录
dragonServiceCommonBiz.createDragonOrderLogs(dragonPayBaseReqDto.getCode(),dragonPayBiz.getPaymentType(dragonPayBaseReqDto.getPayType(),dragonPayBaseReqDto.getDeviceFrom()),verifyResult);
if (verifyResult == null) { if (verifyResult == null) {
// 苹果服务器没有返回验证结果 // 苹果服务器没有返回验证结果
log.info("苹果支付,app调用,查不到订单信息"); log.info("苹果支付,app调用,查不到订单信息");
return null; return null;
} else { } else {
JSONObject job = JSONObject.parseObject(verifyResult); JSONObject job = JSONObject.parseObject(verifyResult);
String states = job.getString("status"); Integer states = job.getInteger("status");
if (states.equals("0")){ // 前端所提供的收据是有效的 验证成功 if (states==0){ // 前端所提供的收据是有效的 验证成功
String r_receipt = job.getString("receipt"); /* String r_receipt = job.getString("receipt");
JSONObject returnJson = JSONObject.parseObject(r_receipt); JSONObject returnJson = JSONObject.parseObject(r_receipt);
String in_app = returnJson.getString("in_app"); String in_app = returnJson.getString("in_app");
JSONObject in_appJson = JSONObject.parseObject(in_app.substring(1, in_app.length() - 1)); JSONObject in_appJson = JSONObject.parseObject(in_app.substring(1, in_app.length() - 1));
/* ApplePayRefundDto applePayRefundDto=ApplePayRefundDto.getNew();*/
String product_id = in_appJson.getString("product_id"); String product_id = in_appJson.getString("product_id");
/*applePayRefundDto.setProductId(product_id);*/ String transaction_id = in_appJson.getString("transaction_id"); // 订单号*/
String transaction_id = in_appJson.getString("transaction_id"); // 订单号
//如果单号一致 则开始处理逻辑 //如果单号一致 则开始处理逻辑
if(dragonPayBaseReqDto.getTransactionId().equals(transaction_id)){
//判断是已经查过了。 //判断是已经查过了。
DragonPayBaseRespDto dragonPayBaseRespDto=dataUtils.getDragonPayBaseRespDto(dragonPayBaseReqDto.getOrderCode()); DragonPayBaseRespDto dragonPayBaseRespDto=dataUtils.getDragonPayBaseRespDto(dragonPayBaseReqDto.getOrderCode());
if(null!=dragonPayBaseRespDto){ if(null!=dragonPayBaseRespDto){
...@@ -130,22 +134,17 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService { ...@@ -130,22 +134,17 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService {
//此处开始业务逻辑 //此处开始业务逻辑
//2 插入支付该支付的东西(预支付的东西)//dragon_orders //2 插入支付该支付的东西(预支付的东西)//dragon_orders
dragonServiceCommonBiz.buildPayOrders(dragonPayBaseReqDto,null); dragonServiceCommonBiz.buildPayOrders(dragonPayBaseReqDto,null);
//第二部
//持久化通知记录
dragonServiceCommonBiz.createDragonOrderLogs(dragonPayBaseReqDto.getCode(),dragonPayBiz.getPaymentType(dragonPayBaseReqDto.getPayType(),dragonPayBaseReqDto.getDeviceFrom()),verifyResult);
//修改状态 //修改状态
applepay.completeSuccessOrder(dataUtils.getPayOrderByCode(dragonPayBaseReqDto.getCode()),transaction_id,verifyResult); applepay.completeSuccessOrder(dataUtils.getPayOrderByCode(dragonPayBaseReqDto.getCode()),dragonPayBaseReqDto.getTransactionId(),verifyResult);
// //
DragonPayBaseRespDto respDto = buildCommonRespDto(dragonPayBaseReqDto); DragonPayBaseRespDto respDto = buildCommonRespDto(dragonPayBaseReqDto);
respDto.setProductId(product_id); respDto.setStatus(0);
dataUtils.createAPPLePayOrder(dragonPayBaseReqDto.getOrderCode(),respDto); dataUtils.createAPPLePayOrder(dragonPayBaseReqDto.getOrderCode(),respDto);
return respDto; return respDto;
}
} else { } else {
return null; return null;
} }
} }
return null;
} }
public String buyAppVerify(String receipt) { public String buyAppVerify(String receipt) {
try{ try{
......
...@@ -44,6 +44,9 @@ public class PayWepayUtils { ...@@ -44,6 +44,9 @@ public class PayWepayUtils {
private final String WAP_APP_ID="wx3498304dda39c5a1"; private final String WAP_APP_ID="wx3498304dda39c5a1";
private final String APPLET_APP_ID="wx4732efeaa2b08086"; private final String APPLET_APP_ID="wx4732efeaa2b08086";
private final String APPLETB_APPID="wxe3a093ce7278d5b1";
private final String merchantBId="1614003616";
public PayWepayUtils() { public PayWepayUtils() {
} }
...@@ -60,6 +63,14 @@ public class PayWepayUtils { ...@@ -60,6 +63,14 @@ public class PayWepayUtils {
return APPLET_APP_ID; return APPLET_APP_ID;
} }
public String getAPPLETB_APPID() {
return APPLETB_APPID;
}
public String getMerchantBId() {
return merchantBId;
}
public String getJS_APP_ID() { public String getJS_APP_ID() {
return JS_APP_ID; return JS_APP_ID;
} }
...@@ -146,6 +157,45 @@ public class PayWepayUtils { ...@@ -146,6 +157,45 @@ public class PayWepayUtils {
} }
return httpClient; return httpClient;
} }
public CloseableHttpClient getHttpClientB() {
try {
if (httpClient == null) {
InputStream certStream = PayWepayUtils.class.getClassLoader().getResourceAsStream("payCert/wepayb/apiclient_cert.p12");
byte[] certData = IOUtils.toByteArray(certStream);
certStream.read(certData);
certStream.close();
KeyStore keyStore = KeyStore.getInstance("PKCS12");
ByteArrayInputStream inputStream = new ByteArrayInputStream(certData);
try {
keyStore.load(inputStream, merchantId.toCharArray());
} finally {
inputStream.close();
}
SSLContext sslcontext = SSLContexts.custom()
.loadKeyMaterial(keyStore, merchantId.toCharArray())
.build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
sslcontext,
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
// 配置同时支持 HTTP 和 HTPPS
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create().register("http", PlainConnectionSocketFactory.getSocketFactory()).register("https", sslsf).build();
// 初始化连接管理器
poolConnManager =new PoolingHttpClientConnectionManager(socketFactoryRegistry);
poolConnManager.setMaxTotal(4000);// 同时最多连接数
// 设置最大路由
poolConnManager.setDefaultMaxPerRoute(2000);
// 初始化httpClient
httpClient = getConnection();
}
} catch (Exception e) {
e.printStackTrace();
}
return httpClient;
}
public static CloseableHttpClient getConnection() { public static CloseableHttpClient getConnection() {
RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(5000).setSocketTimeout(5000).build(); RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(5000).setSocketTimeout(5000).build();
......
Markdown is supported
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