亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP PC端支付寶掃碼支付的介紹

2020-03-22 17:34:23
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于PHP PC端支付寶掃碼支付的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

前面的文章已經描述過在螞蟻金服開放平臺創建應用簽約等流程,詳見:PHP App端支付寶支付,這里就不多說了,剩下的分兩步,第一步是支付前的準備工作,也就是整合支付類文件,我已經整合好可以直接用,代碼開始:

支付類文件總共三個:

 ?phphtml' target='_blank'>class alipay_pc{ * 簽名字符串 * @param $prestr 需要簽名的字符串 * @param $key 私鑰 * return 簽名結果 function md5Sign($prestr, $key) { $prestr = $prestr . $key; return md5($prestr); * 驗證簽名 * @param $prestr 需要簽名的字符串 * @param $sign 簽名結果 * @param $key 私鑰 * return 簽名結果 function md5Verify($prestr, $sign, $key) { $prestr = $prestr . $key; $mysgin = md5($prestr); if($mysgin == $sign) { return true; else { return false; * 把數組所有元素,按照“參數=參數值”的模式用“ ”字符拼接成字符串 * @param $para 需要拼接的數組 * return 拼接完成以后的字符串 function createLinkstring($para) { $arg =  while (list ($key, $val) = each ($para)) { $arg.=$key. = .$val.  //去掉最后一個 字符 $arg = substr($arg,0,count($arg)-2); //如果存在轉義字符,那么去掉轉義 if(get_magic_quotes_gpc()){$arg = stripslashes($arg);} return $arg; * 把數組所有元素,按照“參數=參數值”的模式用“ ”字符拼接成字符串,并對字符串做urlencode編碼 * @param $para 需要拼接的數組 * return 拼接完成以后的字符串 function createLinkstringUrlencode($para) { $arg =  while (list ($key, $val) = each ($para)) { $arg.=$key. = .urlencode($val).  //去掉最后一個 字符 $arg = substr($arg,0,count($arg)-2); //如果存在轉義字符,那么去掉轉義 if(get_magic_quotes_gpc()){$arg = stripslashes($arg);} return $arg; * 除去數組中的空值和簽名參數 * @param $para 簽名參數組 * return 去掉空值與簽名參數后的新簽名參數組 function paraFilter($para) { $para_filter = array(); while (list ($key, $val) = each ($para)) { if($key == sign || $key == sign_type || $val == )continue; else $para_filter[$key] = $para[$key]; return $para_filter; * 對數組排序 * @param $para 排序前的數組 * return 排序后的數組 function argSort($para) { ksort($para); reset($para); return $para; * 寫日志,方便測試(看網站需求,也可以改成把記錄存入數據庫) * 注意:服務器需要開通fopen配置 * @param $word 要寫入日志里的文本內容 默認值:空值 function logResult($word= ) { $fp = fopen( log.txt , a  flock($fp, LOCK_EX) ; fwrite($fp, 執行日期: .strftime( %Y%m%d%H%M%S ,time()). /n .$word. /n  flock($fp, LOCK_UN); fclose($fp); * 遠程獲取數據,POST模式 * 注意: * 1.使用Crul需要修改服務器中php.ini文件的設置,找到php_curl.dll去掉前面的 就行了 * 2.文件夾中cacert.pem是SSL證書請保證其路徑有效,目前默認路徑是:getcwd(). //cacert.pem  * @param $url 指定URL完整路徑地址 * @param $cacert_url 指定當前工作目錄絕對路徑 * @param $para 請求的數據 * @param $input_charset 編碼格式。默認值:空值 * return 遠程輸出的數據 function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = ) { if (trim($input_charset) != ) { $url = $url. _input_charset= .$input_charset; $curl = curl_init($url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL證書認證 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//嚴格認證 curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//證書地址 curl_setopt($curl, CURLOPT_HEADER, 0 ); // 過濾HTTP頭 curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 顯示輸出結果 curl_setopt($curl,CURLOPT_POST,true); // post傳輸數據 curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post傳輸數據 $responseText = curl_exec($curl); //var_dump( curl_error($curl) );//如果執行curl過程中出現異常,可打開此開關,以便查看異常內容 curl_close($curl); return $responseText; * 遠程獲取數據,GET模式 * 注意: * 1.使用Crul需要修改服務器中php.ini文件的設置,找到php_curl.dll去掉前面的 就行了 * 2.文件夾中cacert.pem是SSL證書請保證其路徑有效,目前默認路徑是:getcwd(). //cacert.pem  * @param $url 指定URL完整路徑地址 * @param $cacert_url 指定當前工作目錄絕對路徑 * return 遠程輸出的數據 function getHttpResponseGET($url,$cacert_url) { $curl = curl_init($url); curl_setopt($curl, CURLOPT_HEADER, 0 ); // 過濾HTTP頭 curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 顯示輸出結果 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL證書認證 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//嚴格認證 curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//證書地址 $responseText = curl_exec($curl); //var_dump( curl_error($curl) );//如果執行curl過程中出現異常,可打開此開關,以便查看異常內容 curl_close($curl); return $responseText; * 實現多種字符編碼方式 * @param $input 需要編碼的字符串 * @param $_output_charset 輸出的編碼格式 * @param $_input_charset 輸入的編碼格式 * return 編碼后的字符串 function charsetEncode($input,$_output_charset ,$_input_charset) { $output =  if(!isset($_output_charset) )$_output_charset = $_input_charset; if($_input_charset == $_output_charset || $input ==null ) { $output = $input; } elseif (function_exists( mb_convert_encoding )) { $output = mb_convert_encoding($input,$_output_charset,$_input_charset); } elseif(function_exists( iconv )) { $output = iconv($_input_charset,$_output_charset,$input); } else die( sorry, you have no libs support for charset change.  return $output; * 實現多種字符解碼方式 * @param $input 需要解碼的字符串 * @param $_output_charset 輸出的解碼格式 * @param $_input_charset 輸入的解碼格式 * return 解碼后的字符串 function charsetDecode($input,$_input_charset ,$_output_charset) { $output =  if(!isset($_input_charset) )$_input_charset = $_input_charset ; if($_input_charset == $_output_charset || $input ==null ) { $output = $input; } elseif (function_exists( mb_convert_encoding )) { $output = mb_convert_encoding($input,$_output_charset,$_input_charset); } elseif(function_exists( iconv )) { $output = iconv($_input_charset,$_output_charset,$input); } else die( sorry, you have no libs support for charset changes.  return $output;}
 ?php * 類名:AlipaySubmit * 功能:支付寶各接口請求提交類 * 詳細:構造支付寶各接口表單HTML文本,獲取遠程HTTP數據vendor( Alipaypc.alipay_pc class AlipaySubmit { var $alipay_config; *支付寶網關地址(新) var $alipay_gateway_new = http://mapi.alipay.com/gateway.do?  function __construct($alipay_config){ $this- alipay_config = $alipay_config; function AlipaySubmit($alipay_config) { $this- __construct($alipay_config); * 生成簽名結果 * @param $para_sort 已排序要簽名的數組 * return 簽名結果字符串 function buildRequestMysign($para_sort) { $alipaypc = new /Alipaypc(); //把數組所有元素,按照“參數=參數值”的模式用“ ”字符拼接成字符串 $prestr = $alipaypc- createLinkstring($para_sort); $mysign =  switch (strtoupper(trim($this- alipay_config[ sign_type ]))) { case MD5 : $mysign = $alipaypc- md5Sign($prestr, $this- alipay_config[ key  break; default : $mysign =  return $mysign; * 生成要請求給支付寶的參數數組 * @param $para_temp 請求前的參數數組 * @return 要請求的參數數組 function buildRequestPara($para_temp) { $alipaypc = new /Alipaypc(); //除去待簽名參數數組中的空值和簽名參數 $para_filter = $alipaypc- paraFilter($para_temp); //對待簽名參數數組排序 $para_sort = $alipaypc- argSort($para_filter); //生成簽名結果 $mysign = $this- buildRequestMysign($para_sort); //簽名結果與簽名方式加入請求提交參數組中 $para_sort[ sign ] = $mysign; $para_sort[ sign_type ] = strtoupper(trim($this- alipay_config[ sign_type ])); return $para_sort; * 生成要請求給支付寶的參數數組 * @param $para_temp 請求前的參數數組 * @return 要請求的參數數組字符串 function buildRequestParaToString($para_temp) { $alipaypc = new /Alipaypc(); //待請求參數數組 $para = $this- buildRequestPara($para_temp); //把參數組中所有元素,按照“參數=參數值”的模式用“ ”字符拼接成字符串,并對字符串做urlencode編碼 $request_data = $alipaypc- createLinkstringUrlencode($para); return $request_data; * 建立請求,以表單HTML形式構造(默認) * @param $para_temp 請求參數數組 * @param $method 提交方式。兩個值可選:post、get * @param $button_name 確認按鈕顯示文字 * @return 提交表單HTML文本 function buildRequestForm($para_temp, $method, $button_name) { //待請求參數數組 $para = $this- buildRequestPara($para_temp); $sHtml = form id= alipaysubmit name= alipaysubmit action= .$this- alipay_gateway_new. _input_charset= .trim(strtolower($this- alipay_config[ input_charset ])). method= .$method.  while (list ($key, $val) = each ($para)) { $sHtml.= input type= hidden name= .$key. value= .$val. /  //submit按鈕控件請不要含有name屬性 $sHtml = $sHtml. input type= submit value= .$button_name. >
 ?php * 類名:AlipayNotify * 功能:支付寶通知處理類 * 詳細:處理支付寶各接口通知返回 * 版本:3.2 *************************注意************************* * 調試通知返回時,可查看或改寫log日志的寫入TXT里的數據,來檢查通知返回是否正常vendor( Alipaypc.Alipaypc class AlipayNotify { * HTTPS形式消息驗證地址 var $https_verify_url = http://mapi.alipay.com/gateway.do?service=notify_verify  * HTTP形式消息驗證地址 var $http_verify_url = http://notify.alipay.com/trade/notify_query.do?  var $alipay_config; function __construct($alipay_config){ $this- alipay_config = $alipay_config; function AlipayNotify($alipay_config) { $this- __construct($alipay_config); * 針對notify_url驗證消息是否是支付寶發出的合法消息 * @return 驗證結果 function verifyNotify(){ $alipaypc = new /Alipaypc(); if(empty($_POST)) {//判斷POST來的數組是否為空 return false; else { //生成簽名結果 $isSign = $this- getSignVeryfy($_POST, $_POST[ sign ]); //獲取支付寶遠程服務器ATN結果(驗證是否是支付寶發來的消息) $responseTxt = false  if (! empty($_POST[ notify_id ])) {$responseTxt = $this- getResponse($_POST[ notify_id ]);} //寫日志記錄 if ($isSign) { $isSignStr = true  else { $isSignStr = false  $log_text = responseTxt= .$responseTxt. /n notify_url_log:isSign= .$isSignStr. ,  $log_text = $log_text.$alipaypc- createLinkString($_POST); $alipaypc- logResult($log_text); //驗證 //$responsetTxt的結果不是true,與服務器設置問題、合作身份者ID、notify_id一分鐘失效有關 //isSign的結果不是true,與安全校驗碼、請求時的參數格式(如:帶自定義參數等)、編碼格式有關 if (preg_match( /true$/i ,$responseTxt) $isSign) { return true; } else { return false; * 針對return_url驗證消息是否是支付寶發出的合法消息 * @return 驗證結果 function verifyReturn(){ $alipaypc = new /Alipaypc(); if(empty($_GET)) {//判斷POST來的數組是否為空 return false; else { //生成簽名結果 $isSign = $this- getSignVeryfy($_GET, $_GET[ sign ]); //獲取支付寶遠程服務器ATN結果(驗證是否是支付寶發來的消息) $responseTxt = false  if (! empty($_GET[ notify_id ])) {$responseTxt = $this- getResponse($_GET[ notify_id ]);} //寫日志記錄 if ($isSign) { $isSignStr = true  else { $isSignStr = false  $log_text = responseTxt= .$responseTxt. /n return_url_log:isSign= .$isSignStr. ,  $log_text = $log_text.$alipaypc- createLinkString($_GET); $alipaypc- logResult($log_text); //驗證 //$responsetTxt的結果不是true,與服務器設置問題、合作身份者ID、notify_id一分鐘失效有關 //isSign的結果不是true,與安全校驗碼、請求時的參數格式(如:帶自定義參數等)、編碼格式有關 if (preg_match( /true$/i ,$responseTxt) $isSign) { return true; } else { return false; * 獲取返回時的簽名驗證結果 * @param $para_temp 通知返回來的參數數組 * @param $sign 返回的簽名結果 * @return 簽名驗證結果 function getSignVeryfy($para_temp, $sign) { $alipaypc = new /Alipaypc(); //除去待簽名參數數組中的空值和簽名參數 $para_filter = $alipaypc- paraFilter($para_temp); //對待簽名參數數組排序 $para_sort = $alipaypc- argSort($para_filter); //把數組所有元素,按照“參數=參數值”的模式用“ ”字符拼接成字符串 $prestr = $alipaypc- createLinkstring($para_sort); $isSgin = false; switch (strtoupper(trim($this- alipay_config[ sign_type ]))) { case MD5 : $isSgin = $alipaypc- md5Verify($prestr, $sign, $this- alipay_config[ key  break; default : $isSgin = false; return $isSgin; * 獲取遠程服務器ATN結果,驗證返回URL * @param $notify_id 通知校驗ID * @return 服務器ATN結果 * 驗證結果集: * invalid命令參數不對 出現這個錯誤,請檢測返回處理中partner和key是否為空  * true 返回正確信息 * false 請檢查防火墻或者是服務器阻止端口問題以及驗證時間是否超過一分鐘 function getResponse($notify_id) { $alipaypc = new /Alipaypc(); $transport = strtolower(trim($this- alipay_config[ transport ])); $partner = trim($this- alipay_config[ partner  $veryfy_url =  if($transport == https ) { $veryfy_url = $this- https_verify_url; else { $veryfy_url = $this- http_verify_url; $veryfy_url = $veryfy_url. partner= . $partner . notify_id= . $notify_id; $responseTxt = $alipaypc- getHttpResponseGET($veryfy_url, $this- alipay_config[ cacert  return $responseTxt;}

將上述的三個文件整合好后放到第三方類庫,在控制器中引入并即可:

 ?phpnamespace app/huihui/controller/one;use app/huihui/controller/A_Controller;use app/huihui/model/MeetingOrder;use think/Controller;use think/Request; * 支付寶PC端購票掃碼支付vendor( Alipaypc.alipay_notify vendor( Alipaypc.alipay_submit vendor( Alipaypc.alipay_pc class Alipaypc extends A_Controller public $alipay_config = array( partner = , //收款支付寶賬號,以2088開頭由16位純數字組成的字符串,一般情況下收款賬號就是簽約賬號 seller_id = , // MD5密鑰,安全檢驗碼,由數字和字母組成的32位字符串,查看地址:http://b.alipay.com/order/pidAndKey.htm key = , // 服務器異步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問 notify_url = , // 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數,必須外網可以正常訪問 return_url = , //字符編碼格式 目前支持 gbk 或 utf-8 input_charset = utf-8 , //簽名方式 不需修改 sign_type = MD5 , //ca證書路徑地址,用于curl中ssl校驗,請保證cacert.pem文件在當前文件夾目錄中 cacert = /cacert.pem , //訪問模式,根據自己的服務器是否支持ssl訪問,若支持請選擇https;若不支持請選擇http transport = http , // 支付類型 ,無需修改 payment_type = 1 , // 產品類型,無需修改 service = create_direct_pay_by_user , //異步回調 public function notifypc() //計算得出通知驗證結果 $alipayNotify = new /AlipayNotify($this- alipay_config); $verify_result = $alipayNotify- verifyNotify(); if($verify_result) { //驗證成功 //獲取支付寶的通知返回參數,可參考技術文檔中服務器異步通知參數列表 //商戶訂單號 $out_trade_no = $_POST[ out_trade_no  $order = new Order(); //實例化訂單 $ret = $order- getOrderN2($out_trade_no); //查詢訂單信息 if($_POST[ trade_status ] == TRADE_FINISHED ) { //判斷該筆訂單是否在商戶網站中已經做過處理 //如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程序 //請務必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id為一致的 //如果有做過處理,不執行商戶的業務程序 //注意: //退款日期超過可退款期限后(如三個月可退款),支付寶系統發送該交易狀態通知 //調試用,寫文本函數記錄程序運行情況是否正常 //logResult( 這里寫入想要調試的代碼變量值,或其他運行的結果記錄  $total_amount=$ret[ money  $total_fee = $_POST[ total_fee  if($total_amount==$total_fee) //你的業務邏輯操作 }else{//交易異常 logResult($_POST); }else if ($_POST[ trade_status ] == TRADE_SUCCESS ) { //判斷該筆訂單是否在商戶網站中已經做過處理 //如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程序 //請務必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id為一致的 //如果有做過處理,不執行商戶的業務程序 //注意: //付款完成后,支付寶系統發送該交易狀態通知 //調試用,寫文本函數記錄程序運行情況是否正常 //logResult( 這里寫入想要調試的代碼變量值,或其他運行的結果記錄  $total_amount=$ret[ money  $total_fee = $_POST[ total_fee  if($total_amount==$total_fee) //你的業務邏輯操作 }else {//交易異常 logResult($_POST); echo success //請不要修改或刪除 }else { //驗證失敗 echo fail  //調試用,寫文本函數記錄程序運行情況是否正常 //logResult( 這里寫入想要調試的代碼變量值,或其他運行的結果記錄  //同步回調 public function returnpc() //計算得出通知驗證結果 $alipayNotify = new /AlipayNotify($this- alipay_config); $verify_result = $alipayNotify- verifyReturn(); if($verify_result) {//驗證成功 //獲取支付寶的通知返回參數,可參考技術文檔中頁面跳轉同步通知參數列表 //商戶訂單號 $out_trade_no = $_GET[ out_trade_no  $order = new Order(); //實例化訂單 $ret = $order- getOrderN2($out_trade_no); //查詢訂單信息 if($_GET[ trade_status ] == TRADE_FINISHED || $_GET[ trade_status ] == TRADE_SUCCESS ) { //判斷該筆訂單是否在商戶網站中已經做過處理 //如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,并執行商戶的業務程序 //如果有做過處理,不執行商戶的業務程序 $total_amount=$ret[ money  $total_fee = $_GET[ total_fee  if(floatval($total_amount)==floatval($total_fee)) { //交易成功跳轉 echo script window.location.href= /script  else {//交易異常跳轉 echo script window.location.href=  }else { //交易失敗跳轉 echo script window.location.href=  }else { //驗證失敗 //如要調試,請看alipay_notify.php頁面的verifyReturn函數 echo script window.location.href= /script  //調用統一下單接口生成預支付訂單并把數據返回給APP public function alipaypc(Request $request) $param = $request- param(); //接收值 $out_trade_no = $param[ orderCode //訂單號 $money = MeetingOrder::where( orderCode , $out_trade_no)- value( money  //商戶訂單號,商戶網站訂單系統中唯一訂單號,必填 $out_trade_no = $out_trade_no; //訂單名稱,必填 $subject = //自定義 //付款金額,必填 $total_fee = $money; //收銀臺頁面上,商品展示的超鏈接,必填 $show_url = //自定義 //商品描述,可空 $body = //自定義 //構造要請求的參數數組,無需改動 $parameter = array( service = $this- alipay_config[ service ], partner = $this- alipay_config[ partner ], seller_id = $this- alipay_config[ seller_id ], payment_type = $this- alipay_config[ payment_type ], notify_url = $this- alipay_config[ notify_url ], return_url = $this- alipay_config[ return_url ], _input_charset = trim(strtolower($this- alipay_config[ input_charset ])), out_trade_no = $out_trade_no, subject = $subject, total_fee = $total_fee, show_url = $show_url, body = $body, //其他業務參數根據在線開發文檔,添加參數.文檔地址:http://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.2Z6TSk treeId=60 articleId=103693 docType=1 //如 參數名 = 參數值 注:上一個參數末尾需要“,”逗號。 //建立請求 $alipaySubmit = new /AlipaySubmit($this- alipay_config); $html_text = $alipaySubmit- buildRequestForm($parameter, get , 確認  echo $html_text;}

到這里就結束了,在控制器中的方法內是需要有一些替換成你自己的東西,比如查詢訂單,支付成功后的業務邏輯等,仔細排查一遍代碼將相應的地方改為自己的,如果不出意外掃碼支付已經成功了,趕緊去試試是否可以調起掃碼支付功能啦!!!

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

PHP APP端微信支付的方法

以上就是PHP PC端支付寶掃碼支付的介紹的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美电影在线观看完整版| 国产精品国模在线| 2025国产精品视频| 久久成人免费视频| 欧美黑人又粗大| 美女扒开尿口让男人操亚洲视频网站| 国产精品久久久久久久av电影| 亚洲sss综合天堂久久| 2019日本中文字幕| 两个人的视频www国产精品| 国产精品99一区| 亚洲永久在线观看| 日韩成人av网| 亚洲性无码av在线| 亚洲人成在线免费观看| www.欧美精品一二三区| 日韩大胆人体377p| 777777777亚洲妇女| 亚洲国产精品久久91精品| 国产一区二区三区高清在线观看| 5566成人精品视频免费| 欧美激情精品久久久久| 精品日韩中文字幕| 国产精品入口免费视频一| 欧美综合一区第一页| 中文字幕欧美日韩va免费视频| 欧美成人午夜激情视频| 日韩av在线免费观看一区| 最好看的2019的中文字幕视频| 最近2019年好看中文字幕视频| 亚洲电影在线观看| 97在线看福利| 欧美激情精品久久久久久| 不卡中文字幕av| 亚洲www永久成人夜色| 国产精品黄色av| 97欧美精品一区二区三区| 欧美激情中文字幕乱码免费| 欧美性猛交丰臀xxxxx网站| 欧美国产一区二区三区| 欧美成人sm免费视频| 久久影院在线观看| 2018中文字幕一区二区三区| 国产成人精品一区二区| 亚洲精品在线不卡| 色偷偷av一区二区三区乱| 欧美视频在线视频| www.美女亚洲精品| 日产日韩在线亚洲欧美| 国内精品国产三级国产在线专| 中文字幕在线成人| 欧美巨乳在线观看| 国产男人精品视频| 久久99视频免费| 精品夜色国产国偷在线| 午夜免费在线观看精品视频| 不卡毛片在线看| 成人精品久久一区二区三区| 久久国产视频网站| 国产在线久久久| 97国产成人精品视频| 日韩在线视频观看正片免费网站| 伊人亚洲福利一区二区三区| 亚洲午夜未删减在线观看| 91美女福利视频高清| 欧美日韩免费网站| 久久久久久久久久久亚洲| 韩国精品美女www爽爽爽视频| 欧美激情一区二区三区成人| 欧美在线视频观看免费网站| 欧美久久精品午夜青青大伊人| 在线精品视频视频中文字幕| 亚洲精品国产免费| 亚洲激情在线观看视频免费| 国产视频精品久久久| 国产一区二区三区高清在线观看| 色播久久人人爽人人爽人人片视av| 2021久久精品国产99国产精品| 欧美性精品220| 久久亚洲综合国产精品99麻豆精品福利| 亚洲老司机av| 日韩av电影手机在线观看| 日韩欧美成人精品| 色综合视频一区中文字幕| 91久久综合亚洲鲁鲁五月天| 久久久999国产精品| 国产深夜精品福利| 国产精品久久久久久久久男| 亚洲精品黄网在线观看| 国产精品国产福利国产秒拍| 2018中文字幕一区二区三区| 亚洲国产精品成人va在线观看| 一区二区成人av| 亚洲成人网在线| 国产精品久久久久久久av电影| 伦理中文字幕亚洲| 欧美日韩中文在线| 尤物tv国产一区| 欧美中文在线视频| 久久久亚洲成人| 欧美与黑人午夜性猛交久久久| 日韩成人小视频| 97视频在线播放| 欧美野外wwwxxx| 色综合久久88| 日本国产一区二区三区| 久久亚洲春色中文字幕| 国产精品一区电影| 亚洲自拍偷拍一区| 青青在线视频一区二区三区| 一区二区欧美亚洲| 久久99国产精品自在自在app| 精品亚洲精品福利线在观看| 欧美精品制服第一页| www.久久久久久.com| 九九综合九九综合| 日韩高清电影免费观看完整| 成人精品在线观看| 超薄丝袜一区二区| 秋霞成人午夜鲁丝一区二区三区| 亚洲激情久久久| 日韩欧美国产一区二区| 国外视频精品毛片| 91精品在线观看视频| 久久久久成人网| 国产精品久久久久久亚洲影视| 热门国产精品亚洲第一区在线| 久久伊人91精品综合网站| 国产精品三级在线| 日韩av网站导航| 国产免费成人av| 成人免费视频a| 欧美亚洲日本网站| 91国产美女视频| 亚洲色图17p| 美日韩精品免费观看视频| 5566日本婷婷色中文字幕97| 456亚洲影院| 久久精品国产久精国产一老狼| 在线精品国产欧美| 91视频九色网站| 国产拍精品一二三| 亚洲偷欧美偷国内偷| 欧美精品999| 国产精品最新在线观看| 成人网在线免费观看| 亚洲aaa激情| 国产一区二区丝袜| 91美女片黄在线观看游戏| 国产婷婷成人久久av免费高清| 久久久av一区| 亚洲美女视频网| 亚洲伊人久久大香线蕉av| 亚洲影视九九影院在线观看| 久久精品色欧美aⅴ一区二区| 国产91精品最新在线播放| 日本午夜在线亚洲.国产| 国产精品久久久久久久久久| 国产一区深夜福利| 国产精品吹潮在线观看| 亚洲欧美国产精品| 成人观看高清在线观看免费| 91中文字幕在线| 国产精品久久久久久久久免费|