No diré muchas tonterías, solo te publicaré el código Java.
El código específico es el siguiente:
/*Proceso de pago*// **** controlador.java El código es el siguiente:*/ @requestmapping (value = "/paysubMit.htm", método = requestmethod.post) public ModelAndView paySubMit (httpservletRequest request, httpServletRessonse respuesta, @RequestParam map <string> maps> mapssquest request, httpServletRonse respuesta, @RequestParam map <string> maps> maps) {neweNView Model = newnView Model ModelandView ("***/enviar");/*** bloque de código*/model return;}/*subt.jsp El código es el siguiente:*/< %@ page contentType = "text/html; charset = utf-8" lenguaje = "java" trimDirectivewhiteSpaces = "true" %> < %@ Page import = "Comp. ***. Util.pay.pay" Html public "-// w3c // dtd html 4.01 transitional // en"> <html> <fead> <title> pay </title> <meta http-oquiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" Content = "No-cache"> <meta http-ojtp- content="0"></head><body><%request.setCharacterEncoding("UTF-8");String type = (String) request.getAttribute("type");String sHtmlText = "";if ("1".equals(type)){sHtmlText = PayUtil.buildForm((String) request.getAttribute("orderNo"),(String) request.getAttribute ("amt"), type);} else {shtmlText = payUtil.allinPayBuildForm ((string) request.getAttribute ("ordenno"), (string) request.getAttribute ("amt"), type, request.} out.Println (shtmlText); El código de payUtil.java es el siguiente:* // *** Generar datos de página* @param URL la URL para el pago de terceros* @param Spara* @param strmethod* @return*/public static string buildReSt (string url, map <string, string> strmethod sbhtml = new StringBuffer (); sbhtml.append ("<form de formato =/" paySubform/"name =/" paySubform/"Action =/" + url + "/" método = "" + strmethod + "/"> "); for (int i = 0; i <keys.size (); ++ i) {String name = (String) Keys.get (i); String value = (String) Spara.get (name); sbhtml.append ("<input type =/" Hidden/"name =/" " + name +"/"valor =/" + valor + "/--"/>") n. ° }sbhtml.append(apend( ■PEND ESTYME =/" SUMPT/"SUMPT/" SUMPT/"/"/"/"/"/" value =/"confirmar/" style =/"visualización: ninguno;/"> </form> "); sbhtml.append (" <script> document.forms [/'paySubform/']. Subt (); </script> "); return sbhtml.ToString ();}/*** Tome el pago de la vida de las personas* @return*/public static string buildForm (string orderNo, string amt, string type) {// comerciante número de string string comercialD = propiedadiesread.use_classloador (). getProperty ("cmbc.pay.id"); // El número de pedido de transacción de número de pedido de pedido se genera por el sitio web de comerciante, con una longitud máxima de la longitud de 30 fuertes. Sujem = PropertiesRead.use_classloador (). 1 → Jump String AutoJump = "1"; // Jump Waiting Time String waitTime = "0"; // Merry Pickup URL String merurl = PropertiesRead.use_classloador (). GetProperty ("cmbc.pay.return.page.url"); // si notificar a los comerciantes: 0 → no notificar; 1 → No notificar la cadena informmer = "1"; // Notificación del comerciante urlString informurl = PropertiesRead.use_classloador (). GetProperty ("cmbc.pay.return.notify.url");/*** Confirmación de retorno del comerciante: 0 → no return; 1 → retorno*/cadena confirm = "1"; // pay bank string merbank = "vacía"; // paga tipo 0 → llegada instantánea; 1 → Cadena de transacción segura TradeType = "0"; // Si debe seleccionar un banco en el lado del comerciante: 0 → otro; 1 → Seleccione un banco en la cadena del lado del comerciante BankInput = "0"; // Versión de interfaz String Strinterface = "5.00"; // Observaciones (opcional) Información de observación de pago, longitud máxima 50String observar = "recarga"; // Pague el tipo de tarjeta bancaria 00 → mezcla de débito y préstamo; 01 → Cadena de débito puro bankCardType = "00"; // Descripción del producto cadena pdtdnm = "producto virtual"; // Descripción del producto Dirección Cadena pdtdetailUrl = Propertiesread.use_classloador (). GetProperty ("cmbc.pay.return.deta.url"); // Clave de pago): se debe establecer el pago de la plataforma de pago, puede registrarse en la plataforma de pago, puede registrarse en la plataforma de pago. Sistema de gestión para el mantenimiento, y úselo para enviar pagos comerciales y cargar los resultados de pago en Cinpt String md5key = PropertiesRead.use_classloador (). mac_src="merchantid="+merchantid+"&merorderid="+merorderid+"&amountsum="+amountsum+"&subject="+subject+"¤cytype="+currencytype+"&autojump="+autojump+"&waittime=" + waittime +"&merurl="+merurl+ "&informer=" + informmer + "& Informurl =" + Informurl + "& Confirm =" + Confirm + "& MerBank =" + Merbank + "& TradeType =" + TradeType + "& BankInput =" + BankInput + "& Interface =" + Strinterface + "& BankCardType =" + BankCardType + "& PdttetailUrl =" + PdtdetailUreRl + "&merkey="+MD5key;String mac = Crypto.GetMessageDigest(mac_src);// Pack the request parameters into mapMap<String, String> sParaTemp = new HashMap<String,String>();sParaTemp.put("merchantid", merchantid);sParaTemp.put("merorderid", comerciante); sparatemp.put ("montaSum", montaSum); sparatemp.put ("sujeto", sujeto); SparatEmp.put ("CurrencyPeType", CurrencyPe); Sparatemp.put ("AutoJump", AutoJump); Sparatemp.put ("WaitteMe", waittime); merurl); SparAtemp.put ("Informer", Informer); Sparatemp.put ("Informurl", Informer); Sparatemp.put ("Confirmar", Confirm); Sparatemp.put ("MerBank", MerBank); Sparatemp.put ("Tradetype", tradeType); Sparatemp.put ("BankInput", ",", ",", " bankInput);sParaTemp.put("interface", strInterface);sParaTemp.put("remark", remark);sParaTemp.put("bankcardtype", bankcardtype);sParaTemp.put("pdtdnm", pdtdnm);sParaTemp.put("pdtdetailurl", pdtdetailUrl); sparAtemp.put ("mac", mac); // crea una solicitud de cadena shtmlText = buildRequest (PropertiesRead.use_classloador (). getProperty ("cmbc.pay.url"), sparateMp, "post"); logger.info ("solicitud de mcpay: {}, shtmlExt); shtmlText;}/"crypto.java Code es el siguiente"/import java.security.messagegest; import java.security.nosuchalgorithmexception;/*** <p> Título: MD5 Cifrado Algorithm </p>*<p> Descripción: el comerciante no es necesario modificar <//p>***p>***************e Derechos reservados. </p>*/public class crypto {/*** Función: Cifrado MD5*@param strSrc Cadena de fuente cifrada*@return cifrado longitud de cadena 32 bits*/public static string getMessageGest (strsrc) {MessageDigest md = null; null strdes = null; final string algo_md5 = "md5"; strsrc.getBytes (); try {md = MessageDigest.getInstance (algo_md5); md.update (bt); strdes = bytes2hex (md.digest ());} catch (nosuchalgorithmexception e) {tire la nueva estatificación ilegal ("el MD5 algorithm no es el sistema! ");} return strdes;}/*** Convierta la matriz de bytes en cadena hex (hex string)* @param bts byte matriz para convertir* @return la cadena hex convertida bytes2hex (byte [] bts) {string des =" "; string tmp = null; for (int i = 0; i <bts.length; i++) {tmp (Integer.toHexString(bts[i] & 0xFF));if (tmp.length() == 1) {des += "0";}des += tmp;}return des;}}/*** Pay return call url (return to page)* @param session* @param request* @return*/@RequestMapping(value = "/allPayReturn.htm", method = RequestMethod.post) Public ModelAndView AllInpayReturnCall (httpservletRequest solicitud, respuesta httpservletResponse, @requestparam map <string, object> maps) {modelandView model = new ModelAndView ("***/PayReturn");/*** Code Block*/return Model;}Lo anterior es el conocimiento relevante del proceso general de implementar el pago y la recarga basado en el código Java introducido. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!