发表于: 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.支付流程熟悉
评论