Springboot+fromフォーム+アリペイインスタント入金取引インタフェース+html+Wap支払い+コールバックチェック


Controller*
	@ResponseBody
	@PostMapping("/pay11")
	public  Map<String, Object> doPostForm(@RequestBody Rechange params) {	
	        Map<String, Object> map = new HashMap<>();
	        // params     
	        String formResult = sendxwwwform( params);//  from    
	        map.put("data", formResult);
		return map;
    }
	
 /**
     * form    
     * @param url
     * @param paramMap
     * @return
     */
    public    String sendxwwwform(Rechange params) {
    
      //        
      DateFormat order_d = new DateFormat();
      String out_trade_no = order_d.dateFormat().get("random").toString();
      //     Util                              
      BaseBean maps = new BaseBean(); 
      //map         
      Map<String, Object> map = new HashMap<>();
      map.put("_input_charset","utf-8");//       
      map.put("service","create_direct_pay_by_user");
      map.put("partner","");//     ID
      map.put("seller_id", "");//        
      map.put("payment_type", "1");//      1(    )。
      map.put("notify_url", "http://***/notify_url");//           
      map.put("return_url", "http://***/frame");//            
      map.put("out_trade_no", out_trade_no);
      map.put("subject", "");//    
      map.put("total_fee", params.getMoney());//    	
      //         
      map = maps.toMap(map);

    	
    	String ress = "
"
+ "" + ""// ID + ""// + ""// 1( )。 + "" + "" + "" + ""// + ""// + ""// + "" + ""; //from return ress; }
	@RequestMapping(value="/notify_url")
	@ResponseBody
	public void asy(HttpServletRequest request) throws UnsupportedEncodingException {

		
		//           
		Map<String,String> params = new HashMap<String,String>();
		//           
		Map<String, Object> params2 = new HashMap<String,Object>();
		Map requestParams = request.getParameterMap();
		Map<Object, Object> resultMap = new HashMap<>();
		for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
		    String name = (String) iter.next();
		    String[] values = (String[]) requestParams.get(name);
		    String valueStr = "";
		    for (int i = 0; i < values.length; i++) {
		        valueStr = (i == values.length - 1) ? valueStr + values[i]
		                    : valueStr + values[i] + ",";
		  	}
		    //    ,            。
			//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
			params.put(name, valueStr);
			
			if(name.equals("sign_type") || name.equals("sign")  || valueStr.equals("")){
			}else{
				params2.put(name, valueStr);
			}
		
		}
		//      
		BaseBean maps = new BaseBean(); 
		String ss = (String)maps.toMap(params2).get("sign");
		
		            try {
//		            	     
//						String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"), "UTF-8");
//
//						String trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"), "UTF-8");
						
						String sign = new String(request.getParameter("sign").getBytes("ISO-8859-1"), "UTF-8");
					
//						         
						if(sign.equals(ss)){
							System.out.println("      1");
							
							//       ID
							String notify_id = (String)params2.get("notify_id");
							//    ID    
							if(!params2.get("notify_id").equals("")){
								
							//       notify_id    
							String boole = sendGet("     ID",(String)params2.get("notify_id"));	
							//      
								if(boole.equals("true")){
									System.out.println("      2");
									
	//								     
									String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"), "UTF-8");
	
									String trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"), "UTF-8");
									
									String total_fee = new String(request.getParameter("total_fee").getBytes("ISO-8859-1"), "UTF-8");
									
									//        
									 if ("TRADE_SUCCESS".equals(trade_status)) {
			
									 }else{
										  System.out.println("    ");
									 }
								}else{
								 System.out.println("notify_id    !");
								}
							}else{
								 System.out.println("notify_id  !");
								}
						}else{
							 System.out.println("sign    !");
						}					
					} catch (UnsupportedEncodingException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
		            System.out.println("SUCCESS");
	}
	
  public  String sendGet( String partner,String notify_id) {
	        String result = "";
	        BufferedReader in = null;
	        try {
	            String urlNameString ="http://notify.alipay.com/trade/notify_query.do?partner=" +partner+"&notify_id="+notify_id;
	            System.out.println(urlNameString);
	            URL realUrl = new URL(urlNameString);
	            //    URL     
	            URLConnection connection = realUrl.openConnection();
	            //          
	            connection.setRequestProperty("accept", "*/*");
	            connection.setRequestProperty("connection", "Keep-Alive");
	            connection.setRequestProperty("user-agent",
	                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
	            //        
	            connection.connect();
	            //          
	            Map<String, List<String>> map = connection.getHeaderFields();
	            //           
	            for (String key : map.keySet()) {
	                System.out.println(key + "--->" + map.get(key));
	            }
	            //    BufferedReader      URL   
	            in = new BufferedReader(new InputStreamReader(
	                    connection.getInputStream()));
	            String line;
	            while ((line = in.readLine()) != null) {
	                result += line;
	                System.out.println(line);
	            }
	        } catch (Exception e) {
	            System.out.println("  GET      !" + e);
	            e.printStackTrace();
	        }
	        //   finally       
	        finally {
	            try {
	                if (in != null) {
	                    in.close();
	                }
	            } catch (Exception e2) {
	                e2.printStackTrace();
	            }
	        }
	        return result;
	    }