Varios archivos de funciones de kernel de Alipay:
Alipayfunction.java
paquete com.test.util.alipay; import java.io.filewriter; import java.io.ioException; import java.net.malFormedUrexception; import java.net.url; import java.util.arrayList; import java.util.collections; import java.util.hashmap; import java.util.list; import java.util.map; importar org.dom4j.document; importar org.dom4j.documentException; importar org.dom4j.node; importar org.dom4j.io.saxreader; clase pública AlipayFunction { / *** Función: Genere el resultado de la firma* @param sarray array se firmará* @param clave de verificación de seguridad de clave* @return string string* / public static string buildMysign (map sarray, tecla de cadena) {String prestr = createLinkString (sarray); // Spline todos los elementos de la matriz en una cadena utilizando el carácter "&" de acuerdo con el "Parámetro = Valor de parámetro" prest = prest + clave; // Conecte la cadena empalmada directamente con la cadena del código de verificación de seguridad mySign = md5Encrypt.md5 (prest); devolver mysign; } / *** Función: Elimine los valores nulos y los parámetros de firma en la matriz* @param Sarray Signature Signature Parameter Group* @return Eliminar los valores nulos y el nuevo grupo de parámetros de firma* / public static map parafilter (map sarray) {list keys = new ArrayList (sarray.keySet ()); Mapa sarraynew = new Hashmap (); for (int i = 0; i <keys.size (); i ++) {string key = (string) keys.get (i); String value = (string) sarray.get (clave); if (value == null || value.equals ("") || key.equalSignorecase ("firmar") || key.equalSignorEcase ("firm_type")) {continuar; } sarraynew.put (clave, valor); } return sarraynew; } / *** Función: Ordene todos los elementos de la matriz y los emplome en cadenas en el carácter "&" de acuerdo con el patrón "Parámetro = Valor de parámetro"* @Param Params Params Parameter Groups que deben clasificarse y participar en la empalme de caracteres* @return String después de empalmar* / public String CreateLinkstring (parámetros de map) {listas de listas listas listas = new Archallist (parámetro (parámetros (parámetros (parámetros (parámetros ();););); Colección.sort (claves); Cadena prest = ""; for (int i = 0; i <keys.size (); i ++) {string key = (string) keys.get (i); String value = (string) params.get (key); if (i == keys.size () - 1) {// Al empalmar, el último carácter no está incluido prestr = prest + key + "=" + valor; } else {prest = prest + key + "=" + valor + "&"; }} return prest; } / *** Función: escriba registros para realizar pruebas fáciles (consulte los requisitos del sitio web, también puede cambiar para almacenar registros en la base de datos)* @param Sword Text Content para escribir en el registro* / public static void logresult (string sword) {// Este archivo existe en el mismo directorio que el archivo de inicio del servidor de aplicaciones, el nombre de archivo es alipay log el servidor de servidor {archivador escritor = nuevo FileWriter ("d: // alipay_log" + system.currentTimemillis () + ".txt"); escritor.write (espada); escritor.close (); } catch (Exception e) {E.PrintStackTrace (); }} / ** * Función: Se usa para evitar el phishing, llame a la interfaz Query_timestamp para obtener la función de procesamiento de la marca de tiempo * Nota: Se produjo un error en el XML de análisis remoto, que está relacionado con si el servidor admite SSL y otras configuraciones * @Param Identidad de la cooperación ID * @@return stimestamp String * @throws iOexception * @throws Documente * @throws MalformeDurEdurEncepción * / PUBLICETURACTINT * QUERY_TIMESTAMP (String Partner) lanza MalFormedUreLeCeption, DocumentException, IOException {String Strurl = "https://mapi.alipay.com/gateway.do?service=Query_timestamp&partner="+Partner; StringBuffer buf1 = new StringBuffer (); Saxreader lector = new saxreader (); Documento doc = lector.read (new URL (Strurl) .OpenStream ()); List <node> nodelist = doc.selectNodes ("// alipay/*"); for (nodo nodo: nodelist) {// intercepta la información que no necesita ser analizada if (node.getName (). Equals ("is_success") && node.gettext (). Equals ("t")) {// Determinar si hay una lista de marcas exitosa <node> nodelist1 = doc.selectnodes ("///la respuesta/respuesta de tiempo*"); for (nodo nodo1: nodelist1) {buf1.append (node1.gettext ()); }} return buf1.ToString (); }}}Alipaynotify.java
paquete com.test.util.alipay; import java.io.bufferedReader; import java.io.inputstreamreader; import java.net.httpurlconnection; import java.net.url; import java.util.map; import com.test.constants.alipayconfig; clase pública AlipayNotify {/*** Función: Genere resultados de firma basado en la información devuelta* @param parámetros de notificación parámetro matriz devuelto* @param clave de verificación de seguridad clave* @return Resultados de firma generado*/public static string getMysign (map params, string key) {map sparanew = alipayfunct.parafilter (params); // // Valores de map parámetros) mySign = AlipayFunction.BuildMysign (Sparanew, Key); // Obtener el resultado de la firma return mySign; } /** * * Función: Obtenga el resultado ATN del servidor remoto, verifique la url de retorno * @param notify_id notify ID de verificación * @return servidor ATN Resultado * Verifique el conjunto de resultados: * Este error ocurre cuando el parámetro de comando inválido es incorrecto. Verifique si el socio y la clave están vacíos en el proceso de retorno* Verdadero returación Información correcta* Falso verifique los problemas de puerto de firewall o de bloqueo del servidor y verifique si el tiempo excede un minuto*/public static String Verify (String Notify_id) {// Obtener el resultado ATN del servidor remoto y verificar si es una solicitud enviada por el servidor alipay transporte transport = alipayconfig.transport; String Partner = AlipayConfig.Partner; Cadena muyfy_url = ""; if (transport.equalSignorEcase ("https")) {muyfy_url = "https://www.alipay.com/cooperate/gateway.do?service=notify_verify"; } else {muyfy_url = "http://notify.alipay.com/trade/notify_query.do?"; } Muyfy_url = muyfy_url + "& socio =" + socio + "¬ify_id =" + notify_id; Cadena Responsetxt = checkUrl (muyfy_url); return ResponseTxt; } /**** Función: Obtenga el resultado ATN del servidor remoto* @param UrlValue Especifique la dirección de ruta de URL* @return servidor ATN Resultado* Estado de resultados de verificación:* Este error ocurre cuando el parámetro de comando no es incorrecto. Verifique si el socio y la clave están vacíos en el proceso de retorno* Verdadero retorno Información correcta* Falso verifique los problemas del puerto de bloqueo del firewall o del servidor y verifique que el tiempo exceda un minuto*/ public static String checkurl (string urlValue) {string inputline = ""; intente {url url = new url (urlValue); Httpurlconnection urlconnection = (httpurlconnection) url .openconnection (); BufferedReader in = new BufferedReader (new InputStreamReader (urlconnection.getInputStream ())); inputline = in.readline (). toString (); } catch (Exception e) {E.PrintStackTrace (); } return fullline; }}Alipayservice.java
paquete com.test.util.alipay; import java.util.arrayList; import java.util.hashmap; import java.util.list; import java.util.map; clase pública Alipayservice { /** * Función: Construya el envío del formulario Html * @param socio ID cooperativo * @param seller_email firmando cuenta alipay o vendedor cuenta alipay * @param return_url La página que salta después del pago debe usarse para comenzar con http. Los parámetros personalizados como? Id = 123 no se permite agregar* @param notify_url Durante el proceso de transacción, la página notificada por el servidor debe usar la ruta completa en el formato abierto por http. Los parámetros personalizados como? Id = 123 no se permite agregar. * @param show_url La dirección de visualización del producto del sitio web, y no se permite agregar parámetros personalizados como? Id = 123. * @param out_trade_NO Haga coincidir el número de pedido único en el sistema de pedidos de su sitio web* @param Sujeto El nombre del pedido se muestra en el "nombre del producto" en el cajero de Alipay y en la lista de "nombre del producto" en la gestión de transacciones de Alipay. * @param Descripción del pedido del cuerpo, detalles del pedido, notas del pedido, que se muestra en la "descripción del producto" en el cajero Alipay* @param total_fee El monto total del pedido se muestra en el "total pagadero" en el cajero Alipay* @param PageMethod Método de pago por defecto, cuatro valores están disponibles: BankPay (Bank en línea); dibujos animados (dibujos animados); directpay (balance); Efectivo (pago por Internet) * @param defaultBank Código de banca en línea predeterminado, consulte club.alipay.com/read.php?tid=8681379 * @param cifrypt_key Anti-phishing timestamp * @param exter_invoke_ip la dirección IP de la computadora local * @param extra_comommon_param parámetros personalizados, que pueden almacenar cualquier contenido (excepto para el contenido (excepto para el contenido (excepto para el contenido de la página del comprador * @param extra_comomon_param. * @param Buyer_Email Cuenta de compromiso de comprador predeterminada * @param royalty_type Tipo de compromiso, que es un valor fijo: 10, y no necesita modificarse * @param regalty_parameters Conjunto de información de compromiso, y obtener dinámicamente cada cuenta de recaudación de ganancias, cada monto de la ganancia y cada descripción de ganancias para cada transacción basada en la situación del sitio web de comerciante. Solo se pueden configurar 10 caracteres como máximo* @param input_charset El formato de codificación de caracteres actualmente admite GBK o UTF-8* @param Código de verificación de seguridad de clave* @param Sign_Type El método de firma no necesita modificarse* @param clave de verificación de seguridad* @return formación html text*/ public static string form (string socio, string stings string string, string striebe Security VERIFICA show_url, string out_trade_no, string sember, string body, string total_fee, string paymethod, string defaultBank, string anti_phishing_key, string exter_invoke_ip, string extra_common_param, string buyer_email, string royaltype, string royalty_parameters, string oputset, string string symtype, string it it) = nuevo hashmap (); spara.put ("servicio", "create_direct_pay_by_user"); Spara.put ("Payment_Type", "1"); spara.put ("socio", socio); spara.put ("Seller_Email", Seller_Email); spara.put ("return_url", return_url); spara.put ("notify_url", notify_url); spara.put ("_ input_charset", input_charset); spara.put ("show_url", show_url); spara.put ("out_trade_no", out_trade_no); spara.put ("sujeto", sujeto); spara.put ("cuerpo", cuerpo); spara.put ("Total_fee", Total_fee); Spara.put ("PayMethod", PayMethod); spara.put ("DefaultBank", DefaultBank); spara.put ("anti_phishing_key", anti_phishing_key); spara.put ("Exter_invoke_ip", exter_invoke_ip); spara.put ("extra_common_param", extra_common_param); spara.put ("Buyer_Email", Buyer_Email); Spara.put ("Royalty_Type", Royalty_Type); Spara.put ("Royalty_Parameters", Royalty_Parameters); spara.put ("it_b_pay", it_b_pay); Map sparanew = AlipayFunction.Parafilter (Spara); // Eliminar los valores nulos en la matriz y los parámetros de firma cadena mysign = alipayfunction.buildmysign (sparanew, key); // Generar el resultado de la firma StringBuffer sbhtml = new StringBuffer (); Lista de listas = new ArrayList (Sparanew.KeySet ()); String Gateway = "https://www.alipay.com/cooperate/gateway.do?"; // Get Method Pass // sbhtml.append ("<form de formato =/" alipaysubmit/"name =/" alipaysubmit/"action =/" " + gateway +" _input_charset = " + input_charset +"/"método =/" get/">"); // Post Method Pass (Get and Post debe ser seleccionado) sbhtml.append ("<form de formato =/" alipaysubmit/"name =/" alipaysubmit/"acción =/" " + puerta de enlace +" _input_charset = " + input_charset +"/"método =/" post/">"); for (int i = 0; i <keys.size (); i ++) {string name = (string) keys.get (i); String value = (string) sparanew.get (nombre); sbhtml.append ("<input type =/" Hidden/"name =/" " + name +"/"value =/" + value + "/" // ");} sbhtml.append (" <input type =/"Hidden/" name =/"firma/" value =/" + mySign +"/"/>"); sbhtml.append ("inping/" value =/" + mySign +"/"/>"); type =/"Hidden/" name =/"sign_type/" value =/"" + sign_type + "/" // "); // Control de botón Enviar, por favor no contenga el atributo de nombre sbhtml.append (" <input type =/"subsit/" value =/"pago de confirmación de alipay/"> </form> "); sbhtml.append ("<script> document.forms ['alipaysubmit']. Subt (); </script>");MD5Encrypt.Java
paquete com.test.util.alipay; import java.io.unsupportedencodingException; import java.security.MessageGest; import java.security.nosuchalgorithmexception; import com.test.constants.alipayconfig; /** * Función: Alipay MD5 encrypts y procesa archivos centrales, y no requiere modificación * Versión: 3.1 * Fecha de modificación: 2010-11-01 * Descripción: * El siguiente código es solo un código de muestra proporcionado para conveniencia para las pruebas de comerciante. Los comerciantes pueden escribirlo de acuerdo con las necesidades de su propio sitio web y de acuerdo con los documentos técnicos. Este código no es necesariamente necesario. * Este código es solo para aprender e investigar la interfaz Alipay, pero solo proporciona una clase publicitaria * */ pública MD5Encrypt {/ ** * utilizó la salida de construcción como hex */ private static final char [] digits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'B', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', ',', '. 'F'}; / *** MD5 Cifrado de cadenas** @param text* Ensermintext** @return cipherText*/ public static string md5 (texto de cadena) {messageDigest msgdigest = null; intente {msgdigest = messageDigest.getInstance ("md5"); } Catch (nosuchalgorithMexception e) {tirar nueva ilegalStateException ("El sistema no admite el algoritmo MD5"); } try {msgdigest.update (text.getBytes (alipayconfig.input_charset)); // Tenga en cuenta que cambiar la interfaz está firmada en el formato de codificación especificado} captura (no comportedEncodingException e) {Throw New IlegalStateException ("El sistema no es compatible con su EcodingException"); } byte [] bytes = msgdigest.digest (); Cadena md5str = new String (encodeHex (bytes)); return md5str; } public static char [] encodeHex (byte [] data) {int l = data.length; char [] out = new Char [l << 1]; // Dos caracteres forman el valor hexadecimal. for (int i = 0, j = 0; i <l; i ++) {out [j ++] = dígitos [(0xf0 & data [i]) >>> 4]; out [j ++] = dígitos [0x0f & data [i]]; } regresar; }}Alipayconfig.java Aquí hay algunas configuraciones para el número de cuenta, clave, dirección de conexión de devolución de llamada, etc.
paquete com.test.constants; import java.util.properties; import com.test.util.propertiesutil; clase pública alipayconfig {private static alipayconfig alconfig = null; private alipayconfig () {} public static alipayconfig getInstance () {if (alconfig == null) {alconfig = new alipayConfig (); } return alconfig; } // Cómo obtener el código de verificación de seguridad y el ID de socio // 1. Visite el Centro de Servicio de Comerciantes Alipay (b.alipay.com) y luego inicie sesión con su cuenta de Alipay contratada. // 2. Acceda a "Servicios técnicos" → "Descargar Documentos de integración de tecnología" (https://b.alipay.com/support/helperapply.htm?action=SelfiNeGration) // 3. En la "ayuda de integración de auto-servicio", haga clic en "consultas de identificación de socios" y "código de verificación de seguridad (clave) consulta" // ↓↓ueloueloueloueloueloueloit las las lasinas Gelestadorle. Gon iguueloueloueloueloueloueloulouloipo y igual vista yipas! socio = "2088601003079118"; Servicio de cadena estática pública = "create_direct_pay_by_user"; // Código de verificación de seguridad de transacción, cadena de 32 bits compuesta de números y letras de cadena estática pública clave = "ZXCDVXGKSAAM2ZJRMV5CV0P4JQESAIOH"; // Regístrese en la cuenta Alipay o el pago del vendedor de la cuenta Alipay Public static String Seller_email = "[email protected]"; // leer el archivo de configuración // notify_url La página de notificación del servidor durante la transacción debe usar la ruta completa en el formato de http: // format, y los parámetros personalizados como? Id = 123 no se permiten agregar una cadena estática notify_URL = "http: www.xxx.com/proyectName/alipaytrade.action"; // La página que salta después del pago debe usar la ruta completa en el formato de http: //., Y no se permite agregar parámetros personalizados como? Id = 123. El nombre de dominio de return_url no se puede escribir como http: //localhost/js_jsp_utf8/return_url.jsp, de lo contrario la ejecución return_url no será válida. // public static String return_url = "http: www.xxx.com/projectname/alipaytrade.action"; // La dirección de visualización del producto del sitio web, los parámetros personalizados como? Id = 123 no se permite agregar una cadena estática pública show_url = "http://www.alipay.com"; // El nombre del beneficiario, como: nombre de la empresa, nombre del sitio web, nombre del beneficiario, etc. Cadena estática pública mainname = "Nombre del pagador"; // ↑ger geritude ↑↑ger es String transport = "http"; }Aquí hay un simple proceso de aplicación:
No hablaré sobre lo que llamas de JSP, porque esto solo se pasa al fondo, cuál es el precio y otros parámetros.
Aquí hay una descripción del procesamiento de fondo:
PaymentAction.java
/ *** Obtener el número de orden de transacción Alipay* @return*/ public synchronized static string getOrderNum () {date date = new Date (); DateFormat df = new SimpleDateFormat ("yyyymmddhhmmsssss"); return df.format (fecha); } protegido httpservletRequest getRequest () {return servletActionContext.getRequest (); } // Número de orden de transacción Alipay String OrderNum = getOrderNum (); // La cantidad total de esta transacción getRequest (). SetAttribute ("totalMoney", "0.01"); // El número de pedido de esta transacción getRequest (). SetAttribute ("out_trade_no", ordennum); // Nombre del producto Descripción GetRequest (). SetAttribute ("Asunto", "Nombre del producto"); // El proceso de almacenar esta información de pedido a la base de datos se omite aquíalipay.jsp
<%@page import = "com.test.constants.alipayconfig"%> <%@page import = "com.test.util.alipay.utildate"%> <%@page import = "com.test.util.alipay.alipayservice"%> <% / * función: establecer información relacionada con el producto (entrada de entrada) * Detalles: esta página es la página de portal interfacio, la página de la orulidad * de la orl * Fecha: 2010-11-01 * Descripción: * El siguiente código es solo un código de muestra proporcionado para la conveniencia de las pruebas comerciales. Los comerciantes pueden escribirlo de acuerdo con las necesidades de su propio sitio web y de acuerdo con los documentos técnicos, y no es necesario usar este código. *Este código es para aprender e investigar solo la interfaz Alipay, y solo se proporciona como referencia. ****************************************** Si encuentra problemas durante la integración de la interfaz, puede ir al Centro de Servicios Mercantes (https://b.alipay.com/support/helperapply.htm?action=ConsultationApply) para enviar una aplicación para asistencia de integración. Tendremos ingenieros técnicos profesionales que se comunicaron con usted para ayudar a resolver el problema. También puede ir al Foro Alipay (http://club.alipay.com/read-htm-tid-8681712.html) para encontrar soluciones relevantes. Los parámetros a pasar no están permitidos, o no aparecen en la matriz, controles ocultos o enlaces de URL. *************************************************************/%> <%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> < <html> <fead> <meta http-equiv = "content-type" content = "text /html; charset = utf-8"> <title> test </title> <link rel = "shortcut icon" href = "favicon.iCo"> <meta name = "keeyalswalls" Content = " /" /> <meta name = "Content" Content "Content" Content "" /"" "" "" "" "" "" " type = "text/css"> .font_content {font-family: "客"; tamaño de fuente: 14px; Color:#FF6600; } .font_title {Font-Family: "客"; tamaño de fuente: 16px; Color:#FF0000; Font-Weight: Bold; } tabla {border: 1px sólido #ccccccc; } </style> <script type = "text/javaScript"> var _gaq = _gaq || []; _gaq.push (['_ setAcCount', 'UA-25469955-1']); _gaq.push (['_ TrackPageView']); (function () {var ga = document.createElement ('script'); ga.type = 'text/javaScript'; ga.async = true; ga.src = ('https:' == document.location.protocol? 'https: // ssl': 'http: //www') + '.Google-analytics.com/ga.Jsy; document.getElementsByTagName ('script') [0]; </script> </head> <% //request.setcharacterEncoding("UTF-8 "); // Información de configuración en alipyconfig.java (no se puede modificar) cadena input_charset = alipayconfig.getInstance (). Input_charset; Cadena sign_type = alipayconfig.getInstance (). Sign_type; String seller_email = alipayconfig.getInstance (). Seller_Email; String Partner = AlipayConfig.getInstance (). Partner; Clave de cadena = AlipayConfig.getInstance (). Key; Cadena show_url = alipayconfig.getInstance (). Show_url; Cadena notify_url = alipayconfig.getInstance (). Notify_url; Cadena return_url = alipayconfig.getInstance (). Return_url; Cadena it_b_pay = alipayconfig.getInstance (). It_b_pay; /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// String SUMTING = (String) request.getAttribute ("sujeto"); // Descripción del pedido, detalles del pedido, notas de pedido se muestran en la "Descripción del producto" en el cuerpo de cajero Alipay Body = (String) request.getAttribute ("Body"); // El monto total del pedido se muestra en el "total pagadero" en la cadena de cajero Alipay Total_fee = (String) request.getAttribute ("TotalMoney"); // Parámetros de la función extendida - Método de pago predeterminado // String pay_mode = request.getParameter ("pay_bank"); String paymethod = ""; // Método de pago por defecto, hay cuatro valores disponibles: BankPay (banca en línea); dibujos animados (dibujos animados); directpay (balance); Efectivo (pago por Internet) cadena defaultBank = ""; // Código de banca en línea predeterminado, consulte http://club.alipay.com/read.php?tid=8681379 /*if(pay_mode.equals("directpay ")) {paymethod =" directpay "; } else {paymethod = "bankpay"; defaultBank = pay_mode; }*/// Parámetros de función extendida-Anti-Phishing // Elija cuidadosamente si habilitar la función anti-phishing // Una vez que se hayan establecido Exter_invoke_IP y Anti-Phishing_Key, se convertirán en los parámetros requeridos // Después de activar la función anti-phishing, el servidor y la computadora local deben soportar el parsante de XML remoto, configurar el entorno. // Se recomienda usar POST para solicitar la cadena de datos anti_phishing_key = ""; // cadena de marca de tiempo anti-phishing Exter_invoke_ip = ""; // Obtener la dirección IP del cliente, sugerir: escriba un programa para obtener la dirección IP del cliente // por ejemplo: // anti-phishing_key = alipayfunction.query_timestamp (socio); // Obtener la función de marca de tiempo anti-phishing // exter_invoke_ip = "202.1.1.1"; // Parámetros de función extendida - Otra cadena extra_common_param = ""; // Parámetros personalizados, puede almacenar cualquier contenido (excepto caracteres especiales como = y y), y no se mostrará en la página String Buyer_Email = "137672927"; // cadena de cuenta Alipay de comprador predeterminada extend_param = ""; // Parámetros de función extendida: dividiera la ganancia (si desea usarlo, asigne valores de acuerdo con el formato requerido por el comentario) String Royalty_Type = ""; // Tipo de comisión, este valor es un valor fijo: 10, no es necesario modificar String Royalty_Parameters = ""; // Conjunto de información de comisión, obtenga dinámicamente cada cuenta de pago dividida, cada monto dividido y cada descripción dividida de cada transacción basada en la propia situación del sitio web del comerciante. Solo puede configurar hasta 10 elementos // La suma de cada monto de la acción debe ser menor o igual a Total_fee // El formato del conjunto de información de la Comisión es: Correo electrónico_1^Cantidad 1^Observación 1 | Correo electrónico_2^Cantidad 2^Observación 2 // Por ejemplo: // Royalty_Type = "10" // Parameters_Parameters = "[email protected]^0.01^^rememememememememememememememememememememememememememem 1|[email protected]^0. // Código de error: self_timeout_not_support it_b_pay = ""; // Constructor, Genere la cadena de url de solicitud de solicitud shtmlText = alipayservice.buildform (socio, seller_email, return_url, notify_url, show_url, out_trade_no, asunto, body, total_fee, paymethod, defaultbank, anti_phishing_key, exter_invoke_ip, extra_common_param, buyeram, buyer, buyer, buyer, buyer_email, Royalty_Type, Royalty_Parameters, input_charset, Key, Sign_Type, IT_B_Pay); %> <body> <table align = "Center" CellPadding = "5" CellPacing = "0"> <tr> <td align = "Center" colspan = "2"> Confirmación de pedido </td> </tr> <tr> <tr> <td align = "derecho"> Número de pedido: </td> <td align = "izquierda"> <%= out_trade °%> </td> </td> </td> </td> </tr> </tr> </tr> </tril. <td align = "right"> monto total de pago: </td> <td align = "izquierda"> <%= total_fee%> </td> </tr> <tr> <td align = "center" colspan = "2"> <%= shtmltext%> </td> </tr> </table> </body> </hml>>Interfaz a Alipay Callback: AlipayNotify.java
paquete com.test.action.payment; import java.util.date; import java.util.list; import com.test.action.base.baseaction; import com.test.dao.model.paymentcenter.orderform; import com.test.dao.model.paymentCenter.OrderList; import com.test.dao.model.paymentcenter.userpurview; clase pública AlipayNotify extiende Baseaction {Private estático final Long SerialVersionUid = 1L; Cadena privada Buyer_email; Private Long Buyer_id; Exterfaz de cadena privada; cadena privada is_success; cadena privada notify_id; cadena privada notify_time; cadena privada notify_type; cadena privada out_trade_no; string privado pagos_type; Vendedor de cadena privada_email; Private Long Seller_id; sujeto de cadena privada; flotante privado Total_fee; cadena privada comercial_no; cadena privada comercial_status; signo de cadena privada; cadena privada sign_type; orden de orden privado de; // ... los métodos de Get and Set se omiten aquí……………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………………………………… de.setTradestatus (1); of.setTradeno (this.trade_no); of.setNotifyTime (nueva fecha ()); OrderFormService.UpdateOldModel (of); // Actualizar la lista <RidreList> OrderList = OrderListService .FindorderFormsByOutTradeno (this.out_trade_no); para (OrderList OL: OrderList) {// El código lógico para el pedido de procesamiento se omite aquí …………………}} // Después de que la devolución de llamada es exitosa, devuelva el éxito a Alipay y return Success; } return "falla"; }}De esta manera, se implementa la interfaz de llegada de la cuenta instantánea de terceros de Alipay.
Lo anterior es la implementación de Java de la función de pago instantánea Alipay de Alipay de Alipay que le presenté. 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!