发表于: 2018-04-04 22:09:56

0 583


今日完成

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 userIdString amtString bankCardString nameString idTypeString idNoString typeLong productIdString userBankInfoHttpServletRequest requestHttpServletResponse 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<StringStringparam new HashMap<StringString>();
           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_URLparam);
           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 requestHttpServletResponse 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.支付流程熟悉



返回列表 返回列表
评论

    分享到