<span id="jtm8b"></span>
<center id="jtm8b"></center>
<li id="jtm8b"></li>
<pre id="jtm8b"></pre>
<center id="jtm8b"></center>
<input id="jtm8b"></input>
 \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 écrivez une servlet pour obtenir le code via Oauth<. ??><\/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 Après avoir obtenu le code, obtenez l'openId via REDIRECTURI et appelez l'interface de commande unifiée 

<\/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>Appelez l'interface de commande unifiée WeChat Vous devez faire attention à l'algorithme de signature. .Ce n'est que lorsque le calcul de la signature est correct que le paiement peut être effectué en douceur 

<\/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 écrivez l'interface de paiement finale et activez le paiement WeChat 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://m.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://m.miracleart.cn/fr/" 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="communauté" class="head_nava head_nava-template1">communauté</a>
                    <div   class="377j5v51b"   id="dropdown-template1" style="display: none;">
                        <div   id="377j5v51b"   class="languagechoose">
                            <a href="http://m.miracleart.cn/fr/article.html" title="Articles" class="languagechoosea on">Articles</a>
                            <a href="http://m.miracleart.cn/fr/faq/zt" title="Sujets" class="languagechoosea">Sujets</a>
                            <a href="http://m.miracleart.cn/fr/wenda.html" title="Questions et réponses" class="languagechoosea">Questions et réponses</a>
                        </div>
                    </div>
                </div>

                <div   id="377j5v51b"   class="head_navs">
                    <a href="javascript:;" title="Apprendre" class="head_nava head_nava-template1_1">Apprendre</a>
                    <div   class="377j5v51b"   id="dropdown-template1_1" style="display: none;">
                        <div   id="377j5v51b"   class="languagechoose">
                            <a href="http://m.miracleart.cn/fr/course.html" title="Cours" class="languagechoosea on">Cours</a>
                            <a href="http://m.miracleart.cn/fr/dic/" title="Dictionnaire de programmation" class="languagechoosea">Dictionnaire de programmation</a>
                        </div>
                    </div>
                </div>

                <div   id="377j5v51b"   class="head_navs">
                    <a href="javascript:;" title="Bibliothèque d'outils" class="head_nava head_nava-template1_2">Bibliothèque d'outils</a>
                    <div   class="377j5v51b"   id="dropdown-template1_2" style="display: none;">
                        <div   id="377j5v51b"   class="languagechoose">
                            <a href="http://m.miracleart.cn/fr/toolset/development-tools" title="Outils de développement" class="languagechoosea on">Outils de développement</a>
                            <a href="http://m.miracleart.cn/fr/toolset/website-source-code" title="Code source du site Web" class="languagechoosea">Code source du site Web</a>
                            <a href="http://m.miracleart.cn/fr/toolset/php-libraries" title="Bibliothèques PHP" class="languagechoosea">Bibliothèques PHP</a>
                            <a href="http://m.miracleart.cn/fr/toolset/js-special-effects" title="Effets spéciaux JS" class="languagechoosea on">Effets spéciaux JS</a>
                            <a href="http://m.miracleart.cn/fr/toolset/website-materials" title="Matériel du site Web" class="languagechoosea on">Matériel du site Web</a>
                            <a href="http://m.miracleart.cn/fr/toolset/extension-plug-ins" title="Plugins d'extension" class="languagechoosea on">Plugins d'extension</a>
                        </div>
                    </div>
                </div>

                <div   id="377j5v51b"   class="head_navs">
                    <a href="http://m.miracleart.cn/fr/ai" title="Outils d'IA" class="head_nava head_nava-template1_3">Outils d'IA</a>
                </div>

                <div   id="377j5v51b"   class="head_navs">
                    <a href="javascript:;" title="Loisirs" class="head_nava head_nava-template1_3">Loisirs</a>
                    <div   class="377j5v51b"   id="dropdown-template1_3" style="display: none;">
                        <div   id="377j5v51b"   class="languagechoose">
                            <a href="http://m.miracleart.cn/fr/game" title="Téléchargement du jeu" class="languagechoosea on">Téléchargement du jeu</a>
                            <a href="http://m.miracleart.cn/fr/mobile-game-tutorial/" title="Tutoriels de jeu" class="languagechoosea">Tutoriels de jeu</a>

                        </div>
                    </div>
                </div>
            </div>
        </div>
                    <div   id="377j5v51b"   class="head_search">
                <input id="key_words"  onkeydown="if (event.keyCode == 13) searchs('fr')" class="search-input" type="text" autocomplete="off" name="keywords" required="required" placeholder="Block,address,transaction,news" value="">
                <a href="javascript:;" title="recherche"  onclick="searchs('fr')"><img src="/static/imghw/find.png" alt="recherche"></a>
            </div>
                <div   id="377j5v51b"   class="head_right">
            <div   id="377j5v51b"   class="haed_language">
                <a href="javascript:;" class="layui-btn haed_language_btn">Fran?ais<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:setlang('zh-cn');" 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:;" 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://m.miracleart.cn/fr/" title="Maison"
							class="phpgenera_Details_mainL1a">Maison</a>
						<img src="/static/imghw/top_right.png" alt="" />
												<a href="http://m.miracleart.cn/fr/weixin-marketing.html"
							class="phpgenera_Details_mainL1a">Applet WeChat</a>
						<img src="/static/imghw/top_right.png" alt="" />
												<a href="http://m.miracleart.cn/fr/weixin-kaifa.html"
							class="phpgenera_Details_mainL1a">Développement WeChat</a>
						<img src="/static/imghw/top_right.png" alt="" />
						<span>Exemples de paiement par compte officiel de paiement Java WeChat et de paiement par scan code</span>
					</div>
					
					<div   id="377j5v51b"   class="Articlelist_txts">
						<div   id="377j5v51b"   class="Articlelist_txts_info">
							<h1 class="Articlelist_txts_title">Exemples de paiement par compte officiel de paiement Java WeChat et de paiement par scan code</h1>
							<div   id="377j5v51b"   class="Articlelist_txts_info_head">
								<div   id="377j5v51b"   class="author_info">
									<a href="http://m.miracleart.cn/fr/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://m.miracleart.cn/fr/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>Le paiement WeChat est devenu de plus en plus populaire maintenant, et de nombreux produits ont vu le jour avec l'astuce de pouvoir accéder rapidement au paiement WeChat. Cependant, cette commodité nous fait également progressivement compter sur des tiers pour faire les choses, et nous perdons le. capacité de penser de manière indépendante, cette fois, je prévois de partager le paiement WeChat que j'ai développé auparavant. </p>
<p>1. Paiement du compte officiel H5</p>
<p>Points clés?: Obtenir correctement l'openId et l'interface de commande unifiée, gérer correctement les notifications de résultat de paiement et configurer correctement le répertoire d'autorisation de paiement</p>
<p>H5 méthode de paiement Il s'agit d'une méthode de paiement plus largement utilisée. Cette méthode de paiement est principalement utilisée pour les pages Web de menu personnalisé dans WeChat. Elle repose sur le client WeChat installé sur le téléphone mobile. Seules les versions supérieures de WeChat prennent en charge le paiement WeChat. et faites attention aux instructions </p> <p>1 écrivez une page pour le paiement Comme c'est pour tester, il est simple d'écrire </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 écrivez une servlet pour obtenir le code via Oauth<. ??></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>3 Après avoir obtenu le code, obtenez l'openId via REDIRECTURI et appelez l'interface de commande unifiée <p></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>Appelez l'interface de commande unifiée WeChat Vous devez faire attention à l'algorithme de signature. .Ce n'est que lorsque le calcul de la signature est correct que le paiement peut être effectué en douceur <p></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> 4 écrivez l'interface de paiement finale et activez le paiement WeChat H5<p></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>5 Traitez la notification du résultat du paiement WeChat<p></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>Pour le code ci-dessus, beaucoup se réfèrent à http://blog.csdn.net/u011160656/article/details/41759195, donc cette partie du code ne sera pas publiée si vous en avez besoin, juste. lisez ce blog. <p><br/></p>2 Paiement par scan code WeChat (mode 1) <p></p>Points clés?: L'interface du lien long vers le lien court doit être appelée et l'URL de rappel du paiement par scan code doit être correctement configurée<p></p>1 Selon Générer le code QR de paiement WeChat à partir du numéro de commande <p></p>Voici plusieurs méthodes pour générer un code QR?: <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> Ceci est considéré comme un type d'outil, et le l'autre consiste à afficher le code QR dans l'interface. La méthode ci-dessus, CreateQRCode utilise principalement des blocs de code?: <p></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>2 Convertissez le lien long en lien court pour générer le code QR, écrivez la méthode de rappel de paiement par scan code et appelez interface de commande unifiée <p></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> Enfin, jetons un coup d'?il à la configuration WeChat du paiement par compte officiel et du paiement par scan code?: <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="Exemples de paiement par compte officiel de paiement Java WeChat et de paiement par scan code" alt="Exemples de paiement par compte officiel de paiement Java WeChat et de paiement par scan code"    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="Exemples de paiement par compte officiel de paiement Java WeChat et de paiement par scan code" alt="Exemples de paiement par compte officiel de paiement Java WeChat et de paiement par scan code"    style="max-width:90%"  style="max-width:90%"></p> I J'espère qu'à travers cet article, tout le monde pourra comprendre que même si vous utilisez Java pour rendre WeChat public Vous pouvez également développer des applications WeChat qui satisfont vous-même et vos clients sans recourir aux codes trompeurs fournis par Github. Bien que les démos fournies par WeChat soient toutes en PHP, ce ne sont que des nuages, et le langage de développement vient en deuxième position. Comprendre les couches sous-jacentes requises pour les appels d'interface n'est qu'un cours obligatoire pour les programmeurs. <p></p>Pour plus d'articles liés au paiement par compte officiel de paiement Java WeChat et à des exemples de paiement par scan code, veuillez faire attention au site Web PHP chinois?! <p></p>


						</div>
					</div>
					<div   id="377j5v51b"   class="wzconShengming_sp">
						<div   id="377j5v51b"   class="bzsmdiv_sp">Déclaration de ce site Web</div>
						<div>Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter 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>Article chaud</h2>
							</div>
							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://m.miracleart.cn/fr/faq/1796832397.html" title="Guide de construction de Grass Wonder | Uma musume joli derby" class="phpgenera_Details_mainR4_bottom_title">Guide de construction de Grass Wonder | Uma musume joli derby</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>1 Il y a quelques mois</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://m.miracleart.cn/fr/faq/1796833110.html" title="<??>: 99 nuits dans la forêt - tous les badges et comment les déverrouiller" class="phpgenera_Details_mainR4_bottom_title"><??>: 99 nuits dans la forêt - tous les badges et comment les déverrouiller</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>1 Il y a quelques mois</span>
										<span>By DDD</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://m.miracleart.cn/fr/faq/1796836699.html" title="Guide de température de Rimworld Odyssey pour les navires et Gravtech" class="phpgenera_Details_mainR4_bottom_title">Guide de température de Rimworld Odyssey pour les navires et Gravtech</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>3 Il y a quelques semaines</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://m.miracleart.cn/fr/faq/1796834553.html" title="Guide de construction Mejiro Ryan | Uma musume joli derby" class="phpgenera_Details_mainR4_bottom_title">Guide de construction Mejiro Ryan | Uma musume joli derby</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>4 Il y a quelques semaines</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://m.miracleart.cn/fr/faq/1796836084.html" title="Rimworld Odyssey Comment pêcher" class="phpgenera_Details_mainR4_bottom_title">Rimworld Odyssey Comment pêcher</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>3 Il y a quelques semaines</span>
										<span>By Jack chen</span>
									</div>
								</div>
														</div>
							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
								<a href="http://m.miracleart.cn/fr/article.html">Afficher plus</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>Outils d'IA chauds</h2>
								</div>
								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_bottom">
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://m.miracleart.cn/fr/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://m.miracleart.cn/fr/ai/undress-ai-tool" title="Undress AI Tool" class="phpmain_tab2_mids_title">
													<h3>Undress AI Tool</h3>
												</a>
												<p>Images de déshabillage gratuites</p>
											</div>
										</div>
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://m.miracleart.cn/fr/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://m.miracleart.cn/fr/ai/undresserai-undress" title="Undresser.AI Undress" class="phpmain_tab2_mids_title">
													<h3>Undresser.AI Undress</h3>
												</a>
												<p>Application basée sur l'IA pour créer des photos de nu réalistes</p>
											</div>
										</div>
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://m.miracleart.cn/fr/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://m.miracleart.cn/fr/ai/ai-clothes-remover" title="AI Clothes Remover" class="phpmain_tab2_mids_title">
													<h3>AI Clothes Remover</h3>
												</a>
												<p>Outil d'IA en ligne pour supprimer les vêtements des photos.</p>
											</div>
										</div>
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://m.miracleart.cn/fr/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://m.miracleart.cn/fr/ai/clothoffio" title="Clothoff.io" class="phpmain_tab2_mids_title">
													<h3>Clothoff.io</h3>
												</a>
												<p>Dissolvant de vêtements AI</p>
											</div>
										</div>
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://m.miracleart.cn/fr/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://m.miracleart.cn/fr/ai/video-swap" title="Video Face Swap" class="phpmain_tab2_mids_title">
													<h3>Video Face Swap</h3>
												</a>
												<p>échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!</p>
											</div>
										</div>
																</div>
								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
									<a href="http://m.miracleart.cn/fr/ai">Afficher plus</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>Article chaud</h2>
							</div>
							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://m.miracleart.cn/fr/faq/1796832397.html" title="Guide de construction de Grass Wonder | Uma musume joli derby" class="phpgenera_Details_mainR4_bottom_title">Guide de construction de Grass Wonder | Uma musume joli derby</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>1 Il y a quelques mois</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://m.miracleart.cn/fr/faq/1796833110.html" title="<??>: 99 nuits dans la forêt - tous les badges et comment les déverrouiller" class="phpgenera_Details_mainR4_bottom_title"><??>: 99 nuits dans la forêt - tous les badges et comment les déverrouiller</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>1 Il y a quelques mois</span>
										<span>By DDD</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://m.miracleart.cn/fr/faq/1796836699.html" title="Guide de température de Rimworld Odyssey pour les navires et Gravtech" class="phpgenera_Details_mainR4_bottom_title">Guide de température de Rimworld Odyssey pour les navires et Gravtech</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>3 Il y a quelques semaines</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://m.miracleart.cn/fr/faq/1796834553.html" title="Guide de construction Mejiro Ryan | Uma musume joli derby" class="phpgenera_Details_mainR4_bottom_title">Guide de construction Mejiro Ryan | Uma musume joli derby</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>4 Il y a quelques semaines</span>
										<span>By Jack chen</span>
									</div>
								</div>
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://m.miracleart.cn/fr/faq/1796836084.html" title="Rimworld Odyssey Comment pêcher" class="phpgenera_Details_mainR4_bottom_title">Rimworld Odyssey Comment pêcher</a>
									<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms_info">
										<span>3 Il y a quelques semaines</span>
										<span>By Jack chen</span>
									</div>
								</div>
														</div>
							<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
								<a href="http://m.miracleart.cn/fr/article.html">Afficher plus</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>Outils chauds</h2>
								</div>
								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_bottom">
																		<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://m.miracleart.cn/fr/toolset/development-tools/92" title="Bloc-notes++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="Bloc-notes++7.3.1" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://m.miracleart.cn/fr/toolset/development-tools/92" title="Bloc-notes++7.3.1" class="phpmain_tab2_mids_title">
													<h3>Bloc-notes++7.3.1</h3>
												</a>
												<p>éditeur de code facile à utiliser et gratuit</p>
											</div>
										</div>
																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://m.miracleart.cn/fr/toolset/development-tools/93" title="SublimeText3 version chinoise" 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 version chinoise" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://m.miracleart.cn/fr/toolset/development-tools/93" title="SublimeText3 version chinoise" class="phpmain_tab2_mids_title">
													<h3>SublimeText3 version chinoise</h3>
												</a>
												<p>Version chinoise, très simple à utiliser</p>
											</div>
										</div>
																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://m.miracleart.cn/fr/toolset/development-tools/121" title="Envoyer Studio 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="Envoyer Studio 13.0.1" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://m.miracleart.cn/fr/toolset/development-tools/121" title="Envoyer Studio 13.0.1" class="phpmain_tab2_mids_title">
													<h3>Envoyer Studio 13.0.1</h3>
												</a>
												<p>Puissant environnement de développement intégré PHP</p>
											</div>
										</div>
																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://m.miracleart.cn/fr/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://m.miracleart.cn/fr/toolset/development-tools/469" title="Dreamweaver CS6" class="phpmain_tab2_mids_title">
													<h3>Dreamweaver CS6</h3>
												</a>
												<p>Outils de développement Web visuel</p>
											</div>
										</div>
																			<div   id="377j5v51b"   class="phpmain_tab2_mids_top">
											<a href="http://m.miracleart.cn/fr/toolset/development-tools/500" title="SublimeText3 version 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 version Mac" />
											</a>
											<div   id="377j5v51b"   class="phpmain_tab2_mids_info">
												<a href="http://m.miracleart.cn/fr/toolset/development-tools/500" title="SublimeText3 version Mac" class="phpmain_tab2_mids_title">
													<h3>SublimeText3 version Mac</h3>
												</a>
												<p>Logiciel d'édition de code au niveau de Dieu (SublimeText3)</p>
											</div>
										</div>
																	</div>
								<div   id="377j5v51b"   class="phpgenera_Details_mainR3_more">
									<a href="http://m.miracleart.cn/fr/ai">Afficher plus</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>Sujets chauds</h2>
							</div>
							<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottom">
															<div   id="377j5v51b"   class="phpgenera_Details_mainR4_bottoms">
									<a href="http://m.miracleart.cn/fr/faq/laravel-tutori" title="Tutoriel Laravel" class="phpgenera_Details_mainR4_bottom_title">Tutoriel 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://m.miracleart.cn/fr/faq/php-tutorial" title="Tutoriel PHP" class="phpgenera_Details_mainR4_bottom_title">Tutoriel 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://m.miracleart.cn/fr/faq/zt">Afficher plus</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>Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!</p>
        </div>
        <div   id="377j5v51b"   class="footermid">
            <a href="http://m.miracleart.cn/fr/about/us.html">à propos de nous</a>
            <a href="http://m.miracleart.cn/fr/about/disclaimer.html">Clause de non-responsabilité</a>
            <a href="http://m.miracleart.cn/fr/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://m.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="knlqs" class="pl_css_ganrao" style="display: none;"><dl id="knlqs"></dl><form id="knlqs"><abbr id="knlqs"><dd id="knlqs"></dd></abbr></form><var id="knlqs"><form id="knlqs"><optgroup id="knlqs"></optgroup></form></var><li id="knlqs"><legend id="knlqs"></legend></li><samp id="knlqs"><tbody id="knlqs"></tbody></samp><noframes id="knlqs"></noframes><rt id="knlqs"></rt><address id="knlqs"></address><td id="knlqs"></td><tt id="knlqs"></tt><strong id="knlqs"><dfn id="knlqs"><label id="knlqs"></label></dfn></strong><ins id="knlqs"></ins><dd id="knlqs"></dd><form id="knlqs"><p id="knlqs"></p></form><code id="knlqs"></code><tr id="knlqs"><dfn id="knlqs"><pre id="knlqs"></pre></dfn></tr><rt id="knlqs"></rt><sub id="knlqs"><optgroup id="knlqs"><td id="knlqs"><style id="knlqs"></style></td></optgroup></sub><em id="knlqs"></em><menuitem id="knlqs"></menuitem><optgroup id="knlqs"></optgroup><s id="knlqs"><b id="knlqs"></b></s><acronym id="knlqs"><noframes id="knlqs"><rt id="knlqs"><tr id="knlqs"></tr></rt></noframes></acronym><button id="knlqs"></button><nobr id="knlqs"></nobr><form id="knlqs"><p id="knlqs"></p></form><strong id="knlqs"></strong><s id="knlqs"><kbd id="knlqs"></kbd></s><dl id="knlqs"><em id="knlqs"><pre id="knlqs"><em id="knlqs"></em></pre></em></dl><s id="knlqs"></s><nobr id="knlqs"></nobr><s id="knlqs"><samp id="knlqs"><i id="knlqs"></i></samp></s><center id="knlqs"><optgroup id="knlqs"><xmp id="knlqs"><bdo id="knlqs"></bdo></xmp></optgroup></center><tr id="knlqs"></tr><samp id="knlqs"></samp><optgroup id="knlqs"><td id="knlqs"><form id="knlqs"></form></td></optgroup><s id="knlqs"><b id="knlqs"><i id="knlqs"></i></b></s><listing id="knlqs"></listing><dfn id="knlqs"></dfn><li id="knlqs"></li><font id="knlqs"></font><style id="knlqs"></style><font id="knlqs"></font><acronym id="knlqs"></acronym><th id="knlqs"><noframes id="knlqs"></noframes></th><wbr id="knlqs"></wbr><menu id="knlqs"></menu><ul id="knlqs"></ul><var id="knlqs"><center id="knlqs"><acronym id="knlqs"></acronym></center></var><pre id="knlqs"></pre><dd id="knlqs"></dd><form id="knlqs"></form><del id="knlqs"><fieldset id="knlqs"><center id="knlqs"></center></fieldset></del><abbr id="knlqs"></abbr><ruby id="knlqs"></ruby><form id="knlqs"></form><b id="knlqs"></b><small id="knlqs"><tfoot id="knlqs"><dfn id="knlqs"></dfn></tfoot></small><dl id="knlqs"></dl><form id="knlqs"></form><font id="knlqs"></font><s id="knlqs"><kbd id="knlqs"><p id="knlqs"></p></kbd></s><pre id="knlqs"></pre><tbody id="knlqs"></tbody><center id="knlqs"><tr id="knlqs"><strike id="knlqs"></strike></tr></center><tr id="knlqs"></tr><code id="knlqs"></code><bdo id="knlqs"><mark id="knlqs"><th id="knlqs"><center id="knlqs"></center></th></mark></bdo><menu id="knlqs"><dd id="knlqs"><strong id="knlqs"><dd id="knlqs"></dd></strong></dd></menu><kbd id="knlqs"></kbd><dl id="knlqs"></dl><fieldset id="knlqs"><output id="knlqs"><fieldset id="knlqs"><option id="knlqs"></option></fieldset></output></fieldset><fieldset id="knlqs"><center id="knlqs"><label id="knlqs"></label></center></fieldset><code id="knlqs"></code><kbd id="knlqs"></kbd><pre id="knlqs"><ol id="knlqs"><font id="knlqs"></font></ol></pre><object id="knlqs"></object><optgroup id="knlqs"></optgroup><td id="knlqs"></td><strong id="knlqs"></strong><small id="knlqs"></small><s id="knlqs"></s><strong id="knlqs"></strong><small id="knlqs"><progress id="knlqs"></progress></small><ol id="knlqs"></ol><acronym id="knlqs"><sup id="knlqs"></sup></acronym><rt id="knlqs"><delect id="knlqs"><rt id="knlqs"></rt></delect></rt><bdo id="knlqs"></bdo><optgroup id="knlqs"></optgroup><nav id="knlqs"><samp id="knlqs"></samp></nav><strong id="knlqs"><dfn id="knlqs"><label id="knlqs"></label></dfn></strong><xmp id="knlqs"><label id="knlqs"></label></xmp><ruby id="knlqs"></ruby><s id="knlqs"><kbd id="knlqs"><p id="knlqs"></p></kbd></s><acronym id="knlqs"></acronym><rt id="knlqs"></rt><menu id="knlqs"></menu><em id="knlqs"></em><li id="knlqs"><legend id="knlqs"></legend></li><strong id="knlqs"></strong><rt id="knlqs"><small id="knlqs"></small></rt><ruby id="knlqs"></ruby><rp id="knlqs"><label id="knlqs"></label></rp><samp id="knlqs"></samp><code id="knlqs"></code><noframes id="knlqs"></noframes><table id="knlqs"></table><strike id="knlqs"></strike><abbr id="knlqs"><dd id="knlqs"></dd></abbr><kbd id="knlqs"><strong id="knlqs"><center id="knlqs"></center></strong></kbd><sup id="knlqs"><table id="knlqs"></table></sup><b id="knlqs"></b><code id="knlqs"><sup id="knlqs"><dl id="knlqs"></dl></sup></code><acronym id="knlqs"></acronym><strike id="knlqs"></strike><ul id="knlqs"></ul><source id="knlqs"><abbr id="knlqs"><fieldset id="knlqs"></fieldset></abbr></source><optgroup id="knlqs"></optgroup><strike id="knlqs"></strike><video id="knlqs"></video><dfn id="knlqs"></dfn><legend id="knlqs"></legend><var id="knlqs"></var><kbd id="knlqs"><strong id="knlqs"><rp id="knlqs"></rp></strong></kbd><b id="knlqs"><pre id="knlqs"><samp id="knlqs"><strong id="knlqs"></strong></samp></pre></b><rp id="knlqs"></rp><legend id="knlqs"></legend><center id="knlqs"><tbody id="knlqs"><big id="knlqs"></big></tbody></center><tfoot id="knlqs"></tfoot><blockquote id="knlqs"><code id="knlqs"><ins id="knlqs"></ins></code></blockquote><dfn id="knlqs"><span id="knlqs"></span></dfn><menu id="knlqs"><dd id="knlqs"><legend id="knlqs"></legend></dd></menu><style id="knlqs"></style><sub id="knlqs"></sub><rt id="knlqs"><delect id="knlqs"><strike id="knlqs"></strike></delect></rt><em id="knlqs"><pre id="knlqs"></pre></em><optgroup id="knlqs"><blockquote id="knlqs"><style id="knlqs"><delect id="knlqs"></delect></style></blockquote></optgroup><tbody id="knlqs"><optgroup id="knlqs"></optgroup></tbody><fieldset id="knlqs"></fieldset><dl id="knlqs"></dl><button id="knlqs"></button><tfoot id="knlqs"><pre id="knlqs"><ol id="knlqs"><option id="knlqs"></option></ol></pre></tfoot><button id="knlqs"><small id="knlqs"><strong id="knlqs"></strong></small></button><fieldset id="knlqs"><track id="knlqs"><tfoot id="knlqs"><option id="knlqs"></option></tfoot></track></fieldset><pre id="knlqs"><tfoot id="knlqs"><pre id="knlqs"><rt id="knlqs"></rt></pre></tfoot></pre><legend id="knlqs"></legend><abbr id="knlqs"></abbr><small id="knlqs"></small><ul id="knlqs"><code id="knlqs"><video id="knlqs"></video></code></ul></div>

</html>