Este artículo comparte el código específico para las órdenes de cierre de pago de Java WeChat para su referencia. El contenido específico es el siguiente
Documentación oficial
1. Escenarios de aplicación
El pago de la orden comercial falló y necesita generar un nuevo número de pedido e iniciar el pago nuevamente. Debe llamar al pedido de cheque para el número de pedido original para evitar el tiempo de espera de pago del sistema de pago repetido, y la salida del sistema ya no será aceptada. Para evitar el pedido del usuario, llame a la interfaz de pedido de verificación.
NOTA: La interfaz de pedido no se puede llamar inmediatamente después de que se genera el pedido, y el intervalo de tiempo de llamada mínimo es de 5 minutos.
2. Dirección de interfaz
https://api.mch.weixin.qq.com/pay/closordor
3. Parámetros de solicitud
Solo cierre según el número de pedido de su sistema comercial
paquete com.phil.wechatpay.model.rep; import java.io.serializable; / ** * Cerrar los parámetros de solicitud de pedido (Normal XML) * @author Phil * @Date el 25 de julio de 2017 * */ public class ClossOrderParams extiende AbstractPayParams implementa serializable {/ ** * */ private Static Final Long SerialVersionUid = -420646492880382744l; cadena privada out_trade_no; // Número de orden comercial String public GetOut_trade_no () {return out_trade_no; } public void setout_trade_no (string out_trade_no) {this.out_trade_no = out_trade_no; }}4. Devuelve el resultado
paquete com.phil.wechatpay.model.esp; import java.io.serializable; import com.phil.common.annotation.notrequire; / ** * Cerrar el parámetro de retorno del pedido (con <! [CDATA []]> formato XML) * * @author Phil * @Date 25 de julio de 2017 * */ clase pública CloseRoRderResult extiende AbstractPayResult implements serializable {private Static Final Long SerialversionUid = -1996103742747816922l; cadena privada return_code; // El código de estado de retorno Success/Fail @NotRequire String private String return_msg; // Return Information/**** return_code es éxito ****/private String result_code; // Business Result String private String result_msg; // RESULTADO DE NEGOCIOS DESCRIPCIÓN @NOTREQUIRE Private String Err_code;/Error de retorno Información Descripción @NotRequire private string err_code_des; // return de retorno descripción}5. Cierre el pedido
paquete com.phil.wechatpay.controller; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; importar org.springframework.beans.factory.annotation.aUtowired; importar org.springframework.stereotype.controller; importar org.springframework.web.bind.annotation.requestMapping; importar org.springframework.web.bind.annotation.ResponseBody; import com.phil.common.config.wechatconfig; import com.phil.common.util.httprequtil; import com.phil.common.util.payutil; import com.phil.common.util.signatureutil; import com.phil.common.util.xmlutil; import com.phil.wechatpay.model.rep.closeorderParams; import com.phil.wechatpay.model.rep.closeorderResult; import com.phil.wechatpay.service.wechatpayservice; /*** Cerrar orden* @author Phil* @Date 25 de julio de 2017**/@Controller @RequestMapping ("/wxpay/") clase pública wechatpaycloseorderController {@aUtowired WeChatPayPayService WeChatPayService; @ResponseBody @RequestMapping ("CloseOrder") público CloseRordesult CloseOrder (HttpServletRequest Solicitud, respuesta httpServletResponse) lanza la excepción {CloseOrderResult CloseRorderResult = null; CloseOrderParams CloseOrderParams = new CloseLordParams (); CloseOrderParams.setAppid (weChatConfig.app_id); CloseOrderParams.setmch_id (wechatconfig.mch_id); CloseOrderParams.setNonce_str (payUtil.createNoncestr ()); CloseOrderParams.setout_trade_no (""); // pasar // cadena XML solicitada CloseRoRderxml = wechatpayservice.abstractPayToxml (CloseOrderParams); // fusionar la firma en el servicio // return xml en <! [Cdata [éxito]]> Cadena de formato CloseResultxml = Httprequtil.httpsdefaultExeCute (httprequtil.post_method, wechatconfig.close_order_url, null, cerradorerxml); // Realizar verificación de la firma if (firiveUtil.CheckisSignValidFromWeixIn (CloseOrderResultxml)) {CloseOrderResult = xmlutil.getObjectFromXml (CloseOrderResultxml, CloseOrderResult.class); } return CloseRoRderResult; }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.