发表于: 2018-04-04 18:21:24

1 655


今日完成

1.支付接口的调试

@Controller
public class PayMentController {
@Autowired
   private TradingRecordService tradingRecordService;
   @Autowired
   private ProductService productService;
   
   private static Logger logger = LoggerFactory.getLogger(PayMentController.class);
   private static final String BACK_URL = ConfigReader.getString("h5.back_url");
   private static final String HOME_URL = ConfigReader.getString("h5.home_url");
   private static final String RETURN_URL = ConfigReader.getString("h5.return_url");
   private static final String PAY_URL = ConfigReader.getString("h5.pay_url");
   
   
   @RequestMapping(value = "/a/u/pay", method = RequestMethod.POST)
public void payPost(Long userId, String amt, String bankCard, String name, String idType, String idNo, String type, Long productId, String userBankInfo, HttpServletRequest request, HttpServletResponse resp) throws IOException {

String respMsg;
       //商户订单号与交易流水号用同一个
       String orderId = "JXYK" + userId + DateTimeUtil.getCurrentDate("yyyyMMddHHmmssSSS");
       logger.info("----order id is : " + orderId);
       resp.setContentType("text/html");
       try {

StringBuffer orderPlain = new StringBuffer();
           
           String signPlain = type + "|" + "2.0" + "|" + Constants.H5_MCHNT_CD + "|" + orderId + "|" + userId
+ "|" + amt + "|" + bankCard + "|" + BACK_URL + "|" + name + "|" + idNo + "|" + idType + "|" + "0" + "|"
                   + HOME_URL + "|" + RETURN_URL + "|" + Constants.H5_MCHNT_KEY;
           String sign = MD5.MD5Encode(signPlain);
           
           System.out.println("[签名明文:]" + signPlain);
           orderPlain.append("<ORDER>")
.append("<VERSION>2.0</VERSION>")
.append("<LOGOTP>0</LOGOTP>")
.append("<MCHNTCD>").append(Constants.H5_MCHNT_CD).append("</MCHNTCD>")
.append("<TYPE>").append(type).append("</TYPE>")
.append("<MCHNTORDERID>").append(orderId).append("</MCHNTORDERID>")
.append("<USERID>").append(userId).append("</USERID>")
.append("<AMT>").append(amt).append("</AMT>")
.append("<BANKCARD>").append(bankCard).append("</BANKCARD>")
.append("<BACKURL>").append(BACK_URL).append("</BACKURL>")
.append("<HOMEURL>").append(HOME_URL).append("</HOMEURL>")
.append("<REURL>").append(RETURN_URL).append("</REURL>")
.append("<NAME>").append(name).append("</NAME>")
.append("<IDTYPE>").append(idType).append("</IDTYPE>")
.append("<IDNO>").append(idNo).append("</IDNO>")
.append("<REM1>").append(userId).append("</REM1>")
.append("<REM2>").append(userId).append("</REM2>")
.append("<REM3>").append(userId).append("</REM3>")
.append("<SIGNTP>").append("md5").append("</SIGNTP>")
.append("<SIGN>").append(sign).append("</SIGN>")
.append("</ORDER>");
           System.out.println("[订单信息:]" + orderPlain.toString());
           Map<String, String> param = new HashMap<String, String>();
           param.put("VERSION", "2.0");
           param.put("ENCTP", "1");
           param.put("LOGOTP", "0");
           param.put("MCHNTCD", Constants.H5_MCHNT_CD);
           param.put("FM", orderPlain.toString());
           param.put("FM", DESCoderFUIOU.desEncrypt(orderPlain.toString(), DESCoderFUIOU.getKeyLength8(Constants.H5_MCHNT_KEY)));
           
           respMsg = HttpFormUtil.formForward(PAY_URL, param);
           System.out.println("[请求信息:]" + respMsg);
       } catch (Exception e) {
respMsg = "系统异常!";
       }



//生成一条位未支付的交易记录
       TradingRecord tradingRecord = new TradingRecord();
       tradingRecord.setId(null);
       tradingRecord.setUserId(userId);
       tradingRecord.setTradingAmount(new BigDecimal(Integer.valueOf(amt)));
       tradingRecord.setTradingNum(orderId);
       tradingRecord.setTradingTime(System.currentTimeMillis());
       
       try {
Product product = productService.getObjectById(productId);
           tradingRecord.setProductName(product.getName());
           tradingRecord.setTradingMode(userBankInfo);
           tradingRecord.setTradingStatus(-1);
           
           tradingRecordService.insert(tradingRecord);
       } catch (Throwable e) {
logger.error(e.getMessage());
           e.printStackTrace();
       }


resp.getOutputStream().write(respMsg.getBytes("utf8"));
   }


@RequestMapping(value = "/a/u/pay/callback", method = RequestMethod.POST)
public void payCallback(HttpServletRequest request) {
String responseCode = request.getParameter("RESPONSECODE");
       String tradingNumGet = request.getParameter("MCHNTORDERID");
       String orderidGet = request.getParameter("ORDERID");
       String amountGet = request.getParameter("AMT");
       logger.info("-----pay call back -----,reaponseCode is " + responseCode + " orderid is " + orderidGet);
       
       try {
TradingRecord tradingRecordGet = tradingRecordService.getObjectByTradingNum(tradingNumGet);
           if (tradingRecordGet != null && responseCode.equals("0000")) {
if (tradingRecordGet.getTradingNum().equals(tradingNumGet) && tradingRecordGet.getTradingAmount().equals(amountGet)) {


tradingRecordGet.setOrderNum(orderidGet);
                   tradingRecordGet.setTradingStatus(0);
                   tradingRecordService.update(tradingRecordGet);
               }

}


} catch (Throwable e) {
e.printStackTrace();
       }

if (responseCode != null && responseCode.equals("0000")) {


} else {


}

}


@RequestMapping("/pay/test")
public void paytTest(HttpServletRequest request, HttpServletResponse response) throws IOException {


//        response.getWriter().write("");
       String respMsg = "<html>\n" +
"<head>\n" +
"    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf8\" pageEncoding=\"utf8\"/>\n" +
"    <title>loading</title>\n" +
"    <style type=\"text/css\">body {\n" +
"        margin: 200px auto;\n" +
"        font-family: \"宋体\", Arial;\n" +
"        font-size: 12px;\n" +
"        color: #369;\n" +
"        text-align: center;\n" +
"    }\n" +
"\n" +
"    #1 {\n" +
"        height: auto;\n" +
"        width: 78px;\n" +
"        margin: 0 auto;\n" +
"    }\n" +
"\n" +
"    #2 {\n" +
"        height: auto;\n" +
"        width: 153px;\n" +
"        margin: 0 auto;\n" +
"    }\n" +
"\n" +
"    vertical-align: bottom\n" +
"\n" +
"    ;\n" +
"    }</style>\n" +
"</head>\n" +
"<body OnLoad=\"OnLoadEvent();\">\n" +
"<div id=\"3\">Loading...</div>\n" +
"<form name=\"forwardForm\" action=\"http://www-1.fuiou.com:18670/mobile_pay/h5pay/payAction.pay\" method=\"POST\"><input\n" +
"        type=\"hidden\" name=\"ENCTP\" value=\"1\"/> <input type=\"hidden\" name=\"MCHNTCD\" value=\"0003050F0363796\"/> <input\n" +
"        type=\"hidden\" name=\"FM\" value=\"k3ICfAybsrCf01oy+1mivSjsQUOPU2RIEPoWUK6eT3P3EiZJ4ouft5IaWQo7sssS07g5kfeo3qKe\n" +
"63tt/CLjoGJsq/iqY4q0UkJCXsMm15Vqo3UT1vRTuiGt3rqEkxLX/acv/flUNWbs9h4JknySPZR9\n" +
"zaTH5ktVhzvjZ+MgnTPet//RDb8vRXeWvz0sFd36yxIrakHnUq3tmJ72ao9HcSFjolvOskqw6+MY\n" +
"5BiTmk2QGvRNQVRlXAHd2RWTEjUZQwQODEtDjLCURSHZ9BOwvDvhrhKMQTT4qzo8m99UadpRN77Y\n" +
"l3/4gs1dZ//EHOspx+dnPnx3DwCLePaK3I+Hn2ZnmIfcJ4spSJPlqBNKhRkVaK4p73uivhMTpzKh\n" +
"hoSYlO3+g4Oi5BNQ8Sp28gb3F9L6XJt60WkGtixELizh570KQhXJJWVcnIMLTcn+4KlQIa1PTJGX\n" +
"H5ecIiiL1xyXFVDxKnbyBvcX0vpcm3rRaQa2LEQuLOHnvQpCFcklZVycgwtNyf7gqVD0HUfg4TAe\n" +
"g4zLlStDGNnY6DP1Ujb/0P9LLm5fvOylSSJdFTt5zUVC3TTF3grzcolmxZB/CdD3Ar7B2gi0Uo0o\n" +
"N5a37dR6StlEqTylH6RydACHSTt5CUAybDMKTKhwSO907ZzQ7cMGQB32CgxVNZjpCzIK+vX10s5v\n" +
"BoREpwj5Kqi773/0r9xMQmyeSwsRSkhX9e286dX5NABYaIkWqR6Hml9qn99MGlsZC6JqDb5n+WwH\n" +
"n+1FPtnDT55t1738bTAnxp97U8cWc4hs+SBPsb2MLRRB1HnM360=\"/> <input type=\"hidden\" name=\"VERSION\" value=\"2.0\"/> <input\n" +
"        type=\"hidden\" name=\"LOGOTP\" value=\"0\"/></form>\n" +
"<SCRIPT LANGUAGE=\"Javascript\">  function OnLoadEvent() {\n" +
"    document.forwardForm.submit();\n" +
"}</SCRIPT>\n" +
"</body>\n" +
"</html>";
       response.getOutputStream().write(respMsg.getBytes("utf8"));
   }
}

遇到问题

1.支付回调的逻辑的思路,还是不是很清楚。

明日计划

1.调试完成支付接口

收获

1.支付流程熟悉


返回列表 返回列表
评论

    分享到