1.1 Analisar dados de retorno de chamada do WeChat
InputStream unstrEam = request.getInputStream (); byteArrayOutputStream Outsteam = new ByteArrayoutputStream (); byte [] buffer = new Byte [1024]; int len = 0; while (len = Instream.read (buffer)! len);} outSteam.close (); Instream.Close ();/** Obtenha as informações de retorno XML do WeChat Call notify_url*/string resultado = new String (outsteam.tobytearray (), "utf-8");
O resultado são os dados XML retornados pelo retorno de chamada do WeChat.
1.2 analisando os dados XML retornados por WeChat
/*** Informações XML retornadas pelo retorno de chamada do WeChat* retorna o valor fácil na forma de um mapa* DOM4J analisa XML e retorna o par de valores-chave do elemento de primeiro nível. Se o elemento de primeiro nível tem filhos, o valor desse nó está vazio* @param strxml* @return* @throws documentException*/ @supressorwarnings ("RawTypes") public static sTatedMap <string, string> Dom4jxmlParse (strxml) throwsPexception (string> <,,> strings); DocumentHelper.ParSeText (strxml); elemento root = doc.GetrooTelement (); para (iterator iterator = root.ElementIterator (); iterator.hasnext ();) {elem E = (element) iterator.next (); Retorna os dados do formato de mapa ordenados e o valor é usado para obter os dados usando smap.get ("nome do campo").
1.3 Verifique a legalidade da assinatura de retorno do WeChat
/*** Whether to sign WeChat V3, the rules are: sort by parameter name az, and parameters that encounter empty values do not participate in the signature* Pass in WeChat to return SortedMap format parameter data after information analysis* Verify whether the message is a legal message sent by WeChat* @param smile* @param apiKey The key set by * @return Verification result*/@SuppressWarnings("rawtypes")public static boolean iswechatsign (classedmap <string, string> scratch, string apikey) {stringbuffer sb = new stringBuffer (); set es = smoke.entrySet (); iterator it = es.iterator (); while (it.hasNext ()) {map.entry Entry = (map.entry) it.Next (); String k = (String) Entry.getKey (); String v = (String) Entry.getValue (); if (! "Sign" .equals (k) && null! = v &&! ". "&");}} sb.append ("key =" + apikey);/** assinatura verificada*/string signo = md5util.md5Encode (sb.toString (), "utf-8"). smap.get ("sinal")). Sugestões pessoais: Antes de verificar a legitimidade da assinatura do WeChat, você pode primeiro determinar se o retorno_code e o resultado_code retornados pelo WeChat são o sucesso.
O exposto acima é a legalidade dos dados de verificação da versão v3 do WeChat Pay Java, apresentados a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!