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

Commit da2ddd2c authored by anjiabin's avatar anjiabin

提交微信支付

parent f3bc73b8
package com.liquidnet.service.dragon.dto;
import lombok.Data;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: DragonPayNotifyReqDto
* @Package com.liquidnet.service.dragon.dto
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/7/13 12:26
*/
@Data
public class DragonPayNotifyReqDto {
//notify_id
private String notify_type;
//notify_id
private String notify_id;
private String notify_time;
private String sign_type;
private String sign;
private String charge_amount;
private String charge_flags;
private String settlement_id;
private String notify_action_type;
private String current_seller_received_amount;
private String seller_received_total_amount;
private String total_from_seller_fee;
private String ff_current_period;
private String mdiscount_amount;
private String discount_amount;
private String hb_fq_pay_info;
private String receipt_currency_type;
}
...@@ -3,12 +3,13 @@ package com.liquidnet.service.dragon.service; ...@@ -3,12 +3,13 @@ package com.liquidnet.service.dragon.service;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto; import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import com.liquidnet.service.dragon.dto.DragonRefundAppDto;
import java.math.BigDecimal; import javax.servlet.http.HttpServletRequest;
public interface IDragonOrdersService { public interface IDragonOrdersService {
void sendRedisQueue(); void sendRedisQueue();
ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto); ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto);
void dragonNotify(HttpServletRequest request,String payType,String deviceFrom);
} }
...@@ -27,9 +27,7 @@ import com.liquidnet.service.dragon.channel.alipay.sign.MD5; ...@@ -27,9 +27,7 @@ import com.liquidnet.service.dragon.channel.alipay.sign.MD5;
import com.liquidnet.service.dragon.utils.PayAlipayUtils; import com.liquidnet.service.dragon.utils.PayAlipayUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.Map; import java.util.*;
import java.util.SortedMap;
import java.util.TreeMap;
@Slf4j @Slf4j
public class AlipayUtil { public class AlipayUtil {
...@@ -150,5 +148,22 @@ public class AlipayUtil { ...@@ -150,5 +148,22 @@ public class AlipayUtil {
} }
return MD5.sign(signBuilder.substring(0, signBuilder.length() - 1), key, "UTF-8"); return MD5.sign(signBuilder.substring(0, signBuilder.length() - 1), key, "UTF-8");
} }
public static Map<String , String> parseNotifyMsg(Map<String, String[]> requestParams){
Map<String,String> params = new HashMap<String,String>();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
params.put(name, valueStr);
}
return params;
}
} }
...@@ -4,6 +4,8 @@ import com.liquidnet.service.base.ResponseDto; ...@@ -4,6 +4,8 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto; import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import javax.servlet.http.HttpServletRequest;
/** /**
* @author AnJiabin <anjiabin@zhengzai.tv> * @author AnJiabin <anjiabin@zhengzai.tv>
...@@ -16,4 +18,6 @@ import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; ...@@ -16,4 +18,6 @@ import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
*/ */
public interface IPayChannelStrategy { public interface IPayChannelStrategy {
ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto); ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto);
void dragonNotify(HttpServletRequest request,String payType,String deviceFrom);
} }
package com.liquidnet.service.dragon.channel.strategy.impl; package com.liquidnet.service.dragon.channel.strategy.impl;
import com.alibaba.fastjson.JSON;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.alipay.strategy.AlipayStrategyContext; import com.liquidnet.service.dragon.channel.alipay.strategy.AlipayStrategyContext;
import com.liquidnet.service.dragon.channel.alipay.util.AlipayUtil;
import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy; import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy;
import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler; import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto; import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
/** /**
* @author AnJiabin <jiabin.an@lightnet.io> * @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0 * @version V1.0
* @Description: currencyCloud * @Description: TODO
* @class: CurrencyCloudGetFundDataStrategyImpl * @class: PayChannelStrategyAlipayImpl
* @Package com.liquidnet.service.reconciliation.strategy.transtype.impl * @Package com.liquidnet.service.dragon.channel.strategy.impl
* @Copyright: LightNet @ Copyright (c) 2020 * @Copyright: LightNet @ Copyright (c) 2021
* @date 2020/10/27 14:58 * @date 2021/7/13 13:06
*/ */
@Slf4j
@Component @Component
@StrategyPayChannelHandler(DragonConstant.PayChannelEnum.ALIPAY) @StrategyPayChannelHandler(DragonConstant.PayChannelEnum.ALIPAY)
public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy { public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy {
...@@ -29,4 +37,13 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy { ...@@ -29,4 +37,13 @@ public class PayChannelStrategyAlipayImpl implements IPayChannelStrategy {
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) {
return alipayStrategyContext.getStrategy(dragonPayBaseReqDto.getDeviceFrom()).dragonPay(dragonPayBaseReqDto); return alipayStrategyContext.getStrategy(dragonPayBaseReqDto.getDeviceFrom()).dragonPay(dragonPayBaseReqDto);
} }
@Override
public void dragonNotify(HttpServletRequest request,String payType,String deviceFrom) {
Map<String, String[]> requestParams = request.getParameterMap();
Map<String, String> notifyMap = new HashMap<String, String>();
notifyMap = AlipayUtil.parseNotifyMsg(requestParams);
log.info("dragonNotify-->alipay json : {}", JSON.toJSONString(notifyMap));
}
} }
...@@ -6,20 +6,21 @@ import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChann ...@@ -6,20 +6,21 @@ import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChann
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto; import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import javax.servlet.http.HttpServletRequest;
import java.util.List;
/** /**
* @author AnJiabin <jiabin.an@lightnet.io> * @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0 * @version V1.0
* @Description: liquidnet-wallet * @Description: TODO
* @class: LiquidnetWalletGetFundDataStrategyImpl * @class: PayChannelStrategyApplepayImpl
* @Package com.liquidnet.service.reconciliation.strategy.transtype.impl * @Package com.liquidnet.service.dragon.channel.strategy.impl
* @Copyright: LightNet @ Copyright (c) 2020 * @Copyright: LightNet @ Copyright (c) 2021
* @date 2020/10/27 14:58 * @date 2021/7/13 13:06
*/ */
@Slf4j
@Component @Component
@StrategyPayChannelHandler(DragonConstant.PayChannelEnum.APPLEPAY) @StrategyPayChannelHandler(DragonConstant.PayChannelEnum.APPLEPAY)
public class PayChannelStrategyApplepayImpl implements IPayChannelStrategy { public class PayChannelStrategyApplepayImpl implements IPayChannelStrategy {
...@@ -28,4 +29,9 @@ public class PayChannelStrategyApplepayImpl implements IPayChannelStrategy { ...@@ -28,4 +29,9 @@ public class PayChannelStrategyApplepayImpl implements IPayChannelStrategy {
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) {
return null; return null;
} }
@Override
public void dragonNotify(HttpServletRequest request,String payType,String deviceFrom) {
}
} }
package com.liquidnet.service.dragon.channel.strategy.impl; package com.liquidnet.service.dragon.channel.strategy.impl;
import com.alibaba.fastjson.JSON;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy; import com.liquidnet.service.dragon.channel.strategy.IPayChannelStrategy;
import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler; import com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler;
import com.liquidnet.service.dragon.channel.wepay.strategy.WepayStrategyContext; import com.liquidnet.service.dragon.channel.wepay.strategy.WepayStrategyContext;
import com.liquidnet.service.dragon.channel.wepay.util.WepayUtil;
import com.liquidnet.service.dragon.constant.DragonConstant; import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto; import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto; import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
/** /**
* @author AnJiabin <jiabin.an@lightnet.io> * @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0 * @version V1.0
* @Description: liquidnet-wallet * @Description: TODO
* @class: LiquidnetWalletGetFundDataStrategyImpl * @class: PayChannelStrategyWepayImpl
* @Package com.liquidnet.service.reconciliation.strategy.transtype.impl * @Package com.liquidnet.service.dragon.channel.strategy.impl
* @Copyright: LightNet @ Copyright (c) 2020 * @Copyright: LightNet @ Copyright (c) 2021
* @date 2020/10/27 14:58 * @date 2021/7/13 13:06
*/ */
@Slf4j
@Component @Component
@StrategyPayChannelHandler(DragonConstant.PayChannelEnum.WEPAY) @StrategyPayChannelHandler(DragonConstant.PayChannelEnum.WEPAY)
public class PayChannelStrategyWepayImpl implements IPayChannelStrategy { public class PayChannelStrategyWepayImpl implements IPayChannelStrategy {
...@@ -29,4 +39,20 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy { ...@@ -29,4 +39,20 @@ public class PayChannelStrategyWepayImpl implements IPayChannelStrategy {
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) { public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) {
return wepayStrategyContext.getStrategy(dragonPayBaseReqDto.getDeviceFrom()).dragonPay(dragonPayBaseReqDto); return wepayStrategyContext.getStrategy(dragonPayBaseReqDto.getDeviceFrom()).dragonPay(dragonPayBaseReqDto);
} }
@Override
public void dragonNotify(HttpServletRequest request,String payType,String deviceFrom) {
try {
InputStream inputStream = request.getInputStream();// 从request中取得输入流
Map<String, String> notifyMap = new HashMap<String, String>();
try {
notifyMap = WepayUtil.parseXml(inputStream);
log.info("dragonNotify-->wepay json : {}", JSON.toJSONString(notifyMap));
} catch (Exception e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
} }
package com.liquidnet.service.dragon.controller; package com.liquidnet.service.dragon.controller;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.dragon.service.IDragonOrdersService;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotNull; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** /**
* @author AnJiabin <anjiabin@zhengzai.tv> * @author AnJiabin <anjiabin@zhengzai.tv>
...@@ -23,34 +24,21 @@ import javax.validation.constraints.NotNull; ...@@ -23,34 +24,21 @@ import javax.validation.constraints.NotNull;
* @date 2021/7/11 23:35 * @date 2021/7/11 23:35
*/ */
@RestController @RestController
@RequestMapping("pay") @RequestMapping("notify")
public class PayNotifyController { public class PayNotifyController {
@Autowired
private IDragonOrdersService dragonOrdersService;
/** /**
* 支付宝支付回调 * 支付宝支付回调
* @return * @return
*/ */
@PostMapping("/notify/alipay") @PostMapping("/{payType}/{deviceFrom}")
@ApiOperation("支付宝支付回调") @ApiOperation("支付宝支付回调")
@ApiResponse(code = 200, message = "接口返回对象参数") @ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payType", value = "支付类型:alipay,wepay,iappay", example = "alipay") @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payType", value = "支付类型:alipay,wepay,iappay", example = "alipay")
}) })
public ResponseDto<DragonPayBaseRespDto> notifyAlipay( public void dragonNotify(@PathVariable("payType") String payType,@PathVariable("deviceFrom") String deviceFrom,HttpServletRequest request, HttpServletResponse respone) throws Exception {
@RequestParam(value = "payType") @NotNull(message = "支付类型不能为空") String payType){ dragonOrdersService.dragonNotify(request,payType,deviceFrom);
return null;
}
/**
* 微信支付回调
* @return
*/
@PostMapping("/notify/wepay")
@ApiOperation("支付宝支付回调")
@ApiResponse(code = 200, message = "接口返回对象参数")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "payType", value = "支付类型:alipay,wepay,iappay", example = "alipay")
})
public ResponseDto<DragonPayBaseRespDto> notifyWepay(
@RequestParam(value = "payType") @NotNull(message = "支付类型不能为空") String payType){
return null;
} }
} }
...@@ -13,6 +13,7 @@ import org.springframework.data.redis.connection.stream.StreamRecords; ...@@ -13,6 +13,7 @@ import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap; import java.util.HashMap;
@Slf4j @Slf4j
...@@ -42,4 +43,9 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService { ...@@ -42,4 +43,9 @@ public class DragonOrdersServiceImpl implements IDragonOrdersService {
dragonPayBaseReqDto.setCode(IDGenerator.payCode()); dragonPayBaseReqDto.setCode(IDGenerator.payCode());
return payChannelStrategyContext.getStrategy(dragonPayBaseReqDto.getPayType()).dragonPay(dragonPayBaseReqDto); return payChannelStrategyContext.getStrategy(dragonPayBaseReqDto.getPayType()).dragonPay(dragonPayBaseReqDto);
} }
@Override
public void dragonNotify(HttpServletRequest request,String payType,String deviceFrom) {
payChannelStrategyContext.getStrategy(payType).dragonNotify(request,payType,deviceFrom);
}
} }
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