How to call WeChat payment interface with java
Java calls the method of WeChat payment interface: \ x0d \ RequestHandlerrequesthandler = NewRequestHandler (super. getRequest (), super. getresponse());); \x0d\\x0d\// Get the token//It is valid for two hours, and get it again after two hours \ x0d \ \ x0d \ token = requesthandler.gettoken (); \x0d\\x0d\// Update the token to application \ x0d \ \ x0d \ requesthandler.gettokenreal (); \x0d\\x0d\System.out.println ("WeChat payment acquisition token = = = = = = = = = = = = = = ="+token); \ x0d \ \ x0d \ \ x0d \/requesthandler initialization \ x0d \ \ x0d \ requesthandler.init (); \ x0d \ \ x0d \ request handler . init(appid,appsecret,appkey,partnerkey,key); \ x0d \ \ x0d \ \ x0d \/-The local system generates the order. \ x0d \ \ x0d \ package params . put(" bank _ type "," WX "); //Payment Type \ x0d \ x0d \ Packageparams.put ("body", "xxxx"); //product description \ x0d \ x0d \ packagparams.put ("fee _ type", "1"); //Bank currency \ x0d \ x0d \ Packageparams.put ("input _ charset", "UTF-8"); //Character set \ x0d \ \ x0d \ Packageparams.put ("notify _ URL", "/xxxx/wxcallback"); //notification address The notification address here is tested by the external network address. Note whether port 80 is open. \ x0d \ \ x0d \ packageparames.put ("out _ trade _ no", no); //merchant order number \ x0d \ x0d \ Packageparams. put ("partner ",parten erid); //Set the merchant number \ x0d \ x0d \ Packageparams. Put ("spbill _ create _ IP ",super. getrequest()。 getremotehost()); //The machine IP generated by the order refers to the user's browser IP \ x0d \ x0d \ packagparams. Put ("total _ fee ",string. value of(rstotal)); //Total amount of goods in \ x0d \ \ x0d \//Set payment parameters \ x0d \ \ x0d \ sortedmapsignparams = newtreemap (); \ x0d \ \ x0d \ sign params . put(" appid ",appid); \ x0d \ \ x0d \ sign params . put(" non centr ",non centr); \ x0d \ \ x0d \ sign params . put(" traceid ",properties utils . getorderno()); \ x0d \ \ x0d \ signparams.put ("timestamp", timestamp); \ x0d \ \ x0d \ sign params . put(" package ",package value); \ x0d \ \ x0d \ sign params . put(" appkey ",this . appkey); \ x0d \ \ x0d \ \ x0d \ \ x0d \/To generate payment signature, SHA 1 algorithm should be adopted based on the original value of URLENCODER! \ x0d \ \ x0d \ Stringsign =\ x0d \ \ x0d \ try { \ x0d \ \ x0d \ sign = sha 1 util . create sha 1 sign(sign params); \ x0d \ \ x0d \ } catch(exception one){ \ x0d \ \ x0d \ e . printstacktrace(); \ x0d \ x0d \} \ x0d \ \ x0d \ \ x0d \/\ Add additional parameters that are not involved in the signature \ x0d \ x0d \ signparams.put ("sign _ method", "sha 1"). \ x0d \ \ x0d \ sign params . put(" app _ signature ",sign); \ x0d \ \ x0d \ \ x0d \ \ x0d \ \ x0d \//End of API payment package- \ x0d \ \ x0d \ system . out . println(" prepay id:"+prepay id); \ x0d \ \ x0d \ \ x0d \ \ x0d \ \ x0d \ \ x0d \-x0d \-。 \ x0d \ \ x0d \ SortedMappayParams = new treemap(); \x0d\\x0d\payParams.put("appid ",appid); \ x0d \ \ x0d \ pay params . put(" non centr ",non centr); \ x0d \ \ x0d \ pay params . put(" package "," Sign = wx pay "); \ x0d \ \ x0d \ pay params . put(" partner id ",partnerid); \ x0d \ \ x0d \ pay params . put(" prepay id ",prepay id); \ x0d \ \ x0d \ pay params . put(" appkey ",this . appkey); \ x0d \ \ x0d \/1000 Because of the limitation of parameter length, it is divided here. \ x0d \ \ x0d \ int time =(int)(system . current time millis()/ 1000); \x0d\\x0d\payParams.put ("timestamp", string.valueof (time)); \ x0d \ \ x0d \ \ x0d \ \ x0d \ system . out . println(" timestamp:"+time); \ x0d \ \ x0d \ \ x0d \//signature \ x0d \ \ x0d \ string pay sign = " "; \ x0d \ \ x0d \ try { \ x0d \ \ x0d \ pay sign = sha 1 util . create sha 1 sign(pay params); \ x0d \ \ x0d \ } catch(exception one){ \ x0d \ \ x0d \ e . printstacktrace(); \ x0d \ \ x0d \ } \ x0d \ \ x0d \ pay params . put(" sign ",pay sign); \ x0d \ \ x0d \/Spell json data and return it to the client \ x0d \ \ x0d \ basidbobobjectbackobject = newbasicdbobobjectobjectobject (); \ x0d \ \ x0d \ back object . put(" appid ",appid); \ x0d \ \ x0d \ back object . put(" non centr ",pay params . get(" non centr ")); \ x0d \ \ x0d \ back object . put(" package "," Sign = wx pay "); \ x0d \ \ x0d \ back object . put(" partner id ",pay params . get(" partner id ")); \ x0d \ \ x0d \ back object . put(" prepay id ",payparams . get(" prepay id ")); \ x0d \ \ x0d \ back object . put(" appkey ",this . appkey); \x0d\\x0d\backObject.put ("timestamp", payParams.get ("timestamp")); \x0d\\x0d\backObject.put("sign ",pay params . get(" sign ")); \ x0d \ \ x0d \ \ x0d \ \ x0d \ string backstr = data object . tostring(); \ x0d \ \ x0d \ system . out . println(" back ST:"+back ST); \ x0d \ \ x0d \ \ x0d \ \ x0d \ return backl; \ x0d \ \ x0d \ \ x0d \ = = = = = = = = So far, the prepayment order has been generated and returned to the client. X0d \ \ x0d \ responseHandlershandler = new responseHandler (request, response); \ x0d \ \ x0d \ reshandler . setkey(partner key); \x0d\\x0d\// Create request object \ x0d \ \ x0d \//RequestHandlerQueryreq = newRequestHandler (request, response); \ x0d \ \ x0d \//query req . init(); \ x0d \ \ x0d \ if (reshandler。 Isternpaysign () = = true) {\ x0d \ \ x0d \//merchant order number \ x0d \ x0d \ stringhout _ trade _ no = reshandler.getparameter ("out _ trade _ \ x0d \ x0d \ system . out . println(" out _ trade _ no:"+out _ trade _ no); \x0d\\x0d\// Tenpay order number \ x0d \ \ x0d \ stringtransaction _ id = reshandler.getparameter ("transaction _ id"); \x0d\\x0d\System.out.println ("transaction _ id:"+ transaction _ id); \x0d\\x0d\// amount in \ x0d \ \ x0d \ stringtotal _ fee = reshandler.getparameter ("total _ fee"); \x0d\\x0d\// If discount coupons are used, discount has a value, total_fee+discount= original requested total _ fee \ x0d \ String discount = reshandler.getparameter ("discount"); \x0d\\x0d\// Payment result \ x0d \ \ x0d \ String trade _ state = reshhandler.getparameter ("trade _ state"); \ x0d \ \ x0d \-\ x0d \/ Judgment signature and result \ x0d \ \ x0d \ if ("0 "). equals(trade _ state)){ \ x0d \ \////-\ x0d \ \ x0d \ \ x0d \ \ system。 Get out. println (" -。 \ x0d \ \ x0d \-\ x0d \/- Please write the program according to your business logic (the above code is for reference only) -\ x0d \ \ x0d \ system. out . println("-)\ x0d \ \ x0d \ system . out . println(" success "); //Please do not modify or delete \ x0d \ \ x0d \ \ x0d \ system. Out.println ("payment upon arrival"); \x0d\\x0d\// Send success information to Tenpay system, and Tenpay system will not make any follow-up notice after receiving this result \ x0d \ \ x0d \ Reshandler. Send CFT ("success"); \ x0d \ x0d \ \ x0d \ \ x0d \// Returns success to WeChat server, or \ x0d \ \ x0d \ returns "success" after 8 times notification within 30 minutes; \ x0d \ \ x0d \ } else { \ x0d \ \ x0d \ system。 Out.println ("notification signature verification failed"); \ x0d \ \ x0d \ reshandler . sendtocft(" fail "); \ x0d \ \ x0d \ response . setcharacterencoding(" utf-8 "); \ x0d \ \ x0d \ } \ x0d \ \ x0d \ } else { \ x0d \ \ x0d \ system . out . println(" fail-MD 5 failed ");