1. Documento oficial de WeChat Proceso de desarrollo de pagos WeChat (pago de la cuenta pública)
Primero, vamos a la sección de pasos de desarrollo de la documentación oficial de WeChat Pay para verificar la configuración requerida.
[Falló la carga de la imagen ... (Imagen-5EB825-1531014079742)]
Debido a que el pago de WeChat requiere altos permisos, solo las cuentas de servicio certificadas pueden tener el permiso para usar la interfaz de pago de WeChat. Es difícil para nosotros solicitarlo personalmente, por lo que necesitamos pedir prestada una cuenta de otros amigos.
Venga al proceso de negocio parte del documento y verifique el proceso de pago de WeChat (creo que esto aún requiere una comprensión y visualización muy cuidadosa, lo que lo ayudará a comprender el proceso de desarrollo de WeChat).
Luego, acceder a la interfaz de pago de WeChat requiere que se pasen muchos parámetros. Ver el single unificado
[Falló la carga de la imagen ... (Imagen-DF7051-1531014079742)]
Después de verificar los documentos oficiales de pago de WeChat anteriores, creo que debe tener una cierta comprensión de estos, pero todavía creo que el desarrollo del pago de WeChat es muy problemático, por lo que usaremos SDK de terceros para desarrollar.
2. Desarrollo de SDK de terceros WeChat Pay (pago de la cuenta pública)
Este es un pago para la cuenta oficial. Usamos el mejor pago-sdk. Este SDK utiliza PayRequest y PaySponse para encapsular la interfaz de solicitud y los resultados correspondientes. Los principales parámetros que deben pasar dinámicamente son OpenID (identificador único del usuario) y OrderId. A continuación, echemos un vistazo a cómo desarrollarse.
1. Configuración
// Configuración de pago de la cuenta pública de WeChat wxpayh5config wxpayh5config = new wxpayh5config (); wxpayh5config.setappid ("xxxxx"); wxpayh5config.setappSecret ("xxxxxxxx"); wxpayh5config.setMchid ("xxxxxxx"); wxpayh5config.setmchkey ("xxxxxxxx"); wxpayh5config.setNotifyUrl ("http: // xxxxx"); // Clase de pago, todos los métodos están en esta clase BestPayServiceImpl bestPayservice = nuevo BestPayserviceImpl (); bestpayservice.setwxpayh5config (wxpayh5config);2. Iniciar el pago
PayRequest PayRequest = new PayRequest (); PayRequest.SetPayTypeenum (bestPayTypeenum.wxpay_h5); PayRequest.SetOrderId ("123456"); PayRequest.SetOrderName ("Orden de pago de la cuenta pública de WeChat"); PayRequest.SetOrderMount (0.01); PayRequest.SetOpenId ("OpenID_XXXXXXX"); bestpayservice.pay (PayRequest);3. Devolución de llamada asincrónica
bestPayService.asyncNotify();
Esto es lo que este SDK dice 10 líneas de código para resolver el pago de WeChat.
Después de completar el pago, WeChat le devolverá el resultado del pago como datos XML de pago. Necesitamos pasar estos datos a la URL de notificación asíncrona (notify_url) para completar la verificación del resultado del pago (verifique la firma, verifique el estado de pago). Ambos pasos del SDK se realizan por nosotros. Simplemente llame a BestPayservice.asyncnotify (notifyData);, después de completar la verificación, necesitamos devolver una pieza de datos a WeChat:
<xml> <surne_code> <! [CDATA [Success]]> </return_code> <surn_msg> <! [CDATA [OK]]> </return_msg> </xml>
Dígale a WeChat que la verificación se ha completado y no nos envía ninguna solicitud de notificaciones asincrónicas.
¿Todavía no está claro cómo integrarse en el proyecto? No importa, también hay una demostración de ejemplo, que puede ser más clara.
3. Demo Run
La url de demostración es: https://github.com/pay-group/best-pay-demo
Nuestro controlador principal está aquí:
@Controlador @slf4jpublic class paycontroller {@aUtowired private bestpayserviceImpl bestPayservice; /*** Iniciar pago*/@getmapping (valor = "/pay") public modelandView Pay (@RequestParam ("OpenId") String OpenID, Map <String, Object> MAP) {PayRequest Sold = new PayRequest (); Aleatorio aleatorio = new Random (); // PAGO DE SOLICITUD DE SOLICITUD SOLIT.SetPayTypeenum (bestPayTypeenum.wxpay_h5); request.setOrderId (String.ValueOf (Random.NextInt (1000000000))); request.setOrderMount (0.01); request.setOrderName ("Mejor pago SDK"); request.setOpenId (OpenID); log.info ("【Iniciar pago】 solicitud = {}", jsonutil.tojson (request)); PayResponse PayResponse = bestPayservice.pay (solicitud); log.info ("【Iniciar pago】 Respuesta = {}", jsonutil.tojson (PayResponse)); map.put ("PayResponse", PayResponse); devolver nuevo ModelAndView ("Pay/Create", MAP); }/*** devolución de llamada asíncrona*/@PostMapping (value = "/notify") public ModelAndView Notify (@RequestBody String NotifyData) lanza la excepción {log.info ("【Async Callback】 Solicitud = {}", NotifyData); Respuesta de PayResponse = bestPayservice.asyncnotify (notifyData); log.info ("【Async Callback】 Respuesta = {}", jsonutil.tojson (respuesta)); devolver nuevo ModelAndView ("Pay/Success"); }}Puedes descargar esto por ti mismo. Veamos cómo funciona
Descripción del proyecto
Necesito ejecutar en la versión JDK> 1.8
Este proyecto se desarrolla utilizando SpringBoot 1.5.1
Estructura de proyectos
src/main/java/com/github/lly835├── payDemoApplication.java ├── Servletinitializer.java ├── config│ └── PayConfig.java // Clave de configuración de clave de pago └─ig └── PayController.Java // Llamada de pago
Ejemplo de ejecución
Debe configurar la clave antes de ejecutar, consulte payconfig.java
Ejecutar el comando
git clone https://github.com/pay-group/best-pay-democd best-pay-demomvn limpia paqueteJava -jar Target/*. War War
Acceso al navegador http://127.0.0.1:8080/pay
Resumir
Lo anterior es todo el proceso de desarrollo de pagos de la versión Java de la cuenta pública de WeChat presentada por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor te responderá a tiempo.