|
|
@@ -6,6 +6,7 @@ import com.izouma.awesomeadmin.constant.AppConstant;
|
|
|
import com.izouma.awesomeadmin.dao.AlipayTempMapper;
|
|
|
import com.izouma.awesomeadmin.model.AlipayTemp;
|
|
|
import com.izouma.awesomeadmin.service.MemberCoinService;
|
|
|
+import com.izouma.awesomeadmin.service.UserInfoService;
|
|
|
import com.izouma.awesomeadmin.service.UserOrderService;
|
|
|
import com.izouma.awesomeadmin.util.AlipayClientFactory;
|
|
|
import com.izouma.awesomeadmin.util.MbappUtil;
|
|
|
@@ -45,6 +46,9 @@ public class AlipayController {
|
|
|
@Autowired
|
|
|
private MemberCoinService memberCoinService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private UserInfoService userInfoService;
|
|
|
+
|
|
|
|
|
|
@Autowired
|
|
|
private AlipayTempMapper alipayTempMapper;
|
|
|
@@ -60,7 +64,7 @@ public class AlipayController {
|
|
|
@ResponseBody
|
|
|
public void buy(HttpServletRequest request, HttpServletResponse response, @RequestParam(required = true, value = "orderId") String orderId,
|
|
|
@RequestParam(required = true, value = "coin") double coin, @RequestParam(required = true, value = "point") double point)
|
|
|
- throws ServletException, IOException {
|
|
|
+ throws IOException {
|
|
|
|
|
|
double cash = userOrderService.calculatedPrice(orderId, coin, point);
|
|
|
if (cash > 0) {
|
|
|
@@ -114,7 +118,7 @@ public class AlipayController {
|
|
|
*/
|
|
|
@RequestMapping(value = "/recharge", method = RequestMethod.GET)
|
|
|
@ResponseBody
|
|
|
- public void recharge(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
|
|
+ public void recharge(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
|
|
|
|
|
String money = request.getParameter("money");
|
|
|
String userId = request.getParameter("userId");
|
|
|
@@ -152,6 +156,45 @@ public class AlipayController {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ @RequestMapping(value = "/cashPledge", method = RequestMethod.GET)
|
|
|
+ @ResponseBody
|
|
|
+ public void cashPledge(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
|
|
+
|
|
|
+ String money = request.getParameter("money");
|
|
|
+ String userId = request.getParameter("userId");
|
|
|
+
|
|
|
+ String outTradeNo = MbappUtil.create_out_trade_no();
|
|
|
+
|
|
|
+ Map<String, String> maps = new HashMap<String, String>();
|
|
|
+ maps.put("out_trade_no", outTradeNo);
|
|
|
+ maps.put("total_amount", String.format("%.2f", Double.valueOf(money)));//PC支付需要两位小数
|
|
|
+ maps.put("subject", "店铺押金:" + money + " 元");
|
|
|
+ maps.put("seller_id", PropertiesFileLoader.getProperties("ALIPAY_SELLER"));
|
|
|
+ // 下面两个 参数的 KEY 不要乱写 要和工具类里面对应
|
|
|
+ maps.put("ReturnUrl", MbappUtil.getDomain(request) + "aliapi/cashPledge_return_url");
|
|
|
+ maps.put("NotifyUrl", MbappUtil.getDomain(request) + "aliapi/cashPledgeAsync");
|
|
|
+ try {
|
|
|
+ String form = AlipayClientFactory.PC_Pay(maps);
|
|
|
+ if (!form.equals("err")) {
|
|
|
+
|
|
|
+ AlipayTemp alipayTemp = new AlipayTemp();
|
|
|
+
|
|
|
+ alipayTemp.setOrderId(userId);
|
|
|
+ alipayTemp.setTotalAmount(BigDecimal.valueOf(Double.valueOf(money)));
|
|
|
+ alipayTemp.setTradeStatus(AppConstant.Aliapi.WAIT_BUYER_PAY);
|
|
|
+ alipayTemp.setOutTradeNo(outTradeNo);
|
|
|
+ alipayTemp.setTypeFlag(AppConstant.Aliapi.CASH_PLEDGE);
|
|
|
+ alipayTempMapper.insertSelective(alipayTemp);
|
|
|
+
|
|
|
+ response.setContentType("text/html;charset=utf-8");
|
|
|
+ response.getWriter().write(form);// 直接将完整的表单html输出到页面
|
|
|
+ response.getWriter().flush();
|
|
|
+ }
|
|
|
+ } catch (AlipayApiException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@RequestMapping(value = "/index")
|
|
|
public String index(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
|
|
@@ -186,6 +229,19 @@ public class AlipayController {
|
|
|
return "pay/recharge_success.html";
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 押金回调页面
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "/cashPledge_return_url")
|
|
|
+ public String cashPledge_return_url(HttpServletRequest request, HttpServletResponse response) {
|
|
|
+
|
|
|
+ return "pay/cashPledge_success.html";
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 异步通知付款状态的Controller
|
|
|
@@ -198,21 +254,8 @@ public class AlipayController {
|
|
|
@RequestMapping(value = "/async", method = RequestMethod.POST)
|
|
|
public String async(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
|
|
- Map<String, String> params = new HashMap<String, String>();
|
|
|
- Map requestParams = request.getParameterMap();
|
|
|
- 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] + ",";
|
|
|
- }
|
|
|
- params.put(name, valueStr);
|
|
|
- }
|
|
|
String tradeNo = request.getParameter("out_trade_no");
|
|
|
String tradeStatus = request.getParameter("trade_status");
|
|
|
- //String notifyId = request.getParameter("notify_id");
|
|
|
- //if(AlipayNotify.verify(params)){//验证成功
|
|
|
if (tradeStatus.equals("TRADE_FINISHED") || tradeStatus.equals("TRADE_SUCCESS")) {
|
|
|
//要写的逻辑。自己按自己的要求写
|
|
|
System.out.println(">>>>>支付订单成功" + tradeNo);
|
|
|
@@ -237,28 +280,40 @@ public class AlipayController {
|
|
|
@RequestMapping(value = "/rechargeAsync", method = RequestMethod.POST)
|
|
|
public String rechargeAsync(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
|
|
- Map<String, String> params = new HashMap<String, String>();
|
|
|
- Map requestParams = request.getParameterMap();
|
|
|
- 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] + ",";
|
|
|
- }
|
|
|
- params.put(name, valueStr);
|
|
|
- }
|
|
|
String tradeNo = request.getParameter("out_trade_no");
|
|
|
String tradeStatus = request.getParameter("trade_status");
|
|
|
- //String notifyId = request.getParameter("notify_id");
|
|
|
- //if(AlipayNotify.verify(params)){//验证成功
|
|
|
if (tradeStatus.equals("TRADE_FINISHED") || tradeStatus.equals("TRADE_SUCCESS")) {
|
|
|
//要写的逻辑。自己按自己的要求写
|
|
|
System.out.println(">>>>>充值成功" + tradeNo);
|
|
|
|
|
|
memberCoinService.alipaySuccess(tradeNo, tradeStatus);
|
|
|
- return "pay/recharge_success.html";
|
|
|
+ return "pay/cashPledge_success.html";
|
|
|
} else {//验证失败
|
|
|
+ return "pay/cashPledge_fail.html";
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 押金异步通知付款状态
|
|
|
+ *
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @SuppressWarnings("rawtypes")
|
|
|
+ @RequestMapping(value = "/cashPledgeAsync", method = RequestMethod.POST)
|
|
|
+ public String cashPledgeAsync(HttpServletRequest request, HttpServletResponse response) {
|
|
|
+
|
|
|
+ String tradeNo = request.getParameter("out_trade_no");
|
|
|
+ String tradeStatus = request.getParameter("trade_status");
|
|
|
+ if (tradeStatus.equals("TRADE_FINISHED") || tradeStatus.equals("TRADE_SUCCESS")) {
|
|
|
+ //要写的逻辑。自己按自己的要求写
|
|
|
+ System.out.println(">>>>>缴纳押金成功" + tradeNo);
|
|
|
+
|
|
|
+ userInfoService.alipaySuccess(tradeNo, tradeStatus);
|
|
|
+ return "pay/recharge_success.html";
|
|
|
+ } else {//验证失败
|
|
|
return "pay/recharge_fail.html";
|
|
|
}
|
|
|
|