• <center id="zabaw"></center>
    <li id="zabaw"><big id="zabaw"></big></li>

    1. <label id="zabaw"></label> \r\n  \r\n    訂單號: \r\n   \r\n <\/form> \r\n <\/br><\/br> \r\n   \r\n    訂單號: \r\n   \r\n <\/form> \r\n <\/body> \r\n<\/html><\/pre>

      2  編寫一個servlet用于通過Oauth獲取code<\/p>

      package com.debug.weixin.servlet; \r\n  \r\nimport java.io.IOException; \r\nimport java.io.PrintWriter; \r\n  \r\nimport javax.servlet.RequestDispatcher; \r\nimport javax.servlet.ServletException; \r\nimport javax.servlet.http.HttpServlet; \r\nimport javax.servlet.http.HttpServletRequest; \r\nimport javax.servlet.http.HttpServletResponse; \r\n  \r\nimport com.debug.weixin.util.CommonUtil; \r\nimport com.debug.weixin.util.ServerConfig; \r\n  \r\npublic class OauthServlet extends HttpServlet { \r\n  \r\n   \r\n public void doGet(HttpServletRequest request, HttpServletResponse response) \r\n   throws ServletException, IOException { \r\n  \r\n  this.doPost(request, response); \r\n } \r\n  \r\n public void doPost(HttpServletRequest request, HttpServletResponse response) \r\n   throws ServletException, IOException { \r\n  \r\n   String orderNo=request.getParameter(\"orderNo\"); \r\n   \/\/調(diào)用微信Oauth2.0獲取openid \r\n   String redirectURL=ServerConfig.SERVERDOMAIN+\"\/BasicWeixin\/payServletForH5?orderNo=\"+orderNo; \r\n   String redirectURI=\"\"; \r\n   try { \r\n    redirectURI=CommonUtil.initOpenId(redirectURL); \r\n   } catch (Exception e) { \r\n   \/\/ TODO Auto-generated catch block \r\n   e.printStackTrace(); \r\n   } \r\n   \/\/System.out.println(redirectURI); \r\n   \/\/RequestDispatcher dis= request.getRequestDispatcher(redirectURI); \r\n   \/\/dis.forward(request, response); \r\n   response.sendRedirect(redirectURI); \r\n } \r\n  \r\n}<\/pre>

      3 獲取到code后,通過REDIRECTURI獲取openId,調(diào)用統(tǒng)一下單接口<\/p>

      package com.debug.weixin.servlet; \r\n  \r\nimport java.io.IOException; \r\nimport java.io.PrintWriter; \r\nimport java.util.SortedMap; \r\nimport java.util.TreeMap; \r\n  \r\nimport javax.servlet.RequestDispatcher; \r\nimport javax.servlet.ServletException; \r\nimport javax.servlet.http.HttpServlet; \r\nimport javax.servlet.http.HttpServletRequest; \r\nimport javax.servlet.http.HttpServletResponse; \r\n  \r\nimport com.debug.weixin.pojo.WeixinOauth2Token; \r\nimport com.debug.weixin.pojo.WeixinQRCode; \r\nimport com.debug.weixin.util.AdvancedUtil; \r\nimport com.debug.weixin.util.CommonUtil; \r\nimport com.debug.weixin.util.ConfigUtil; \r\nimport com.debug.weixin.util.PayCommonUtil; \r\n  \r\npublic class PayServletForH5 extends HttpServlet { \r\n  \r\n   \r\n public void doGet(HttpServletRequest request, HttpServletResponse response) \r\n   throws ServletException, IOException { \r\n  \r\n  this.doPost(request, response); \r\n } \r\n  \r\n public void doPost(HttpServletRequest request, HttpServletResponse response) \r\n   throws ServletException, IOException { \r\n   String orderNo=request.getParameter(\"orderNo\"); \r\n   String code=request.getParameter(\"code\"); \r\n    \r\n   \/\/獲取AccessToken \r\n    \r\n   WeixinOauth2Token token=AdvancedUtil.getOauth2AccessToken(ConfigUtil.APPID, ConfigUtil.APP_SECRECT, code); \r\n    \r\n   String openId=token.getOpenId(); \r\n    \r\n   \/\/調(diào)用微信統(tǒng)一支付接口 \r\n   SortedMap parameters = new TreeMap(); \r\n  parameters.put(\"appid\", ConfigUtil.APPID); \r\n  \r\n  parameters.put(\"mch_id\", ConfigUtil.MCH_ID); \r\n  parameters.put(\"device_info\", \"1000\"); \r\n  parameters.put(\"body\", \"我的測試訂單\"); \r\n  parameters.put(\"nonce_str\", PayCommonUtil.CreateNoncestr()); \r\n    \r\n     \r\n  parameters.put(\"out_trade_no\", orderNo); \r\n  \/\/parameters.put(\"total_fee\", String.valueOf(total)); \r\n  parameters.put(\"total_fee\", \"1\"); \r\n  parameters.put(\"spbill_create_ip\", request.getRemoteAddr()); \r\n  parameters.put(\"notify_url\", ConfigUtil.NOTIFY_URL); \r\n  parameters.put(\"trade_type\", \"JSAPI\"); \r\n  parameters.put(\"openid\", openId); \r\n  \r\n  String sign = PayCommonUtil.createSign(\"UTF-8\", parameters); \r\n  parameters.put(\"sign\", sign); \r\n  \r\n  String requestXML = PayCommonUtil.getRequestXml(parameters); \r\n  \r\n  String result = CommonUtil.httpsRequestForStr(ConfigUtil.UNIFIED_ORDER_URL,\"POST\", requestXML); \r\n  System.out.println(\"----------------------------------\"); \r\n  System.out.println(result); \r\n  System.out.println(\"----------------------------------\"); \r\n    \r\n  request.setAttribute(\"orderNo\", orderNo); \r\n  request.setAttribute(\"totalPrice\", \"0.01\"); \r\n  String payJSON=\"\"; \r\n  try { \r\n   payJSON=CommonUtil.getH5PayStr(result,request); \r\n     \r\n  } catch (Exception e) { \r\n   \/\/ TODO Auto-generated catch block \r\n   e.printStackTrace(); \r\n  } \r\n  \/\/System.out.println(payJSON); \r\n  request.setAttribute(\"unifiedOrder\",payJSON); \r\n    \r\n  RequestDispatcher dis= request.getRequestDispatcher(\"h5Pay.jsp\"); \r\n  dis.forward(request, response); \r\n } \r\n  \r\n}<\/pre>

      調(diào)用微信統(tǒng)一下單接口,需要注意簽名算法,只有簽名計算正確才能順利支付<\/p>

      public static String getH5PayStr(String result,HttpServletRequest request) throws Exception{ \r\n    \r\n   Map map = XMLUtil.doXMLParse(result); \r\n     \r\n     \r\n    SortedMap params = new TreeMap(); \r\n   params.put(\"appId\", ConfigUtil.APPID); \r\n   params.put(\"timeStamp\", Long.toString(new Date().getTime())); \r\n   params.put(\"nonceStr\", PayCommonUtil.CreateNoncestr()); \r\n   params.put(\"package\", \"prepay_id=\"+map.get(\"prepay_id\")); \r\n   params.put(\"signType\", ConfigUtil.SIGN_TYPE); \r\n   String paySign = PayCommonUtil.createSign(\"UTF-8\", params); \r\n    \r\n   params.put(\"paySign\", paySign);  \/\/paySign的生成規(guī)則和Sign的生成規(guī)則一致 \r\n    \r\n   String json = JSONObject.fromObject(params).toString(); \r\n    \r\n   return json; \r\n }<\/pre>

       4 編寫最終的支付界面調(diào)起微信H5支付<\/p>

      <%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"UTF-8\"%> \r\n<% \r\nString path = request.getContextPath(); \r\nString basePath = request.getScheme()+\":\/\/\"+request.getServerName()+\":\"+request.getServerPort()+path+\"\/\"; \r\n%> \r\n  \r\n \r\n \r\n  \r\n \"> \r\n   \r\n 微信H5支付<\/title> \r\n   \r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0\"> \r\n  
      	
      <meta http-equiv="Cache-Control" content="no-transform" />
      <meta http-equiv="Cache-Control" content="no-siteapp" />
      <script>var V_PATH="/";window.onerror=function(){ return true; };</script>
      </head>
      
      <body data-commit-time="2023-12-28T14:50:12+08:00" class="editor_body body2_2">
      <h1><a href="http://www.miracleart.cn/">国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂</a></h1>
      	<link rel="stylesheet" type="text/css" href="/static/csshw/stylehw.css">
      <header>
          <div   id="377j5v51b"   class="head">
              <div   id="377j5v51b"   class="haed_left">
                  <div   id="377j5v51b"   class="haed_logo">
                      <a href="http://www.miracleart.cn/zh/" title="" class="haed_logo_a">
                          <img src="/static/imghw/logo.png" alt="" class="haed_logoimg">
                      </a>
                  </div>
                  <div   id="377j5v51b"   class="head_nav">
                      <div   id="377j5v51b"   class="head_navs">
                          <a href="javascript:;" title="社區(qū)" class="head_nava head_nava-template1">社區(qū)</a>
                          <div   class="377j5v51b"   id="dropdown-template1" style="display: none;">
                              <div   id="377j5v51b"   class="languagechoose">
                                  <a href="http://www.miracleart.cn/zh/article.html" title="文章" class="languagechoosea on">文章</a>
                                  <a href="http://www.miracleart.cn/zh/faq/zt" title="合集" class="languagechoosea">合集</a>
                                  <a href="http://www.miracleart.cn/zh/wenda.html" title="問答" class="languagechoosea">問答</a>
                              </div>
                          </div>
                      </div>
      
                      <div   id="377j5v51b"   class="head_navs">
                          <a href="javascript:;" title="學習" class="head_nava head_nava-template1_1">學習</a>
                          <div   class="377j5v51b"   id="dropdown-template1_1" style="display: none;">
                              <div   id="377j5v51b"   class="languagechoose">
                                  <a href="http://www.miracleart.cn/zh/course.html" title="課程" class="languagechoosea on">課程</a>
                                  <a href="http://www.miracleart.cn/zh/dic/" title="編程詞典" class="languagechoosea">編程詞典</a>
                              </div>
                          </div>
                      </div>
      
                      <div   id="377j5v51b"   class="head_navs">
                          <a href="javascript:;" title="工具庫" class="head_nava head_nava-template1_2">工具庫</a>
                          <div   class="377j5v51b"   id="dropdown-template1_2" style="display: none;">
                              <div   id="377j5v51b"   class="languagechoose">
                                  <a href="http://www.miracleart.cn/zh/toolset/development-tools" title="開發(fā)工具" class="languagechoosea on">開發(fā)工具</a>
                                  <a href="http://www.miracleart.cn/zh/toolset/website-source-code" title="網(wǎng)站源碼" class="languagechoosea">網(wǎng)站源碼</a>
                                  <a href="http://www.miracleart.cn/zh/toolset/php-libraries" title="PHP 庫" class="languagechoosea">PHP 庫</a>
                                  <a href="http://www.miracleart.cn/zh/toolset/js-special-effects" title="JS特效" class="languagechoosea on">JS特效</a>
                                  <a href="http://www.miracleart.cn/zh/toolset/website-materials" title="網(wǎng)站素材" class="languagechoosea on">網(wǎng)站素材</a>
                                  <a href="http://www.miracleart.cn/zh/toolset/extension-plug-ins" title="擴展插件" class="languagechoosea on">擴展插件</a>
                              </div>
                          </div>
                      </div>
      
                      <div   id="377j5v51b"   class="head_navs">
                          <a href="http://www.miracleart.cn/zh/ai" title="AI工具" class="head_nava head_nava-template1_3">AI工具</a>
                      </div>
      
                      <div   id="377j5v51b"   class="head_navs">
                          <a href="javascript:;" title="休閑" class="head_nava head_nava-template1_3">休閑</a>
                          <div   class="377j5v51b"   id="dropdown-template1_3" style="display: none;">
                              <div   id="377j5v51b"   class="languagechoose">
                                  <a href="http://www.miracleart.cn/zh/game" title="游戲下載" class="languagechoosea on">游戲下載</a>
                                  <a href="http://www.miracleart.cn/zh/mobile-game-tutorial/" title="游戲教程" class="languagechoosea">游戲教程</a>
      
                              </div>
                          </div>
                      </div>
                  </div>
              </div>
                          <div   id="377j5v51b"   class="head_search">
                      <input id="key_words"  onkeydown="if (event.keyCode == 13) searchs('zh')" class="search-input" type="text" autocomplete="off" name="keywords" required="required" placeholder="Block,address,transaction,news" value="">
                      <a href="javascript:;" title="搜索"  onclick="searchs('zh')"><img src="/static/imghw/find.png" alt="搜索"></a>
                  </div>
                      <div   id="377j5v51b"   class="head_right">
                  <div   id="377j5v51b"   class="haed_language">
                      <a href="javascript:;" class="layui-btn haed_language_btn">簡體中文<i class="layui-icon layui-icon-triangle-d"></i></a>
                      <div   class="377j5v51b"   id="dropdown-template" style="display: none;">
                          <div   id="377j5v51b"   class="languagechoose">
                                                      <a href="javascript:;" title="簡體中文" class="languagechoosea">簡體中文</a>
                                                      <a href="javascript:setlang('en');" title="English" class="languagechoosea">English</a>
                                                      <a href="javascript:setlang('zh-tw');" title="繁體中文" class="languagechoosea">繁體中文</a>
                                                      <a href="javascript:setlang('ja');" title="日本語" class="languagechoosea">日本語</a>
                                                      <a href="javascript:setlang('ko');" title="???" class="languagechoosea">???</a>
                                                      <a href="javascript:setlang('ms');" title="Melayu" class="languagechoosea">Melayu</a>
                                                      <a href="javascript:setlang('fr');" title="Fran?ais" class="languagechoosea">Fran?ais</a>
                                                      <a href="javascript:setlang('de');" title="Deutsch" class="languagechoosea">Deutsch</a>
                                                  </div>
                      </div>
                  </div>
                  <span id="377j5v51b"    class="head_right_line"></span>
                                  <div style="display: block;" id="login" class="haed_login ">
                          <a href="javascript:;"  title="Login" class="haed_logina ">Login</a>
                      </div>
                      <div style="display: block;" id="reg" class="head_signup login">
                          <a href="javascript:;"  title="singup" class="head_signupa">singup</a>
                      </div>
                  
              </div>
          </div>
      </header>
      
      	
      	<main>
      		<div   id="377j5v51b"   class="Article_Details_main">
      			<div   id="377j5v51b"   class="Article_Details_main1">
      							<div   id="377j5v51b"   class="Article_Details_main1M">
      					<div   id="377j5v51b"   class="phpgenera_Details_mainL1">
      						<a href="http://www.miracleart.cn/zh/" title="首頁"
      							class="phpgenera_Details_mainL1a">首頁</a>
      						<img src="/static/imghw/top_right.png" alt="" />
      												<a href="http://www.miracleart.cn/zh/weixin-marketing.html"
      							class="phpgenera_Details_mainL1a">微信小程序</a>
      						<img src="/static/imghw/top_right.png" alt="" />
      												<a href="http://www.miracleart.cn/zh/weixin-kaifa.html"
      							class="phpgenera_Details_mainL1a">微信開發(fā)</a>
      						<img src="/static/imghw/top_right.png" alt="" />
      						<span>Java微信支付之公眾號支付、掃碼支付實例</span>
      					</div>
      					
      					<div   id="377j5v51b"   class="Articlelist_txts">
      						<div   id="377j5v51b"   class="Articlelist_txts_info">
      							<h1 class="Articlelist_txts_title">Java微信支付之公眾號支付、掃碼支付實例</h1>
      							<div   id="377j5v51b"   class="Articlelist_txts_info_head">
      								<div   id="377j5v51b"   class="author_info">
      									<a href="http://www.miracleart.cn/zh/member/13.html"  class="author_avatar">
      									<img class="lazy"  data-src="https://img.php.cn/upload/avatar/000/000/013/6177b5643d1eb119.png" src="/static/imghw/default1.png" alt="高洛峰">
      									</a>
      									<div   id="377j5v51b"   class="author_detail">
      																			<a href="http://www.miracleart.cn/zh/member/13.html" class="author_name">高洛峰</a>
                                      										</div>
      								</div>
                      			</div>
      							<span id="377j5v51b"    class="Articlelist_txts_time">Feb 04, 2017 am	 11:30 AM</span>
      														
      						</div>
      					</div>
      					<hr />
      					<div   id="377j5v51b"   class="article_main php-article">
      						<div   id="377j5v51b"   class="article-list-left detail-content-wrap content">
      						<ins class="adsbygoogle"
      							style="display:block; text-align:center;"
      							data-ad-layout="in-article"
      							data-ad-format="fluid"
      							data-ad-client="ca-pub-5902227090019525"
      							data-ad-slot="3461856641">
      						</ins>
      						
      
      					<p>微信支付現(xiàn)在已經(jīng)變得越來越流行了,隨之也出現(xiàn)了很多以可以快速接入微信支付為噱頭的產(chǎn)品,不過方便之余也使得我們做東西慢慢依賴第三方,喪失了獨立思考的能力,這次打算分享下我之前開發(fā)過的微信支付。</p>
      <p>一 、H5公眾號支付</p>
      <p>要點:正確獲取openId以及統(tǒng)一下單接口,正確處理支付結(jié)果通知,正確配置支付授權(quán)目錄</p>
      <p>H5的支付方式是使用較為廣泛的方式,這種支付方式主要用于微信內(nèi)自定義菜單的網(wǎng)頁,依賴手機上安裝的微信客戶端,高版本的微信才支持微信支付,下面按我的流程注意說明</p>
      <p>1? 編寫用于支付的頁面,由于是測試用就寫的簡單了點</p><pre class='brush:php;toolbar:false;'><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
      <% 
      String path = request.getContextPath(); 
      String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
      %> 
        
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
      <html> 
       <head> 
       <base href="<%=basePath%>"> 
         
       <title>微信支付樣例</title> 
         
       <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> 
       <!-- 
       <link rel="stylesheet" type="text/css" href="styles.css"> 
       --> 
        
       </head> 
        
       <body> 
       <form action="oauthServlet" method="POST"> 
          訂單號:<input type="text" name="orderNo" /> 
        <input type="submit" value="H5支付"/> 
       </form> 
       </br></br> 
        <form action="scanCodePayServlet?flag=createCode" method="POST"> 
          訂單號:<input type="text" name="orderNo" /> 
        <input type="submit" value="掃碼支付"/> 
       </form> 
       </body> 
      </html></pre><p>2  編寫一個servlet用于通過Oauth獲取code</p><pre class='brush:php;toolbar:false;'>package com.debug.weixin.servlet; 
        
      import java.io.IOException; 
      import java.io.PrintWriter; 
        
      import javax.servlet.RequestDispatcher; 
      import javax.servlet.ServletException; 
      import javax.servlet.http.HttpServlet; 
      import javax.servlet.http.HttpServletRequest; 
      import javax.servlet.http.HttpServletResponse; 
        
      import com.debug.weixin.util.CommonUtil; 
      import com.debug.weixin.util.ServerConfig; 
        
      public class OauthServlet extends HttpServlet { 
        
         
       public void doGet(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException { 
        
        this.doPost(request, response); 
       } 
        
       public void doPost(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException { 
        
         String orderNo=request.getParameter("orderNo"); 
         //調(diào)用微信Oauth2.0獲取openid 
         String redirectURL=ServerConfig.SERVERDOMAIN+"/BasicWeixin/payServletForH5?orderNo="+orderNo; 
         String redirectURI=""; 
         try { 
          redirectURI=CommonUtil.initOpenId(redirectURL); 
         } catch (Exception e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
         } 
         //System.out.println(redirectURI); 
         //RequestDispatcher dis= request.getRequestDispatcher(redirectURI); 
         //dis.forward(request, response); 
         response.sendRedirect(redirectURI); 
       } 
        
      }</pre><p>3 獲取到code后,通過REDIRECTURI獲取openId,調(diào)用統(tǒng)一下單接口</p><pre class='brush:php;toolbar:false;'>package com.debug.weixin.servlet; 
        
      import java.io.IOException; 
      import java.io.PrintWriter; 
      import java.util.SortedMap; 
      import java.util.TreeMap; 
        
      import javax.servlet.RequestDispatcher; 
      import javax.servlet.ServletException; 
      import javax.servlet.http.HttpServlet; 
      import javax.servlet.http.HttpServletRequest; 
      import javax.servlet.http.HttpServletResponse; 
        
      import com.debug.weixin.pojo.WeixinOauth2Token; 
      import com.debug.weixin.pojo.WeixinQRCode; 
      import com.debug.weixin.util.AdvancedUtil; 
      import com.debug.weixin.util.CommonUtil; 
      import com.debug.weixin.util.ConfigUtil; 
      import com.debug.weixin.util.PayCommonUtil; 
        
      public class PayServletForH5 extends HttpServlet { 
        
         
       public void doGet(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException { 
        
        this.doPost(request, response); 
       } 
        
       public void doPost(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException { 
         String orderNo=request.getParameter("orderNo"); 
         String code=request.getParameter("code"); 
          
         //獲取AccessToken 
          
         WeixinOauth2Token token=AdvancedUtil.getOauth2AccessToken(ConfigUtil.APPID, ConfigUtil.APP_SECRECT, code); 
          
         String openId=token.getOpenId(); 
          
         //調(diào)用微信統(tǒng)一支付接口 
         SortedMap<Object, Object> parameters = new TreeMap<Object, Object>(); 
        parameters.put("appid", ConfigUtil.APPID); 
        
        parameters.put("mch_id", ConfigUtil.MCH_ID); 
        parameters.put("device_info", "1000"); 
        parameters.put("body", "我的測試訂單"); 
        parameters.put("nonce_str", PayCommonUtil.CreateNoncestr()); 
          
           
        parameters.put("out_trade_no", orderNo); 
        //parameters.put("total_fee", String.valueOf(total)); 
        parameters.put("total_fee", "1"); 
        parameters.put("spbill_create_ip", request.getRemoteAddr()); 
        parameters.put("notify_url", ConfigUtil.NOTIFY_URL); 
        parameters.put("trade_type", "JSAPI"); 
        parameters.put("openid", openId); 
        
        String sign = PayCommonUtil.createSign("UTF-8", parameters); 
        parameters.put("sign", sign); 
        
        String requestXML = PayCommonUtil.getRequestXml(parameters); 
        
        String result = CommonUtil.httpsRequestForStr(ConfigUtil.UNIFIED_ORDER_URL,"POST", requestXML); 
        System.out.println("----------------------------------"); 
        System.out.println(result); 
        System.out.println("----------------------------------"); 
          
        request.setAttribute("orderNo", orderNo); 
        request.setAttribute("totalPrice", "0.01"); 
        String payJSON=""; 
        try { 
         payJSON=CommonUtil.getH5PayStr(result,request); 
           
        } catch (Exception e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
        //System.out.println(payJSON); 
        request.setAttribute("unifiedOrder",payJSON); 
          
        RequestDispatcher dis= request.getRequestDispatcher("h5Pay.jsp"); 
        dis.forward(request, response); 
       } 
        
      }</pre><p>調(diào)用微信統(tǒng)一下單接口,需要注意簽名算法,只有簽名計算正確才能順利支付</p><pre class='brush:php;toolbar:false;'>public static String getH5PayStr(String result,HttpServletRequest request) throws Exception{ 
          
         Map<String, String> map = XMLUtil.doXMLParse(result); 
           
           
          SortedMap<Object,Object> params = new TreeMap<Object,Object>(); 
         params.put("appId", ConfigUtil.APPID); 
         params.put("timeStamp", Long.toString(new Date().getTime())); 
         params.put("nonceStr", PayCommonUtil.CreateNoncestr()); 
         params.put("package", "prepay_id="+map.get("prepay_id")); 
         params.put("signType", ConfigUtil.SIGN_TYPE); 
         String paySign = PayCommonUtil.createSign("UTF-8", params); 
          
         params.put("paySign", paySign);  //paySign的生成規(guī)則和Sign的生成規(guī)則一致 
          
         String json = JSONObject.fromObject(params).toString(); 
          
         return json; 
       }</pre><p> 4 編寫最終的支付界面調(diào)起微信H5支付</p><pre class='brush:php;toolbar:false;'><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
      <% 
      String path = request.getContextPath(); 
      String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
      %> 
        
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
      <html> 
       <head> 
       <base href="<%=basePath%>"> 
         
       <title>微信H5支付</title> 
         
       <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> 
        <script type="text/javascript"> 
         
       function jsApiCall(){ 
        WeixinJSBridge.invoke( 
         &#39;getBrandWCPayRequest&#39;,<%=(String)request.getAttribute("unifiedOrder")%>, function(res){ 
          WeixinJSBridge.log(res.err_msg); 
          //alert(res.err_code+res.err_desc+res.err_msg); 
          if(res.err_msg == "get_brand_wcpay_request:ok" ) { 
           alert("恭喜你,支付成功!"); 
          }else{ 
           alert(res.err_code+res.err_desc+res.err_msg);     
          } 
         } 
        ); 
       } 
        
       function callpay(){ 
        if (typeof WeixinJSBridge == "undefined"){ 
         if( document.addEventListener ){ 
          document.addEventListener(&#39;WeixinJSBridgeReady&#39;, jsApiCall, false); 
         }else if (document.attachEvent){ 
          document.attachEvent(&#39;WeixinJSBridgeReady&#39;, jsApiCall); 
          document.attachEvent(&#39;onWeixinJSBridgeReady&#39;, jsApiCall); 
         } 
        }else{ 
         jsApiCall(); 
        } 
       } 
       </script> 
       </head> 
        
       <body> 
        <input type="button" value="支付" onclick="callpay()"/> 
       </body> 
      </html></pre><p>5 處理微信支付結(jié)果通知</p><pre class='brush:php;toolbar:false;'>package com.debug.weixin.servlet; 
        
      import java.io.ByteArrayOutputStream; 
      import java.io.IOException; 
      import java.io.InputStream; 
      import java.io.PrintWriter; 
      import java.util.Map; 
        
      import javax.servlet.ServletException; 
      import javax.servlet.http.HttpServlet; 
      import javax.servlet.http.HttpServletRequest; 
      import javax.servlet.http.HttpServletResponse; 
        
      import org.jdom.JDOMException; 
        
      import com.debug.weixin.util.PayCommonUtil; 
      import com.debug.weixin.util.XMLUtil; 
        
      public class PayHandlerServlet extends HttpServlet { 
        
         
       public void doGet(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException { 
         this.doPost(request, response); 
       } 
        
         
       public void doPost(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException { 
        
        InputStream inStream = request.getInputStream(); 
        ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); 
        byte[] buffer = new byte[1024]; 
        int len = 0; 
        while ((len = inStream.read(buffer)) != -1) { 
         outSteam.write(buffer, 0, len); 
        } 
          
        outSteam.close(); 
        inStream.close(); 
        String result = new String(outSteam.toByteArray(),"utf-8");//獲取微信調(diào)用我們notify_url的返回信息 
        Map<Object, Object> map=null; 
        try { 
         map = XMLUtil.doXMLParse(result); 
        } catch (JDOMException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
        for(Object keyValue : map.keySet()){ 
         System.out.println(keyValue+"="+map.get(keyValue)); 
        } 
        if (map.get("result_code").toString().equalsIgnoreCase("SUCCESS")) { 
           
         //對訂單進行業(yè)務(wù)操作 
         System.out.println("-------------OK"); 
         response.getWriter().write(PayCommonUtil.setXML("SUCCESS", "")); //告訴微信服務(wù)器,我收到信息了,不要在調(diào)用回調(diào)action了 
           
        } 
       } 
        
      }</pre><p>對于上面的代碼,有很多都是參考http://blog.csdn.net/u011160656/article/details/41759195,因此這部分的代碼就不貼出來了,需要的話看這個博客就知道了。<br/></p><p>二  微信掃碼支付(模式一)</p><p>要點:必須調(diào)用長鏈接轉(zhuǎn)短鏈接接口、正確配置掃碼支付回調(diào)URL</p><p>1 根據(jù)訂單號生成微信支付二維碼</p><p>下面是幾個生成二維碼的方法:</p><pre class='brush:php;toolbar:false;'>package com.debug.weixin.util; 
      import com.google.zxing.common.BitMatrix; 
        
       import javax.imageio.ImageIO; 
       import java.io.File; 
       import java.io.OutputStream; 
       import java.io.IOException; 
       import java.awt.image.BufferedImage; 
        
        
       public final class MatrixToImageWriter { 
        
       private static final int BLACK = 0xFF000000; 
       private static final int WHITE = 0xFFFFFFFF; 
        
       private MatrixToImageWriter() {} 
        
         
       public static BufferedImage toBufferedImage(BitMatrix matrix) { 
        int width = matrix.getWidth(); 
        int height = matrix.getHeight(); 
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 
        for (int x = 0; x < width; x++) { 
        for (int y = 0; y < height; y++) { 
         image.setRGB(x, y, matrix.get(x, y) ? BLACK : WHITE); 
        } 
        } 
        return image; 
       } 
        
         
       public static void writeToFile(BitMatrix matrix, String format, File file) 
        throws IOException { 
        BufferedImage image = toBufferedImage(matrix); 
        if (!ImageIO.write(image, format, file)) { 
        throw new IOException("Could not write an image of format " + format + " to " + file); 
        } 
       } 
        
         
       public static void writeToStream(BitMatrix matrix, String format, OutputStream stream) 
        throws IOException { 
        BufferedImage image = toBufferedImage(matrix); 
        if (!ImageIO.write(image, format, stream)) { 
        throw new IOException("Could not write an image of format " + format); 
        } 
       } 
        
       }</pre><p> 這個算是工具類,還有一個就是把二維碼顯示在界面上的方法,CreateQRCode主要用到代碼塊:</p><pre class='brush:php;toolbar:false;'>public static void createCodeStream(String text,HttpServletResponse response) throws Exception{ 
        
       // response.setContentType("image/jpeg"); 
       ServletOutputStream sos = response.getOutputStream(); 
       
       int width = 500; 
       int height = 500; 
       //二維碼的圖片格式 
       String format = "jpg"; 
       MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); 
       Map hints = new HashMap(); 
       //內(nèi)容所使用編碼 
       hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); 
       BitMatrix bitMatrix = multiFormatWriter.encode(text, BarcodeFormat.QR_CODE, width, height, hints); 
        
        
       //生成二維碼 
        
       MatrixToImageWriter.writeToStream(bitMatrix, format,sos); 
        
       sos.close(); 
        
        
      }</pre><p>2 長鏈接轉(zhuǎn)短鏈接生成二維碼,編寫掃碼支付回調(diào)方法并調(diào)用統(tǒng)一下單接口</p><pre class='brush:php;toolbar:false;'>package com.debug.weixin.servlet; 
        
      import java.io.ByteArrayOutputStream; 
      import java.io.IOException; 
      import java.io.InputStream; 
      import java.io.PrintWriter; 
      import java.util.Date; 
      import java.util.Map; 
      import java.util.SortedMap; 
      import java.util.TreeMap; 
        
      import javax.servlet.ServletException; 
      import javax.servlet.http.HttpServlet; 
      import javax.servlet.http.HttpServletRequest; 
      import javax.servlet.http.HttpServletResponse; 
        
      import org.jdom.JDOMException; 
        
      import com.debug.weixin.util.CommonUtil; 
      import com.debug.weixin.util.ConfigUtil; 
      import com.debug.weixin.util.CreateQRCode; 
      import com.debug.weixin.util.PayCommonUtil; 
      import com.debug.weixin.util.XMLUtil; 
      import com.mongodb.DBObject; 
        
      public class ScanCodePayServlet extends HttpServlet { 
        
         
       public void doGet(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException { 
        this.doPost(request, response); 
          
       } 
        
         
       public void doPost(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException { 
          
        String flag=request.getParameter("flag"); 
        if("createCode".equals(flag)){ 
         createPayCode(request,response); 
        }else{ 
         try { 
          wxScanCodeHandler(request,response); 
         } catch (Exception e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        } 
          
          
       } 
         
       public void createPayCode(HttpServletRequest request,HttpServletResponse response){ 
          
        String orderNo=request.getParameter("orderNo"); 
          
        SortedMap<Object,Object> paras = new TreeMap<Object,Object>(); 
        paras.put("appid", ConfigUtil.APPID); 
        paras.put("mch_id", ConfigUtil.MCH_ID); 
        paras.put("time_stamp", Long.toString(new Date().getTime())); 
        paras.put("nonce_str", PayCommonUtil.CreateNoncestr()); 
        paras.put("product_id", orderNo);//商品號要唯一 
        String sign = PayCommonUtil.createSign("UTF-8", paras); 
        paras.put("sign", sign); 
          
        String url = "weixin://wxpay/bizpayurl?sign=SIGN&appid=APPID&mch_id=MCHID&product_id=PRODUCTID&time_stamp=TIMESTAMP&nonce_str=NOCESTR"; 
        String nativeUrl = url.replace("SIGN", sign).replace("APPID", ConfigUtil.APPID).replace("MCHID", ConfigUtil.MCH_ID).replace("PRODUCTID", (String)paras.get("product_id")).replace("TIMESTAMP", (String)paras.get("time_stamp")).replace("NOCESTR", (String)paras.get("nonce_str")); 
          
        
        
         SortedMap<Object,Object> parameters = new TreeMap<Object,Object>(); 
         parameters.put("appid", ConfigUtil.APPID); 
         parameters.put("mch_id", ConfigUtil.MCH_ID); 
         parameters.put("nonce_str", PayCommonUtil.CreateNoncestr()); 
         parameters.put("long_url", CommonUtil.urlEncodeUTF8(nativeUrl)); 
         String sign2 = PayCommonUtil.createSign("UTF-8", parameters); 
         parameters.put("sign", sign2); 
         String requestXML = PayCommonUtil.getRequestXml(parameters); 
         String result =CommonUtil.httpsRequestForStr(ConfigUtil.SHORT_URL, "POST", requestXML); 
          
         Map<String, String> map=null; 
        try { 
         map = XMLUtil.doXMLParse(result); 
        } catch (JDOMException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
         String returnCode = map.get("return_code"); 
         String resultCode = map.get("result_code"); 
          
         if(returnCode.equalsIgnoreCase("SUCCESS")&&resultCode.equalsIgnoreCase("SUCCESS")){ 
           
          String shortUrl = map.get("short_url"); 
          //TODO 拿到shortUrl,寫代碼生成二維碼 
          System.out.println("shortUrl="+shortUrl); 
          try { 
          CreateQRCode.createCodeStream(shortUrl,response); 
          } catch (Exception e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
          } 
        } 
       } 
         
         
       public void wxScanCodeHandler(HttpServletRequest request,HttpServletResponse response) throws Exception { 
        InputStream inStream = request.getInputStream(); 
        ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); 
        byte[] buffer = new byte[1024]; 
        int len = 0; 
        while ((len = inStream.read(buffer)) != -1) { 
         outSteam.write(buffer, 0, len); 
        } 
          
        outSteam.close(); 
        inStream.close(); 
        String result = new String(outSteam.toByteArray(),"utf-8");//獲取微信調(diào)用我們notify_url的返回信息 
        Map<Object, Object> map=null; 
        try { 
         map = XMLUtil.doXMLParse(result); 
        } catch (JDOMException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
        for(Object keyValue : map.keySet()){ 
         System.out.println(keyValue+"="+map.get(keyValue)); 
        } 
        String orderNo=map.get("product_id").toString(); 
          
        //接收到請求參數(shù)后調(diào)用統(tǒng)一下單接口 
        SortedMap<Object, Object> parameters = new TreeMap<Object, Object>(); 
        parameters.put("appid", ConfigUtil.APPID); 
        
        parameters.put("mch_id", ConfigUtil.MCH_ID); 
        parameters.put("device_info", "1000"); 
        parameters.put("body", "測試掃碼支付訂單"); 
        parameters.put("nonce_str", PayCommonUtil.CreateNoncestr()); 
          
           
        parameters.put("out_trade_no", map.get("product_id")); 
        //parameters.put("total_fee", String.valueOf(totalPrice)); 
        parameters.put("total_fee", "1"); 
        parameters.put("spbill_create_ip", request.getRemoteAddr()); 
        parameters.put("notify_url", ConfigUtil.NOTIFY_URL); 
        parameters.put("trade_type", "NATIVE"); 
        parameters.put("openid", map.get("openid")); 
        
        String sign = PayCommonUtil.createSign("UTF-8", parameters); 
         
        parameters.put("sign", sign); 
        
        String requestXML = PayCommonUtil.getRequestXml(parameters); 
        
        String result2 = CommonUtil.httpsRequestForStr(ConfigUtil.UNIFIED_ORDER_URL,"POST", requestXML); 
          
        System.out.println("-----------------------------統(tǒng)一下單結(jié)果---------------------------"); 
        System.out.println(result2); 
        Map<String, String> mm=null; 
        try { 
         mm=getH5PayMap(result2,request); 
        } catch (Exception e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
        //String prepayId=getPrepayId(result2,request); 
        //String returnNoneStr=getReturnNoneStr(result2,request); 
        String prepayId=mm.get("prepay_id"); 
        String returnNoneStr=mm.get("nonce_str");; 
        SortedMap<Object, Object> lastSign = new TreeMap<Object, Object>(); 
        lastSign.put("return_code", "SUCCESS"); 
        lastSign.put("appid", ConfigUtil.APPID); 
        lastSign.put("mch_id", ConfigUtil.MCH_ID); 
        lastSign.put("nonce_str", returnNoneStr); 
        lastSign.put("prepay_id", prepayId); 
        lastSign.put("result_code", "SUCCESS"); 
        lastSign.put("key", ConfigUtil.API_KEY); 
          
          
        String lastSignpara = PayCommonUtil.createSign("UTF-8", lastSign); 
          
          
        StringBuffer buf=new StringBuffer(); 
        buf.append("<xml>"); 
        buf.append("<return_code>SUCCESS</return_code>"); 
        buf.append("<appid>"+ConfigUtil.APPID+"</appid>"); 
        buf.append("<mch_id>"+ConfigUtil.MCH_ID+"</mch_id>"); 
        buf.append("<nonce_str>"+returnNoneStr+"</nonce_str>"); 
        buf.append("<prepay_id>"+prepayId+"</prepay_id>"); 
        buf.append("<result_code>SUCCESS</result_code>"); 
        buf.append("<sign>"+lastSignpara+"</sign>"); 
        buf.append("</xml>"); 
          
        response.getWriter().print(buf.toString()); 
       } 
         
       public Map<String, String> getH5PayMap(String result,HttpServletRequest request) throws Exception{ 
          
         Map<String, String> map = XMLUtil.doXMLParse(result); 
         return map; 
       } 
        
      }</pre><p>最終看下公眾號支付和掃碼支付的微信配置:</p>
      <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn//upload/image/142/467/410/1486178956477450.png" class="lazy" title="Java微信支付之公眾號支付、掃碼支付實例" alt="Java微信支付之公眾號支付、掃碼支付實例"    style="max-width:90%"  style="max-width:90%"><img src="/static/imghw/default1.png" data-src="https://img.php.cn//upload/image/788/523/117/1486178971761754.png" class="lazy" title="Java微信支付之公眾號支付、掃碼支付實例" alt="Java微信支付之公眾號支付、掃碼支付實例"    style="max-width:90%"  style="max-width:90%"></p>
      <p>希望通過這篇文章,大家能明白就算通過Java來做微信公眾號、微信支付而不借助github提供的那些坑人的代碼也可以開發(fā)出另自己和客戶滿意的微信應(yīng)用。雖然微信給出的demo都是PHP的,但這些都是浮云,開發(fā)語言是其次,理解接口調(diào)用需具備的底層只是才是程序員的必修課。</p>
      <p>更多Java微信支付之公眾號支付、掃碼支付實例相關(guān)文章請關(guān)注PHP中文網(wǎng)!</p>
      
      
      						</div>
      					</div>
      					<div   id="377j5v51b"   class="wzconShengming_sp">
      						<div   id="377j5v51b"   class="bzsmdiv_sp">本站聲明</div>
      						<div>本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應(yīng)法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn</div>
      					</div>
      				</div>
      
      				<ins class="adsbygoogle"
           style="display:block"
           data-ad-format="autorelaxed"
           data-ad-client="ca-pub-5902227090019525"
           data-ad-slot="2507867629"></ins>
      
      
      
      				<div   id="377j5v51b"   class="AI_ToolDetails_main4sR">
      
      
      				<ins class="adsbygoogle"
              style="display:block"
              data-ad-client="ca-pub-5902227090019525"
              data-ad-slot="3653428331"
              data-ad-format="auto"
              data-full-width-responsive="true"></ins>
          
      
      
      					<!-- <div   id="377j5v51b"   class="phpgenera_Details_mainR4">
      						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
      							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
      								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      									src="/static/imghw/hotarticle2.png" alt="" />
      								<h2>熱門文章</h2>
      							</div>
      							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/1796832397.html" title="Grass Wonder Build Guide |烏瑪媽媽漂亮的德比" class="phpgenera_Details_mainR4_bottom_title">Grass Wonder Build Guide |烏瑪媽媽漂亮的德比</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<span>1 個月前</span>
      										<span>By Jack chen</span>
      									</div>
      								</div>
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/1796833110.html" title="<??>:在森林里99夜 - 所有徽章以及如何解鎖" class="phpgenera_Details_mainR4_bottom_title"><??>:在森林里99夜 - 所有徽章以及如何解鎖</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<span>4 周前</span>
      										<span>By DDD</span>
      									</div>
      								</div>
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/1796831605.html" title="烏瑪?shù)姆劢z漂亮的德比橫幅日程(2025年7月)" class="phpgenera_Details_mainR4_bottom_title">烏瑪?shù)姆劢z漂亮的德比橫幅日程(2025年7月)</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<span>1 個月前</span>
      										<span>By Jack chen</span>
      									</div>
      								</div>
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/1796836699.html" title="Rimworld Odyssey溫度指南和Gravtech" class="phpgenera_Details_mainR4_bottom_title">Rimworld Odyssey溫度指南和Gravtech</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<span>3 周前</span>
      										<span>By Jack chen</span>
      									</div>
      								</div>
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/1796831905.html" title="Windows安全是空白或不顯示選項" class="phpgenera_Details_mainR4_bottom_title">Windows安全是空白或不顯示選項</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<span>1 個月前</span>
      										<span>By 下次還敢</span>
      									</div>
      								</div>
      														</div>
      							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
      								<a href="http://www.miracleart.cn/zh/article.html">顯示更多</a>
      							</div>
      						</div>
      					</div> -->
      
      
      											<div   id="377j5v51b"   class="phpgenera_Details_mainR3">
      							<div   id="377j5v51b"   class="phpmain1_4R_readrank">
      								<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
      									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      										onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      										src="/static/imghw/hottools2.png" alt="" />
      									<h2>熱AI工具</h2>
      								</div>
      								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_bottom">
      																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
      											<a href="http://www.miracleart.cn/zh/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_top_img">
      												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173410641626608.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undress AI Tool" />
      											</a>
      											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
      												<a href="http://www.miracleart.cn/zh/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title">
      													<h3>Undress AI Tool</h3>
      												</a>
      												<p>免費脫衣服圖片</p>
      											</div>
      										</div>
      																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
      											<a href="http://www.miracleart.cn/zh/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_top_img">
      												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411540686492.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Undresser.AI Undress" />
      											</a>
      											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
      												<a href="http://www.miracleart.cn/zh/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title">
      													<h3>Undresser.AI Undress</h3>
      												</a>
      												<p>人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片</p>
      											</div>
      										</div>
      																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
      											<a href="http://www.miracleart.cn/zh/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_top_img">
      												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411552797167.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="AI Clothes Remover" />
      											</a>
      											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
      												<a href="http://www.miracleart.cn/zh/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title">
      													<h3>AI Clothes Remover</h3>
      												</a>
      												<p>用于從照片中去除衣服的在線人工智能工具。</p>
      											</div>
      										</div>
      																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
      											<a href="http://www.miracleart.cn/zh/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_top_img">
      												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173411529149311.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Clothoff.io" />
      											</a>
      											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
      												<a href="http://www.miracleart.cn/zh/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title">
      													<h3>Clothoff.io</h3>
      												</a>
      												<p>AI脫衣機</p>
      											</div>
      										</div>
      																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
      											<a href="http://www.miracleart.cn/zh/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_top_img">
      												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													class="lazy"  data-src="https://img.php.cn/upload/ai_manual/001/246/273/173414504068133.jpg?x-oss-process=image/resize,m_fill,h_50,w_50" src="/static/imghw/default1.png" alt="Video Face Swap" />
      											</a>
      											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
      												<a href="http://www.miracleart.cn/zh/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_title">
      													<h3>Video Face Swap</h3>
      												</a>
      												<p>使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!</p>
      											</div>
      										</div>
      																</div>
      								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
      									<a href="http://www.miracleart.cn/zh/ai">顯示更多</a>
      								</div>
      							</div>
      						</div>
      					
      
      
      					<div   id="377j5v51b"   class="phpgenera_Details_mainR4">
      						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
      							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
      								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      									src="/static/imghw/hotarticle2.png" alt="" />
      								<h2>熱門文章</h2>
      							</div>
      							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/1796832397.html" title="Grass Wonder Build Guide |烏瑪媽媽漂亮的德比" class="phpgenera_Details_mainR4_bottom_title">Grass Wonder Build Guide |烏瑪媽媽漂亮的德比</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<span>1 個月前</span>
      										<span>By Jack chen</span>
      									</div>
      								</div>
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/1796833110.html" title="<??>:在森林里99夜 - 所有徽章以及如何解鎖" class="phpgenera_Details_mainR4_bottom_title"><??>:在森林里99夜 - 所有徽章以及如何解鎖</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<span>4 周前</span>
      										<span>By DDD</span>
      									</div>
      								</div>
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/1796831605.html" title="烏瑪?shù)姆劢z漂亮的德比橫幅日程(2025年7月)" class="phpgenera_Details_mainR4_bottom_title">烏瑪?shù)姆劢z漂亮的德比橫幅日程(2025年7月)</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<span>1 個月前</span>
      										<span>By Jack chen</span>
      									</div>
      								</div>
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/1796836699.html" title="Rimworld Odyssey溫度指南和Gravtech" class="phpgenera_Details_mainR4_bottom_title">Rimworld Odyssey溫度指南和Gravtech</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<span>3 周前</span>
      										<span>By Jack chen</span>
      									</div>
      								</div>
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/1796831905.html" title="Windows安全是空白或不顯示選項" class="phpgenera_Details_mainR4_bottom_title">Windows安全是空白或不顯示選項</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<span>1 個月前</span>
      										<span>By 下次還敢</span>
      									</div>
      								</div>
      														</div>
      							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
      								<a href="http://www.miracleart.cn/zh/article.html">顯示更多</a>
      							</div>
      						</div>
      					</div>
      
      
      											<div   id="377j5v51b"   class="phpgenera_Details_mainR3">
      							<div   id="377j5v51b"   class="phpmain1_4R_readrank">
      								<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
      									<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      										onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      										src="/static/imghw/hottools2.png" alt="" />
      									<h2>熱工具</h2>
      								</div>
      								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_bottom">
      																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
      											<a href="http://www.miracleart.cn/zh/toolset/development-tools/92" title="記事本++7.3.1" class="phpmain_tab2_mids_top_img">
      												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab96f0f39f7357.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="記事本++7.3.1" />
      											</a>
      											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
      												<a href="http://www.miracleart.cn/zh/toolset/development-tools/92" title="記事本++7.3.1" class="phpmain_tab2_mids_title">
      													<h3>記事本++7.3.1</h3>
      												</a>
      												<p>好用且免費的代碼編輯器</p>
      											</div>
      										</div>
      																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
      											<a href="http://www.miracleart.cn/zh/toolset/development-tools/93" title="SublimeText3漢化版" class="phpmain_tab2_mids_top_img">
      												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab97a3baad9677.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3漢化版" />
      											</a>
      											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
      												<a href="http://www.miracleart.cn/zh/toolset/development-tools/93" title="SublimeText3漢化版" class="phpmain_tab2_mids_title">
      													<h3>SublimeText3漢化版</h3>
      												</a>
      												<p>中文版,非常好用</p>
      											</div>
      										</div>
      																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
      											<a href="http://www.miracleart.cn/zh/toolset/development-tools/121" title="禪工作室 13.0.1" class="phpmain_tab2_mids_top_img">
      												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58ab97ecd1ab2670.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="禪工作室 13.0.1" />
      											</a>
      											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
      												<a href="http://www.miracleart.cn/zh/toolset/development-tools/121" title="禪工作室 13.0.1" class="phpmain_tab2_mids_title">
      													<h3>禪工作室 13.0.1</h3>
      												</a>
      												<p>功能強大的PHP集成開發(fā)環(huán)境</p>
      											</div>
      										</div>
      																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
      											<a href="http://www.miracleart.cn/zh/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_top_img">
      												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58d0e0fc74683535.jpg?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="Dreamweaver CS6" />
      											</a>
      											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
      												<a href="http://www.miracleart.cn/zh/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_title">
      													<h3>Dreamweaver CS6</h3>
      												</a>
      												<p>視覺化網(wǎng)頁開發(fā)工具</p>
      											</div>
      										</div>
      																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
      											<a href="http://www.miracleart.cn/zh/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_top_img">
      												<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      													class="lazy"  data-src="https://img.php.cn/upload/manual/000/000/001/58d34035e2757995.png?x-oss-process=image/resize,m_fill,h_50,w_72" src="/static/imghw/default1.png" alt="SublimeText3 Mac版" />
      											</a>
      											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
      												<a href="http://www.miracleart.cn/zh/toolset/development-tools/500" title="SublimeText3 Mac版" class="phpmain_tab2_mids_title">
      													<h3>SublimeText3 Mac版</h3>
      												</a>
      												<p>神級代碼編輯軟件(SublimeText3)</p>
      											</div>
      										</div>
      																	</div>
      								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
      									<a href="http://www.miracleart.cn/zh/ai">顯示更多</a>
      								</div>
      							</div>
      						</div>
      										
      
      					
      					<div   id="377j5v51b"   class="phpgenera_Details_mainR4">
      						<div   id="377j5v51b"   class="phpmain1_4R_readrank">
      							<div   id="377j5v51b"   class="phpmain1_4R_readrank_top">
      								<img onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      									onerror="this.onerror=''; this.src='/static/imghw/default1.png'"
      									src="/static/imghw/hotarticle2.png" alt="" />
      								<h2>熱門話題</h2>
      							</div>
      							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/laravel-tutori" title="Laravel 教程" class="phpgenera_Details_mainR4_bottom_title">Laravel 教程</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
      											<img src="/static/imghw/eyess.png" alt="" />
      											<span>1601</span>
      										</div>
      										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
      											<img src="/static/imghw/tiezi.png" alt="" />
      											<span>29</span>
      										</div>
      									</div>
      								</div>
      															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
      									<a href="http://www.miracleart.cn/zh/faq/php-tutorial" title="PHP教程" class="phpgenera_Details_mainR4_bottom_title">PHP教程</a>
      									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
      										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
      											<img src="/static/imghw/eyess.png" alt="" />
      											<span>1502</span>
      										</div>
      										<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_infos">
      											<img src="/static/imghw/tiezi.png" alt="" />
      											<span>276</span>
      										</div>
      									</div>
      								</div>
      														</div>
      							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
      								<a href="http://www.miracleart.cn/zh/faq/zt">顯示更多</a>
      							</div>
      						</div>
      					</div>
      				</div>
      			</div>
      					</div>
      	</main>
      	<footer>
          <div   id="377j5v51b"   class="footer">
              <div   id="377j5v51b"   class="footertop">
                  <img src="/static/imghw/logo.png" alt="">
                  <p>公益在線PHP培訓,幫助PHP學習者快速成長!</p>
              </div>
              <div   id="377j5v51b"   class="footermid">
                  <a href="http://www.miracleart.cn/zh/about/us.html">關(guān)于我們</a>
                  <a href="http://www.miracleart.cn/zh/about/disclaimer.html">免責聲明</a>
                  <a href="http://www.miracleart.cn/zh/update/article_0_1.html">Sitemap</a>
              </div>
              <div   id="377j5v51b"   class="footerbottom">
                  <p>
                      ? php.cn All rights reserved
                  </p>
              </div>
          </div>
      </footer>
      
      <input type="hidden" id="verifycode" value="/captcha.html">
      
      
      
      
      		<link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css?2' type='text/css' media='all' />
      	
      	
      	
      	
      	
      
      	
      	
      
      
      
      
      
      
      <footer>
      <div class="friendship-link">
      <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p>
      <a href="http://www.miracleart.cn/" title="国产av日韩一区二区三区精品">国产av日韩一区二区三区精品</a>
      
      <div class="friend-links">
      
      
      </div>
      </div>
      
      </footer>
      
      
      <script>
      (function(){
          var bp = document.createElement('script');
          var curProtocol = window.location.protocol.split(':')[0];
          if (curProtocol === 'https') {
              bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
          }
          else {
              bp.src = 'http://push.zhanzhang.baidu.com/push.js';
          }
          var s = document.getElementsByTagName("script")[0];
          s.parentNode.insertBefore(bp, s);
      })();
      </script>
      </body><div id="umu6p" class="pl_css_ganrao" style="display: none;"><small id="umu6p"></small><tfoot id="umu6p"><pre id="umu6p"><rt id="umu6p"></rt></pre></tfoot><style id="umu6p"><progress id="umu6p"></progress></style><source id="umu6p"><del id="umu6p"><thead id="umu6p"><output id="umu6p"></output></thead></del></source><tr id="umu6p"></tr><dfn id="umu6p"><thead id="umu6p"><source id="umu6p"></source></thead></dfn><em id="umu6p"></em><option id="umu6p"></option><fieldset id="umu6p"></fieldset><meter id="umu6p"><th id="umu6p"><pre id="umu6p"><abbr id="umu6p"></abbr></pre></th></meter><table id="umu6p"></table><dl id="umu6p"><ruby id="umu6p"></ruby></dl><optgroup id="umu6p"><td id="umu6p"><form id="umu6p"></form></td></optgroup><dd id="umu6p"></dd><pre id="umu6p"></pre><acronym id="umu6p"><noframes id="umu6p"><rt id="umu6p"><tr id="umu6p"></tr></rt></noframes></acronym><dfn id="umu6p"></dfn><ul id="umu6p"><wbr id="umu6p"><ul id="umu6p"><big id="umu6p"></big></ul></wbr></ul><optgroup id="umu6p"></optgroup><menu id="umu6p"><dd id="umu6p"><menu id="umu6p"><dd id="umu6p"></dd></menu></dd></menu><delect id="umu6p"><style id="umu6p"><tr id="umu6p"></tr></style></delect><optgroup id="umu6p"></optgroup><ul id="umu6p"></ul><nobr id="umu6p"></nobr><tfoot id="umu6p"></tfoot><p id="umu6p"></p><samp id="umu6p"></samp><tfoot id="umu6p"><track id="umu6p"><ol id="umu6p"></ol></track></tfoot><em id="umu6p"></em><small id="umu6p"></small><dfn id="umu6p"></dfn><rt id="umu6p"></rt><table id="umu6p"></table><em id="umu6p"></em><optgroup id="umu6p"></optgroup><menu id="umu6p"><dd id="umu6p"><object id="umu6p"></object></dd></menu><pre id="umu6p"></pre><del id="umu6p"><bdo id="umu6p"><meter id="umu6p"></meter></bdo></del><center id="umu6p"><optgroup id="umu6p"><center id="umu6p"></center></optgroup></center><rt id="umu6p"><delect id="umu6p"><cite id="umu6p"></cite></delect></rt><output id="umu6p"></output><tr id="umu6p"></tr><button id="umu6p"></button><strong id="umu6p"></strong><td id="umu6p"><kbd id="umu6p"><p id="umu6p"></p></kbd></td><pre id="umu6p"></pre><big id="umu6p"></big><table id="umu6p"></table><table id="umu6p"></table><li id="umu6p"></li><samp id="umu6p"><tbody id="umu6p"></tbody></samp><i id="umu6p"></i><ins id="umu6p"></ins><optgroup id="umu6p"><sub id="umu6p"></sub></optgroup><em id="umu6p"></em><big id="umu6p"></big><tbody id="umu6p"><strike id="umu6p"><bdo id="umu6p"></bdo></strike></tbody><xmp id="umu6p"><li id="umu6p"><legend id="umu6p"></legend></li></xmp><em id="umu6p"></em><dfn id="umu6p"><listing id="umu6p"><dfn id="umu6p"></dfn></listing></dfn><form id="umu6p"></form><s id="umu6p"></s><tfoot id="umu6p"></tfoot><rp id="umu6p"></rp><source id="umu6p"></source><samp id="umu6p"><tbody id="umu6p"><output id="umu6p"></output></tbody></samp><span id="umu6p"><noframes id="umu6p"></noframes></span><xmp id="umu6p"><label id="umu6p"></label></xmp><table id="umu6p"><wbr id="umu6p"><label id="umu6p"><samp id="umu6p"></samp></label></wbr></table><input id="umu6p"></input><dfn id="umu6p"></dfn><pre id="umu6p"></pre><tr id="umu6p"><dfn id="umu6p"><pre id="umu6p"></pre></dfn></tr><tbody id="umu6p"><strike id="umu6p"><abbr id="umu6p"></abbr></strike></tbody><li id="umu6p"><tbody id="umu6p"></tbody></li><strike id="umu6p"></strike><center id="umu6p"><optgroup id="umu6p"><tt id="umu6p"></tt></optgroup></center><center id="umu6p"></center><delect id="umu6p"><small id="umu6p"><ins id="umu6p"></ins></small></delect><strike id="umu6p"></strike><pre id="umu6p"></pre><dd id="umu6p"><abbr id="umu6p"><blockquote id="umu6p"></blockquote></abbr></dd><pre id="umu6p"><samp id="umu6p"><tbody id="umu6p"><output id="umu6p"></output></tbody></samp></pre><form id="umu6p"><optgroup id="umu6p"><blockquote id="umu6p"></blockquote></optgroup></form><i id="umu6p"></i><dfn id="umu6p"></dfn><big id="umu6p"><tbody id="umu6p"><output id="umu6p"></output></tbody></big><strike id="umu6p"><th id="umu6p"><tbody id="umu6p"></tbody></th></strike><fieldset id="umu6p"></fieldset><dl id="umu6p"><sup id="umu6p"></sup></dl><xmp id="umu6p"><label id="umu6p"><legend id="umu6p"></legend></label></xmp><tfoot id="umu6p"><track id="umu6p"></track></tfoot><nav id="umu6p"></nav><label id="umu6p"></label><sup id="umu6p"></sup><font id="umu6p"></font><td id="umu6p"></td><ul id="umu6p"><code id="umu6p"><tr id="umu6p"></tr></code></ul><dd id="umu6p"><strong id="umu6p"><dd id="umu6p"><small id="umu6p"></small></dd></strong></dd><form id="umu6p"></form><th id="umu6p"></th><sup id="umu6p"></sup><fieldset id="umu6p"></fieldset><fieldset id="umu6p"><option id="umu6p"><acronym id="umu6p"></acronym></option></fieldset><th id="umu6p"><small id="umu6p"><tfoot id="umu6p"></tfoot></small></th><xmp id="umu6p"><bdo id="umu6p"><meter id="umu6p"></meter></bdo></xmp><dd id="umu6p"></dd><u id="umu6p"><legend id="umu6p"><ul id="umu6p"><big id="umu6p"></big></ul></legend></u><em id="umu6p"></em><tt id="umu6p"><rt id="umu6p"><tr id="umu6p"></tr></rt></tt><noframes id="umu6p"><span id="umu6p"></span></noframes><style id="umu6p"><delect id="umu6p"><cite id="umu6p"><ins id="umu6p"></ins></cite></delect></style><ruby id="umu6p"></ruby><rt id="umu6p"></rt><optgroup id="umu6p"></optgroup><legend id="umu6p"><ruby id="umu6p"><dl id="umu6p"><button id="umu6p"></button></dl></ruby></legend><strong id="umu6p"></strong><acronym id="umu6p"></acronym><small id="umu6p"></small><pre id="umu6p"><menu id="umu6p"><font id="umu6p"></font></menu></pre><dfn id="umu6p"></dfn><dfn id="umu6p"></dfn><u id="umu6p"><center id="umu6p"></center></u><dfn id="umu6p"><span id="umu6p"><input id="umu6p"></input></span></dfn><xmp id="umu6p"></xmp><style id="umu6p"><delect id="umu6p"></delect></style><small id="umu6p"></small><dd id="umu6p"><strong id="umu6p"><input id="umu6p"><xmp id="umu6p"></xmp></input></strong></dd><ruby id="umu6p"></ruby><samp id="umu6p"></samp><output id="umu6p"></output><menu id="umu6p"><dd id="umu6p"><strong id="umu6p"></strong></dd></menu><blockquote id="umu6p"></blockquote><pre id="umu6p"></pre><sub id="umu6p"></sub><rt id="umu6p"><small id="umu6p"></small></rt><dd id="umu6p"><small id="umu6p"><tfoot id="umu6p"><nobr id="umu6p"></nobr></tfoot></small></dd><nobr id="umu6p"><tr id="umu6p"><nav id="umu6p"><thead id="umu6p"></thead></nav></tr></nobr><p id="umu6p"></p><th id="umu6p"><option id="umu6p"><acronym id="umu6p"><noframes id="umu6p"></noframes></acronym></option></th><td id="umu6p"></td><optgroup id="umu6p"><td id="umu6p"><optgroup id="umu6p"></optgroup></td></optgroup><tbody id="umu6p"><big id="umu6p"><video id="umu6p"><dfn id="umu6p"></dfn></video></big></tbody><abbr id="umu6p"><fieldset id="umu6p"></fieldset></abbr><code id="umu6p"><ins id="umu6p"></ins></code><font id="umu6p"></font><strike id="umu6p"><button id="umu6p"><form id="umu6p"></form></button></strike><menu id="umu6p"></menu><samp id="umu6p"></samp><table id="umu6p"><wbr id="umu6p"></wbr></table></div>
      
      </html>