浏览代码

//pay notify

photo
xhxu 1年前
父节点
当前提交
4a57507fcf
共有 1 个文件被更改,包括 31 次插入70 次删除
  1. +31
    -70
      suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java

+ 31
- 70
suimangCApi/src/main/java/com/iformall/controller/CallbackPayController.java 查看文件

@@ -19,6 +19,7 @@ import com.iformall.service.pay.PayServiceFactory;
import com.iformall.service.pay.service.pay.PayAdapterService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.jdom2.JDOMException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -151,30 +152,12 @@ public class CallbackPayController extends BaseController {
@AuthIgnore
@ApiOperation("支付回调")
@PostMapping(value = "/aliNotify")
public Map<String,Object> _aliNotify(HttpServletRequest request, HttpServletResponse response) {
public String _aliNotify(HttpServletRequest request, HttpServletResponse response) {
logger.debug("[" + getIpAddr() + "] CallbackPayController::_aliNotify");

String body1 = ((BodyReaderHttpServletRequestWrapper) request).getBody();
String body = ((BodyReaderHttpServletRequestWrapper) request).getBody();

logger.info("ali支付回调结果通知1{}"+JSONObject.toJSONString(body1));

Map< String , String > paranMap = new HashMap < String , String > ();
Map requestParams = request.getParameterMap();
logger.info("ali支付回调结果通知2{}"+JSONObject.toJSONString(requestParams));

for(Iterator iter = requestParams.keySet().iterator(); iter.hasNext();){
String name = (String)iter.next();
String[] values = (String [])requestParams.get(name);
String valueStr = "";
for(int i = 0;i < values.length;i ++ ){
valueStr = (i==values.length-1)?valueStr + values [i]:valueStr + values[i] + ",";
}
//乱码解决,这段代码在出现乱码时使用。
//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
paranMap.put (name,valueStr);
}

logger.info("ali支付回调结果通知{}"+JSONObject.toJSONString(paranMap));
logger.info("ali支付回调结果通知 body{}"+body);

Map<String,Object> resultMap = new HashMap<>();

@@ -182,65 +165,43 @@ public class CallbackPayController extends BaseController {
* ----效验数据来源合法
*/
try{
String body = this.getBody(request);
logger.info("ali支付回调结果通知---body{}"+body);
// String msg = (String) paranMap.get("msg");
// String type = (String) paranMap.get("type");
//
// Map<String, Object> pMap = JSONObject.parseObject(msg, Map.class);
// String appid = (String) pMap.get("appid");
// WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(appid);
// WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId());
// if("payment".equals(type)){
// String out_order_no = (String)pMap.get("cp_orderno");
//
// EnumProductOrderPayVendor payVendorEnum = EnumProductOrderPayVendor.PAY_WAY_TT;
// ProductOrderPay orderPay = productOrderPayService.getByOrder(Long.parseLong(out_order_no), payVendorEnum);
//
// PayAdapterService payAdapterService = payServiceFactory.getPayAdapterService(payVendorEnum.getCode());
// productOrderPayService.handleProductOrderByQuery(appInfo,payAccount,orderPay,payAdapterService);
//
// resultMap.put("err_no",0);
// resultMap.put("err_tips","success");
// }
Map<String, String> paranMap = handBody(body);
logger.info("ali支付回调结果通知 paranMap{}"+JSONObject.toJSONString(paranMap));

String app_id = paranMap.get("app_id");
WxAppinfo appInfo = wxAppinfoService.getOnlyByAppIdFromRedis(app_id);
WxPayAccount payAccount = wxPayAccountService.getByIdFromRedis(appInfo.getPayId());

String out_trade_no = paranMap.get("out_trade_no");
String trade_status = paranMap.get("trade_status");
if("TRADE_SUCCESS".equals(trade_status)){
EnumProductOrderPayVendor payVendorEnum = EnumProductOrderPayVendor.PAY_WAY_ALIPAY_WAP;
ProductOrderPay orderPay = productOrderPayService.getByOrder(Long.parseLong(out_trade_no), payVendorEnum);

PayAdapterService payAdapterService = payServiceFactory.getPayAdapterService(payVendorEnum.getCode());
productOrderPayService.handleProductOrderByQuery(appInfo,payAccount,orderPay,payAdapterService);
}
return "success";
}catch(Exception e){
logger.error("ali支付回调处理异常"+e);
resultMap.put("err_no",ErrorCode.SYS_SERVER_ERROR.getCode());
resultMap.put("err_tips","ali支付回调处理异常");
}
return resultMap;
return "fail";
}



private String getBody(HttpServletRequest request) throws IOException {
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
try {
InputStream inputStream = request.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"utf-8"));
char[] charBuffer = new char[1024];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
} else {
stringBuilder.append("");
}
} catch (
IOException ex) {
throw ex;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException ex) {
throw ex;
private Map<String,String> handBody(String body){
Map<String,String> map = new HashMap<>();
if(StringUtils.isNotBlank(body)){
String[] key_value = body.split("&");
if(key_value.length > 0){
for (String kv: key_value) {
String[] split = kv.split("=");
map.put(split[0],split[1]);
}
}
}
return stringBuilder.toString();
return map;
}

}

正在加载...
取消
保存