提交 13f14c3a authored 作者: yucaiwei's avatar yucaiwei

--no commit message

上级 0b8673b5
......@@ -27,6 +27,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import com.alipay.api.AlipayApiException;
import com.alipay.api.internal.util.AlipaySignature;
import com.zrqx.core.enums.order.OrderStatusEnum;
import com.zrqx.core.enums.order.OrderTypeEnum;
import com.zrqx.core.enums.third.pay.PayTypeEnum;
import com.zrqx.core.exception.BusinessValidateException;
......@@ -80,11 +81,11 @@ public class ReceiveController {
private final static Logger logger = LoggerFactory.getLogger(ReceiveController.class);
@ApiOperation(value = "支付宝服务器异步通知页面", notes = "支付宝服务器异步通知页面")
@RequestMapping(RequestPath.NOTIFY_ALI)
@PostMapping(RequestPath.NOTIFY_ALI)
@ResponseBody
public String aliNotifyUrl(ServletRequest request) throws AlipayApiException,
UnsupportedEncodingException {
logger.info(request.getParameter("out_trade_no") + "支付宝支付回调开始--------------------");
logger.info(request.getParameter("out_trade_no") + "支付宝支付回调开始--------------------notify_ali");
/*
* * 页面功能说明************************* 创建该页面文件时,请留心该页面文件中无任何HTML代码及空格。
* 该页面不能在本机电脑测试,请到服务器上做测试。请确保外部可以访问该页面。 如果没有收到该页面返回的 success
......@@ -117,6 +118,7 @@ public class ReceiveController {
* 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)
* 4、验证app_id是否为该商户本身。
*/
logger.info("签名校验--------------------"+signVerified);
if (signVerified) {// 验证成功
// 商户订单号
String out_trade_no = request.getParameter("out_trade_no");
......@@ -124,6 +126,9 @@ public class ReceiveController {
String trade_no = request.getParameter("trade_no");
// 交易状态
String trade_status = request.getParameter("trade_status");
// 付款金额
String total_amount = request.getParameter("total_amount");
if (trade_status.equals("TRADE_FINISHED")) {
// 判断该笔订单是否在商户网站中已经做过处理
// 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
......@@ -138,11 +143,48 @@ public class ReceiveController {
// 注意:
// 付款完成后,支付宝系统发送该交易状态通知
logger.info(request.getParameter("out_trade_no") + "支付宝支付成功------开始调用pay--------------");
CallBack<Boolean> result = payClient.returnPayResult(new PayResultForm(out_trade_no,
String.valueOf(PayTypeEnum.ALIPAY.getCode())));
logger.info(request.getParameter("out_trade_no") + "支付宝回调远程调用pay结束:" + (result == null ? false : result.getData()));
//logger.info(request.getParameter("out_trade_no") + "支付宝支付成功------开始调用pay--------------");
//CallBack<Boolean> result = payClient.returnPayResult(new PayResultForm(out_trade_no,
// String.valueOf(PayTypeEnum.ALIPAY.getCode())));
//logger.info(request.getParameter("out_trade_no") + "支付宝回调远程调用pay结束:" + (result == null ? false : result.getData()));
// 修改订单状态
logger.info(out_trade_no + "开始查询订单详情-------------------");
CallBack<OrderPayVo> orderPayVoResult = orderClient.getOrderPayVo(out_trade_no);
if(orderPayVoResult == null || orderPayVoResult.getData() == null) {
logger.error("订单:" + out_trade_no + "获取订单详情失败");
throw new BusinessValidateException(-3, "获取订单详情失败");
}
OrderPayVo orderPayVo = orderPayVoResult.getData();
logger.info(out_trade_no + "获取订单详情成功:\n" + orderPayVo);
if(!orderPayVo.getPayment().equals(total_amount)){
// TODO 支付金额和订单金额不一致 处理流程
logger.warn("订单金额与支付金额不一致; ");
}
logger.info(out_trade_no + "开始修改订单状态-------------------");
PayResultForm form = new PayResultForm();
form.setOut_trade_no(out_trade_no);
form.setPayType(PayTypeEnum.ALIPAY.getCode());
CallBack<Boolean> result = orderClient.updateOrderStatus(form);
if(result == null || !result.getData()) {
logger.error("订单:" + out_trade_no + "订单状态修改失败");
throw new BusinessValidateException(-3, "订单状态修改失败");
}
logger.info(form.getOut_trade_no() + "修改订单状态成功-------------------");
if(orderPayVo.getOrderType().equals(OrderTypeEnum.VIP.getCode())){
//如果是开通vip订单,修改用户信息
logger.info("third1服务:开始修改用户信息-------------------");
CallBack<Boolean> re = personalMemberClient.addVipMember(out_trade_no);
if(re.hasEntity()){
if(re.getData() == true){
logger.info("-----修改用户信息成功-------------------");
}else{
logger.error("修改用户信息失败");
}
}
}
}
mark = "success";
} else {// 验证失败
......@@ -313,10 +355,10 @@ public class ReceiveController {
@ApiOperation(value = "支付宝服务器同步通知页面", notes = "支付宝服务器同步通知页面")
@RequestMapping(RequestPath.RETURNURL)
@GetMapping(RequestPath.RETURNURL)
public String aliReturnUrl(ServletRequest request)
throws AlipayApiException, IOException {
logger.info(request.getParameter("out_trade_no") + "支付宝支付回调开始--------------------");
logger.info(request.getParameter("out_trade_no") + "支付宝支付回调开始--------------------returnUrl");
// String mark = "";
Map<String, String> params = new HashMap<String, String>();
Map<String, String[]> requestParams = request.getParameterMap();
......@@ -334,7 +376,6 @@ public class ReceiveController {
boolean signVerified = AlipaySignature.rsaCheckV1(params,
alipay_public_key, charset,
sign_type); // 调用SDK验证签名
logger.info("签名校验--------------------"+signVerified);
if (signVerified) {
// 商户订单号
String out_trade_no = request.getParameter("out_trade_no");
......@@ -345,46 +386,6 @@ public class ReceiveController {
// 付款金额
String total_amount = request.getParameter("total_amount");
// 修改订单状态
logger.info(out_trade_no + "开始查询订单详情-------------------");
CallBack<OrderPayVo> orderPayVoResult = orderClient.getOrderPayVo(out_trade_no);
if(orderPayVoResult == null || orderPayVoResult.getData() == null) {
logger.error("订单:" + out_trade_no + "获取订单详情失败");
throw new BusinessValidateException(-3, "获取订单详情失败");
}
OrderPayVo orderPayVo = orderPayVoResult.getData();
logger.info(out_trade_no + "获取订单详情成功:\n" + orderPayVo);
if(!orderPayVo.getPayment().equals(total_amount)){
// TODO 支付金额和订单金额不一致 处理流程
logger.warn("订单金额与支付金额不一致; ");
}
logger.info(out_trade_no + "开始修改订单状态-------------------");
PayResultForm form = new PayResultForm();
form.setOut_trade_no(out_trade_no);
form.setPayType(PayTypeEnum.ALIPAY.getCode());
CallBack<Boolean> result = orderClient.updateOrderStatus(form);
if(result == null || !result.getData()) {
logger.error("订单:" + out_trade_no + "订单状态修改失败");
throw new BusinessValidateException(-3, "订单状态修改失败");
}
logger.info(form.getOut_trade_no() + "修改订单状态成功-------------------");
if(orderPayVo.getOrderType().equals(OrderTypeEnum.VIP.getCode())){
//如果是开通vip订单,修改用户信息
logger.info("third1服务:开始修改用户信息-------------------");
CallBack<Boolean> re = personalMemberClient.addVipMember(out_trade_no);
if(re.hasEntity()){
if(re.getData() == true){
logger.info("-----修改用户信息成功-------------------");
}else{
logger.error("修改用户信息失败");
}
}
}
// 收款支付宝账号对应的支付宝唯一用户号
// String seller_id =request.getParameter("seller_id");
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论