1. Se pueden eliminar los paquetes inútiles con códigos de ACCIÓN clave.
importarlo.sauronsoftware.base64.Base64;
importar java.io.IOException;
importar java.io.PrintWriter;
importar java.net.HttpURLConnection;
importar java.util.HashMap;
importar java.util.Map;
importar java.util.ResourceBundle;
importar javax.servlet.http.HttpServletResponse;
importar org.apache.struts2.ServletActionContext;
importar org.dom4j.Document;
importar org.springframework.stereotype.Controller;
importar com.alibaba.fastjson.JSON;
importar com.hzdracom.action.BaseAction;
importar com.hzdracom.config.AlipayConfig;
importar com.hzdracom.util.AlipaySubmit;
importar com.hzdracom.util.HTTPService;
importar com.hzdracom.util.UtilDate;
importar com.hzlq.source.security.DESUtil;
/*
* Interfaz de pago Alipay
* @autor ZhuangZi
* @Direcciones
* @version $Id: DokuAction.java,v 0.1 2013-3-27 04:49:57 PM ZhuangZi Exp $
*/
@Controlador
La clase pública AlipayAction extiende BaseAction {
código telefónico de cadena privada;
tarifa total de cadena privada;
/**
* Llamar a la interfaz Alipay
* @autor ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @method Alipay
* @Directions llama a la interfaz Alipay
* @fecha 2013-3-27 04:53:35 pm nulo
*/
pago público nulo() {
intentar {
/*1****Generar el número de transacción de Alipay, basado en el tiempo al nivel de milisegundos*/
Cadena out_trade_no = UtilDate.getOrderNum();
/*2*****↓↓↓↓↓↓↓↓↓↓Empaque los parámetros de solicitud en una matriz↓↓↓↓↓↓↓↓↓↓*/
Mapa<Cadena, Cadena> sParaTemp = nuevo HashMap<Cadena, Cadena>();
sParaTemp = getPayPrama(tarifa total, out_trade_no);
/*3*****↓↓↓↓↓↓↓↓↓↓Solicitar interfaz Alipay ↓↓↓↓↓↓↓↓↓↓*/
String json = AlipaySubmit.buildRequest(sParaTemp, "obtener", "confirmar");
Respuesta HttpServletResponse = ServletActionContext.getResponse();
respuesta.setContentType("texto/html");
respuesta.setCharacterEncoding("utf-8");
PrintWriter fuera;
salida = respuesta.getWriter();
json = JSON.toJSONString(json);
out.write(json);
salida.flush();
fuera.cerrar();
} captura (IOException e) {
}
}
/**
*
* @autor ZhuangZi
* @class com.hzdracom.alipay.action.AliPayAction
* @method GetPayPrama
* @Directions encapsula los parámetros de llamada de Alipay
* @ fecha 2013-4-1 05:26:11 pm
* @param monto total de la tarifa
* @param out_trade_no número de pedido
* @return Mapa<Cadena,Cadena>
*/
Mapa público<String, String> getPayPrama(String totalfee, String out_trade_no) {
Mapa<Cadena, Cadena> sParaTemp = nuevo HashMap<Cadena, Cadena>();
sParaTemp.put("servicio", "create_direct_pay_by_user");
sParaTemp.put("socio", AlipayConfig.socio);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("tipo_pago", AlipayConfig.tipo_pago);
/*Ruta de la página de notificación asincrónica del servidor //Requiere una ruta completa en formato http:// y no puede agregar parámetros personalizados como ?id=123*/
sParaTemp.put("notify_url", AlipayConfig.notify_url);
/*Ruta de la página de notificación de sincronización de salto de página//Requiere una ruta completa en formato http://. Los parámetros personalizados como ?id=123 no se pueden agregar y no se pueden escribir como http://localhost/*/.
sParaTemp.put("return_url", AlipayConfig.return_url);
/*Cuenta Alipay del vendedor*/
sParaTemp.put("correo electrónico_vendedor", AlipayConfig.correo electrónico_vendedor);
/*Número de pedido del comerciante*/
sParaTemp.put("out_trade_no", out_trade_no);
/*Nombre del pedido*/
sParaTemp.put("asunto", AlipayConfig.asunto);
/*Monto del pago*/
sParaTemp.put("tarifa_total", tarifa total);
/*Descripción del pedido*/
sParaTemp.put("cuerpo", AlipayConfig.body);
/*Requiere una ruta completa que comience con http://, por ejemplo: http://www.xxx.com/myorder.html*/
sParaTemp.put("show_url", AlipayConfig.show_url);
//Marca de tiempo antiphishing
sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);
/*La dirección IP del cliente no es la dirección IP externa de la LAN, como por ejemplo: 221.0.0.1*/
sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);
devolver sParaTemp;
}
cadena pública getPhoneCode() {
devolver código telefónico;
}
setPhoneCode público vacío (String phoneCode) {
this.phoneCode = teléfonoCode;
}
cadena pública getTotalfee() {
tarifa total de devolución;
}
setTotalfee público vacío (tarifa total de cadena) {
this.totalfee = tarifa total;
}
}
2. La clase AlipayConfig encapsula los parámetros de la interfaz Alipay
importar com.hzdracom.util.UtilDate;
/* *
*Nombre de clase: AlipayConfig
*Función: Clase de configuración básica
*Detalles: establece información relacionada con la cuenta y ruta de regreso
*Versión: 3.3
*Fecha: 2012-08-10
*ilustrar:
*El siguiente código es solo un código de muestra proporcionado para facilitar las pruebas de los comerciantes. Los comerciantes pueden escribirlo de acuerdo con la documentación técnica de acuerdo con las necesidades de sus propios sitios web y no están obligados a utilizar este código.
*Este código es sólo para aprender e investigar la interfaz de Alipay y sólo se proporciona como referencia.
*Consejo: Cómo obtener el código de verificación de seguridad y el ID de socio
*1 Utilice su cuenta Alipay contratada para iniciar sesión en el sitio web de Alipay (www.alipay.com).
*2. Haga clic en "Servicios comerciales" (https://b.alipay.com/order/myOrder.htm)
*3. Haga clic en "Consultar identidad de socio (PID)" y "Consultar código de verificación de seguridad (clave)".
*Al ver el código de verificación de seguridad, después de ingresar la contraseña de pago, la página se vuelve gris. ¿Qué debo hacer?
*Solución:
*1. Verifique la configuración del navegador y no permita que el navegador bloquee las viñetas.
*2. Cambie el navegador o la computadora e inicie sesión nuevamente para realizar la consulta.
*/
clase pública AlipayConfig {
//↓↓↓↓↓↓↓↓↓↓Por favor configura tu información básica aquí↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
// ID de socio, una cadena de 16 dígitos que comienza con 2088
socio de cadena estática pública = "2088001466494907";
// clave privada del comerciante
clave de cadena estática pública = "fb30213vjc4k4oabt7z4q9e07sfmlmzr";
// ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ Configure su información básica aquí ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
//Para depurar, cree la ruta de la carpeta de registro TXT
cadena estática pública log_path = "D://";
//El formato de codificación de caracteres actualmente admite gbk o utf-8
Cadena estática pública input_charset = "utf-8";
// No es necesario modificar el método de firma
Cadena estática pública sign_type = "MD5";
cadena estática pública tipo_pago = "1";
//Obligatorio, no se puede modificar
//Ruta de la página de notificación asíncrona del servidor
Cadena estática pública notify_url = "notify_url.jsp";
// Se requiere la ruta completa en formato http:// y no se pueden agregar parámetros personalizados como ?id=123.
// Ruta de la página de notificación de sincronización de salto de página
Cadena estática pública return_url = "return_url.jsp";
// Se requiere la ruta completa en formato http://. No se pueden agregar parámetros personalizados como ?id=123 y http://localhost/.
//Cuenta Alipay del vendedor
Cadena estática pública seller_email = "[email protected]";
//requerido
//Número de pedido del comerciante
Cadena estática pública out_trade_no =UtilDate.getOrderNum();
//El único número de pedido en el sistema de pedidos del sitio web del comerciante, obligatorio
//Nombre del pedido
public static String asunto = "Recarga de cuenta oculta";
//requerido
//Descripción del pedido
cuerpo de cadena estática pública = "Recarga de cuenta oculta";
//Dirección de visualización del producto
Cadena estática pública show_url = "";
//Marca de tiempo antiphishing
Cadena estática pública anti_phishing_key="";
/*La dirección IP del cliente no es la dirección IP externa de la LAN, como por ejemplo: 221.0.0.1*/
Cadena estática pública exter_invoke_ip="";
}
3. archivo de configuración del puntal
<nombre de acción="pagar" método="pagar">
</acción>
Lo anterior es la parte del código clave. Las cosas a tener en cuenta son:
1. Debe introducir varias clases de la interfaz proporcionada por Alipay en su proyecto, incluido el paquete estantería.
2. Las direcciones notify_url.jsp y return_url.jsp deben prepararse para que sean la ruta completa de la dirección de red externa.
3. Escriba su propio procesamiento comercial en notify_url.jsp, o puede escribir directamente una interfaz para llamar a la interfaz Alipay.