Sem mais delongas, basta olhar para o código.
RequestHandler requestHandler = new requestHandler (super.getRequest (), super.getResponse ()); // Obtenha token // válido dentro de duas horas e re-obtenha token após duas horas = requesttler.getToken (); // Atualize o token para o aplicativo requestHandler.getTokenReal (); System.out.println ("WeChat Pay Get Token ============================:" +Token); // requestHandler inicialize requestHandler.init (); requestHandler.init (Appid, AppSecret, AppKey, PartnerKey, Key); Código: o sistema local gera pedidos
// Definir parâmetros de pedido do pacote classificados packageParams.put ("Bank_type", "WX"); // tipo de pagamento packageParams.put ("corpo", "xxxx"); // Descrição do produto PackageParams.put ("Fee_type", "1"); // PackageParams.put de moeda bancária ("input_charset", "utf-8"); // Defina de caracteres PackageParams.put ("notify_url", "http://xxxx.com/xxxx/wxcallback"); // O endereço de notificação aqui é testado usando o endereço de rede externo e preste atenção se a porta 80 está aberta. packageParams.put ("out_trade_no", não); // Número de ordem do comerciante PackageParams.put ("Partner", PartnerRid); // Defina o número do comerciante PackageParams.put ("spbill_create_ip", super.getRequest (). GetRemoteHost ()); // O IP da máquina gerado pelo pedido refere -se ao navegador IP do navegador do usuário ("Total_Fee", String.valueof (rstotal)); // O valor total do produto é dividido em unidades // Definir parâmetros de pagamento classificados SignParams.put ("Appid", Appid); SignParams.put ("Non -Cest", não -CEST); SignParams.put ("Traceid", PropertiesUtils.getOrderNo ()); SignParams.put ("Timestamp", Timestamp); SignParams.put ("Package", PackageValue); SignParams.put ("AppKey", this.AppKey); // Para gerar uma assinatura de pagamento, o valor original do urlencoder deve ser usado para o algoritmo SHA1! String sinal = ""; tente {signo = sha1util.creatasha1sign (signParams); } catch (Exceção e) {e.printStackTrace (); } // Adicione parâmetros adicionais para assinaturas não participadas ao SignParams.put ("SIGN_METHOD", "SHA1"); SignParams.put ("App_signature", sinal); // Pacote de pagamento API termina ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------ Código: Gere a conclusão de pedidos rápidos pré -pagos
// Gere uma ordem rápida pré -paga para concluir, retornar ao Android, iOS e soltar os parâmetros necessários para o WeChat. STORDMAP <String, String> PayParams = novo Treemap <String, String> (); payparams.put ("Appid", Appid); PayParams.put ("não -cest", não -CEST); payparams.put ("pacote", "sinal = wxpay"); payparams.put ("PartnerID", parceiro); PayParams.put ("pré -condyID", prepare); payparams.put ("AppKey", this.appkey); // A diferença aqui é 1000 devido ao limite de comprimento do parâmetro. int time = (int) (system.currenttimemillis () / 1000); payparams.put ("Timestamp", string.valueof (tempo)); System.out.println ("Timestamp:" + time); // string de assinatura Paysign = ""; tente {Paysign = sha1util.creatasha1sign (payparams); } catch (Exceção e) {e.printStackTrace (); } PayParams.put ("Sign", PaySign); // Os dados JSON da falsidade são retornados ao cliente BasicDBObject backObject = new BasicDBObject (); backObject.put ("Appid", Appid); backObject.put ("não -cest", payparams.get ("não -cest"); backObject.put ("pacote", "sinal = wxpay"); backObject.put ("PartnerID", PayParams.get ("PartnerID")); backObject.put ("pré -condyID", PayParams.get ("pré -condyID")); backObject.put ("AppKey", this.appkey); backObject.put ("Timestamp", payparams.get ("timestamp")); backObject.put ("sinal", PayParams.get ("sinal")); String backstr = DATABJECT.ToString (); System.out.println ("backstr:" + backstr); retornar de volta; Até agora, o pedido de pré -pagamento foi gerado e foi devolvido ao cliente, esperando o servidor WeChat notificar. O endereço da notificação é notify_url que gera a ordem de pré -pagamento.
ResponseHandler reshandler = new ResponseHandler (solicitação, resposta); reshandler.setKey (PartnerKey); // Crie Object Request // requestHandler queryreq = novo requestHandler (solicitação, resposta); //queryreq.init (); if (reshandler.istenPaysign () == true) {// Número de ordem do comerciante string string out_trade_no = reshandler.getParameter ("out_trade_no"); System.out.println ("out_trade_no:" + out_trade_no); // TenPay Order Number String transaction_id = reshandler.getParameter ("transaction_id"); System.out.println ("transaction_id:" + transaction_id); // valor, em unidades de divisão string total_fee = reshandler.getParameter ("total_fee"); // Se um cupom de desconto for usado, o desconto possui um valor, total_fee+desconto = o original solicitado total_fee string desconto = reshandler.getParameter ("desconto"); // Resultado do pagamento String trade_state = reshandler.getParameter ("trade_state"); // Juiz a assinatura e resultado se ("0" .Equals (trade_state)) { // ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- // Envie uma mensagem bem -sucedida para o sistema TenPay. O sistema TenPay não fornecerá mais notificações subsequentes após o recebimento deste resultado reshandler.sendTocft ("Sucesso"); // retorna o sucesso do WeChat Server, caso contrário, 8 notificações em 30 minutos retornam "sucesso"; } else {System.out.println ("notificar a verificação da assinatura falhou"); Reshandler.sendTocft ("Fail"); Response.Setcharacterencoding ("UTF-8"); }} else {System.out.println ("Fail -md5 falhou"); }O exposto acima é o código que o Java implementa o WeChat Payment Server. Espero que todos os estudem cuidadosamente para obter o pagamento do WeChat.