add sale value 1

This commit is contained in:
Carl 2022-01-26 19:00:05 +08:00
parent 4b73d6585b
commit e41361dc6c
4 changed files with 149 additions and 67 deletions

View File

@ -1,6 +1,5 @@
package net.lab1024.smartadmin.module.system.alipay;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradePrecreateModel;
@ -13,7 +12,6 @@ import net.lab1024.smartadmin.module.system.royalcanin.orderMaster.QueryEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.UUID;
@Service

View File

@ -1,5 +1,6 @@
package net.lab1024.smartadmin.module.system.alipay;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
@ -10,10 +11,21 @@ import com.alipay.api.response.AlipayTradePrecreateResponse;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import net.lab1024.smartadmin.common.anno.OperateLog;
import net.lab1024.smartadmin.common.heartbeat.StringUtil;
import net.lab1024.smartadmin.constant.SwaggerTagConst;
import net.lab1024.smartadmin.module.system.alipay.alipayModel.AliPayEntity;
import net.lab1024.smartadmin.module.system.alipay.conf.AlipayConfig;
import net.lab1024.smartadmin.module.system.qrcode.QRCodeUtil;
import net.lab1024.smartadmin.module.system.royalcanin.MemberAccountService;
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrderEntity;
import net.lab1024.smartadmin.module.system.royalcanin.good.model.ProductMasterQueryEntity;
import net.lab1024.smartadmin.module.system.royalcanin.good.service.OrderService;
import net.lab1024.smartadmin.module.system.royalcanin.memberAccount.MemberAccountChangeEntity;
import net.lab1024.smartadmin.module.system.royalcanin.notify.model.NotifyEntity;
import net.lab1024.smartadmin.module.system.royalcanin.notify.service.NotifyService;
import net.lab1024.smartadmin.util.MapRemoveNullUtil;
import net.lab1024.smartadmin.util.SmartHttpUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -23,7 +35,7 @@ import java.util.Iterator;
import java.util.Map;
import java.util.UUID;
@Api(tags = {SwaggerTagConst.Admin.MANAGER_MALL_PAY_API})
@Api(tags = {SwaggerTagConst.Admin.MANAGER_MALL_API})
@OperateLog
@Slf4j
@RestController
@ -32,6 +44,17 @@ public class AlipayController {
public static String notify_url = "";
@Autowired
private OrderService orderService;
String url = "https://miniapp-test.royalcanin.com.cn/rcmini/h5/";
@Autowired
private MemberAccountService memberAccountService;
@Autowired
private NotifyService notifyService;
/**
* @Description: 前往支付宝第三方网关进行支付
*/
@ -65,47 +88,88 @@ public class AlipayController {
}
//
// @RequestMapping("royalcanin/updateOrderAliPay")
// public String returnUrl(HttpServletRequest request) throws Exception {
// Map<String,String> params = new HashMap<String,String>();
// Map<String,String[]> requestParams = request.getParameterMap();
// for (Iterator<String> 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");
// params.put(name, valueStr);
// }
// System.out.println("params:"+params);
// boolean signVerified = AlipaySignature.rsaCheckV1(params,AlipayConfig.alipay_public_key,AlipayConfig.charset,AlipayConfig.sign_type); //调用SDK验证签名
// System.out.println(signVerified);
// //请在这里编写您的程序以下代码仅作参考
// if(signVerified) {
// // 更新订单状态
// //商户订单号
// String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");
// //付款金额
// String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");
//
//
// //支付宝交易号
// String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");
// OrderEntity orderEntity = orderService.findByOrderId(out_trade_no);
// String[] products = orderEntity.getProductCode().split(",");
// ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
// double basePoint = 0;
// //自动获取会员积分
// for (String product : products) {
// productMasterQueryEntity.setProductCode(product);
// Map<String, String> paramMap = MapRemoveNullUtil.setConditionMap(productMasterQueryEntity);
// MapRemoveNullUtil.removeNullEntry(paramMap);
// paramMap.put("secret", "H5@2021");
// paramMap.put("channelId", "15");
// String sb = SmartHttpUtil.sendPostForm(url + "productMaster/query", paramMap, null);
// JSONObject jsonObject = JSONObject.parseObject(sb);
// com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data"));
// JSONObject jsonObjectData = (JSONObject) jsonArray.get(0);
// basePoint = basePoint + Double.parseDouble(jsonObjectData.getString("basePoint"));
// }
// MemberAccountChangeEntity memberAccountChangeEntity = new MemberAccountChangeEntity();
// memberAccountChangeEntity.setChangeTypeId("1");
// memberAccountChangeEntity.setChangeValue(StringUtil.toString(basePoint));
// memberAccountChangeEntity.setMemberId(orderEntity.getMemberId());
// memberAccountService.memberAccountChange(memberAccountChangeEntity);
// NotifyEntity notifyEntity = new NotifyEntity();
// notifyEntity.setAppId(AlipayConfig.app_id);
// notifyEntity.setMchId(request.getParameter("seller_id"));
// notifyEntity.setSign(request.getParameter("sign"));
// notifyEntity.setResultCode(request.getParameter("code"));
// notifyEntity.setOpenid(request.getParameter("merchant_order_no"));
// notifyEntity.setOutTradeNo(out_trade_no);
// notifyEntity.setTotalFee(total_amount);
// notifyEntity.setTradeType(request.getParameter("sub_code"));
// notifyEntity.setFeeType("CNY");
// notifyEntity.setNonceStr(trade_no);
// notifyService.insertNotify(notifyEntity);
//
//
//
//
//
//
// String trade_status= new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8");
// System.out.println("trade_status"+trade_status);
// return "trade_no:"+trade_no+"<br/>out_trade_no:"+out_trade_no+"<br/>total_amount:"+total_amount;
// }else {
// return "验签失败";
// }
// }
@RequestMapping("royalcanin/updateOrderAliPay")
public String returnUrl(HttpServletRequest request) throws UnsupportedEncodingException, AlipayApiException{
Map<String,String> params = new HashMap<String,String>();
Map<String,String[]> requestParams = request.getParameterMap();
for (Iterator<String> 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");
params.put(name, valueStr);
}
System.out.println("params:"+params);
boolean signVerified = AlipaySignature.rsaCheckV1(params,AlipayConfig.alipay_public_key,AlipayConfig.charset,AlipayConfig.sign_type); //调用SDK验证签名
System.out.println(signVerified);
//请在这里编写您的程序以下代码仅作参考
if(signVerified) {
//商户订单号
String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");
//支付宝交易号
String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");
//付款金额
String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");
String trade_status= new String(request.getParameter("trade_status").getBytes("ISO-8859-1"),"UTF-8");
System.out.println("trade_status"+trade_status);
return "trade_no:"+trade_no+"<br/>out_trade_no:"+out_trade_no+"<br/>total_amount:"+total_amount;
}else {
return "验签失败";
}
}
@RequestMapping(value = "/alipayNotifyNotice")
@ResponseBody
public String alipayNotifyNotice(HttpServletRequest request, HttpServletRequest response) throws Exception {
@ -151,6 +215,7 @@ public class AlipayController {
String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"), "UTF-8");
if (trade_status.equals("TRADE_FINISHED")) {
return "TRADE_FINISHED";
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理根据订单号out_trade_no在商户网站的订单系统中查到该笔订单的详细并执行商户的业务程序
//如果有做过处理不执行商户的业务程序
@ -167,23 +232,48 @@ public class AlipayController {
// 修改叮当状态改为 支付成功已付款; 同时新增支付流水
// ordersService.updateOrderStatus(out_trade_no, trade_no, total_amount);
//
// //这里不用 只是为了 看日志 查的方法应该卸载 同步回调 页面
// Orders order = ordersService.getOrderById(out_trade_no);
// Product product = productService.getProductById(order.getProductId());
//
// LOGGER.info("********************** 支付成功(支付宝异步通知)查询 只是为了 看日志 **********************");
// LOGGER.info("* 订单号: {}", out_trade_no);
// LOGGER.info("* 支付宝交易号: {}", trade_no);
// LOGGER.info("* 实付金额: {}", total_amount);
// LOGGER.info("* 购买产品: {}", product.getName());
// LOGGER.info("***************************************************************");
OrderEntity orderEntity = orderService.findByOrderId(out_trade_no);
String[] products = orderEntity.getProductCode().split(",");
ProductMasterQueryEntity productMasterQueryEntity = new ProductMasterQueryEntity();
double basePoint = 0;
//自动获取会员积分
for (String product : products) {
productMasterQueryEntity.setProductCode(product);
Map<String, String> paramMap = MapRemoveNullUtil.setConditionMap(productMasterQueryEntity);
MapRemoveNullUtil.removeNullEntry(paramMap);
paramMap.put("secret", "H5@2021");
paramMap.put("channelId", "15");
String sb = SmartHttpUtil.sendPostForm(url + "productMaster/query", paramMap, null);
JSONObject jsonObject = JSONObject.parseObject(sb);
com.alibaba.fastjson.JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString("data"));
JSONObject jsonObjectData = (JSONObject) jsonArray.get(0);
basePoint = basePoint + Double.parseDouble(jsonObjectData.getString("basePoint"));
}
MemberAccountChangeEntity memberAccountChangeEntity = new MemberAccountChangeEntity();
memberAccountChangeEntity.setChangeTypeId("1");
memberAccountChangeEntity.setChangeValue(StringUtil.toString(basePoint));
memberAccountChangeEntity.setMemberId(orderEntity.getMemberId());
memberAccountService.memberAccountChange(memberAccountChangeEntity);
NotifyEntity notifyEntity = new NotifyEntity();
notifyEntity.setAppId(AlipayConfig.app_id);
notifyEntity.setMchId(request.getParameter("seller_id"));
notifyEntity.setSign(request.getParameter("sign"));
notifyEntity.setResultCode(request.getParameter("code"));
notifyEntity.setOpenid(request.getParameter("merchant_order_no"));
notifyEntity.setOutTradeNo(out_trade_no);
notifyEntity.setTotalFee(total_amount);
notifyEntity.setTradeType(request.getParameter("sub_code"));
notifyEntity.setFeeType("CNY");
notifyEntity.setNonceStr(trade_no);
notifyService.insertNotify(notifyEntity);
}else {
return "验签失败";
}
// LOGGER.info("支付成功...");
} else {//验证失败
// LOGGER.info("支付, 验签失败...");
return "支付, 验签失败";
}
return "success";

View File

@ -227,7 +227,7 @@ public class OrderController {
wxPayEntity.setProduct_id(ordersEntity.getProductCode());
wxPayEntity.setTotal_fee(jsonObject.getString("salesAmount"));
wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo());
return ResponseDTO.succData(orderInfo, wxpayService.generateQRCode(wxPayEntity));
return ResponseDTO.succData(orderNo, wxpayService.generateQRCode(wxPayEntity));
}else {
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,orderInfo);
}
@ -251,7 +251,7 @@ public class OrderController {
wxPayEntity.setProduct_id(ordersEntity.getProductCode());
wxPayEntity.setTotal_fee(jsonObject.getString("salesAmount"));
wxPayEntity.setOut_trade_no(ordersEntity.getOrderNo());
return ResponseDTO.succData(orderInfo,wxpayService.dounifiedOrder(wxPayEntity) );
return ResponseDTO.succData(orderNo,wxpayService.dounifiedOrder(wxPayEntity));
}else {
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_ERROR,orderInfo);
}
@ -278,11 +278,7 @@ public class OrderController {
return ResponseDTO.wrap(OrderResponseCodeConst.NOTIFY_ERROR);
}
@ApiOperation(value = "支付宝更新订单", notes = "支付宝更新订单")
@RequestMapping(value = "royalcanin/updateOrderAlipay")
public void updateOrderAlipay(HttpServletRequest request, HttpServletResponse response){
// aliPayService.orderCallBackAliPay(request,response);
}
@ApiOperation(value = "取消订单", notes = "取消订单")
@RequestMapping(value = "royalcanin/cancelOrder",method = RequestMethod.POST)

View File

@ -141,10 +141,6 @@ public class WxpayService {
response.getWriter().println("<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml>");
response.setContentType("text/html");
response.getWriter().println("SUCCESS");
QueryEntity queryEntity = new QueryEntity();
queryEntity.setOrderNumber(outTradeNo);
String orderEntityJson = orderService.query(queryEntity);
orderService.completeOrder(totalFee,orderEntityJson);
}
}else {
// 未成功就都处理为失败订单
@ -196,16 +192,18 @@ public class WxpayService {
//拼接返回跳转地址
String url= config.NOTIFY_URL_H5+"orderNumber="+wxPayEntity.getOut_trade_no() ;
returnMap.put("url", response.get("mweb_url")+"&redirect_url="+url);
return response.get("mweb_url") == null ? response.get("err_code_des"):returnMap.get("url");
} else {
returnMap.put("ok", "201");
returnMap.put("url",null);
return returnMap.get("url") == null ? returnMap.get("err_code_des"):returnMap.get("url");
return returnMap.get("url");
}
} catch (Exception e) {
System.out.println(e);
return "Error";
//系统等其他错误的时候
}
return returnMap.get("url");
}