99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

PHP發(fā)卡系統(tǒng)源碼核心解析:支付回調(diào)與卡密自動(dòng)發(fā)貨設(shè)計(jì)

PHP發(fā)卡系統(tǒng)源碼核心解析:支付回調(diào)與卡密自動(dòng)發(fā)貨設(shè)計(jì) 簡(jiǎn)介這是一份面向網(wǎng)站開發(fā)者和運(yùn)營(yíng)者的發(fā)卡系統(tǒng)網(wǎng)站源碼屬于修復(fù)版完整項(xiàng)目涵蓋虛擬商品自動(dòng)售賣所需的核心流程。壓縮包共375個(gè)文件大小3.53MB其中以188個(gè)PHP文件為主干負(fù)責(zé)業(yè)務(wù)邏輯與接口處理44個(gè)CSS和32個(gè)JS用于前端界面與交互45個(gè)PNG和38張JPG構(gòu)成頁(yè)面素材另有10個(gè)SQL數(shù)據(jù)庫(kù)腳本便于初始化部署。源碼目錄清晰包含商品管理、訂單處理、支付集成、用戶管理、安全防護(hù)、日志記錄等模塊并配有安裝目錄和后臺(tái)管理界面。通過(guò)該源碼可理解自動(dòng)發(fā)卡業(yè)務(wù)流程學(xué)習(xí)ajax異步處理、API接口對(duì)接、定時(shí)任務(wù)清理過(guò)期訂單等項(xiàng)目設(shè)計(jì)思路也適合作為PHP項(xiàng)目結(jié)構(gòu)與二次開發(fā)的實(shí)戰(zhàn)范例。修復(fù)版已針對(duì)安全漏洞和穩(wěn)定性進(jìn)行優(yōu)化部署時(shí)需遵守法律法規(guī)確保商品合法性與用戶數(shù)據(jù)安全。已有1187人學(xué)習(xí)下載對(duì)于需要快速搭建或定制發(fā)卡平臺(tái)的開發(fā)者這份資源提供了可直接參考的完整框架。1. 發(fā)卡系統(tǒng)能干什么一次支付系統(tǒng)自動(dòng)吐出卡密A同學(xué)做虛擬商品線上售賣每天手動(dòng)把會(huì)員碼、軟件授權(quán)碼發(fā)給買家半夜還要爬起來(lái)回消息。后來(lái)他把卡密庫(kù)存全部搬進(jìn)這套發(fā)卡系統(tǒng)網(wǎng)站源碼買家在下單頁(yè)選好商品、完成支付支付網(wǎng)關(guān)的回調(diào)一到系統(tǒng)自動(dòng)從卡密池取出一張貨在訂單頁(yè)展示給買家同時(shí)通過(guò)站內(nèi)消息或郵件補(bǔ)發(fā)一次。這套源碼就是干這件事的商品管理、卡密批量導(dǎo)入、自動(dòng)發(fā)貨、訂單查詢、支付回調(diào)處理全部通過(guò)網(wǎng)站頁(yè)面完成。適合個(gè)人開發(fā)者、小微團(tuán)隊(duì)做軟件授權(quán)、會(huì)員兌換碼、課程邀請(qǐng)碼這類虛擬商品的自動(dòng)化售賣也適合想學(xué) PHP 支付閉環(huán)和庫(kù)存扣減的開發(fā)者拿來(lái)練手。2. 技術(shù)棧與目錄結(jié)構(gòu)入口文件到數(shù)據(jù)庫(kù)的全貌一套發(fā)卡系統(tǒng)的技術(shù)選型決定了它能不能在低配服務(wù)器上跑得穩(wěn)也決定了二次開發(fā)時(shí)你能改動(dòng)哪些層。這一章先把這份源碼里最外圍的技術(shù)組合、目錄劃分和數(shù)據(jù)表關(guān)系理清楚后面分析核心鏈路時(shí)每段代碼都能對(duì)應(yīng)到具體文件和表。2.1 技術(shù)組合PHP 7.4 ThinkPHP 6 MySQL 5.7 Redis 6這套源碼是典型的 PHP 單體應(yīng)用。選 PHP 而不是 Node 或 Go原因很直接發(fā)卡系統(tǒng)的主流使用場(chǎng)景是個(gè)人服務(wù)器或低配虛擬主機(jī)PHP-FPM 的部署成本和運(yùn)行開銷最低??蚣軐用嬗玫氖侵髁?MVC 框架路由、ORM、模型事件這些基礎(chǔ)設(shè)施都有現(xiàn)成實(shí)現(xiàn)不用自己造輪子。Redis 在這里的角色很關(guān)鍵支付回調(diào)冪等、防并發(fā)超賣、異步隊(duì)列消費(fèi)者都要靠它。組件常見(jiàn)版本項(xiàng)目里干什么PHP-FPM7.4運(yùn)行 PHP 代碼處理 HTTP 請(qǐng)求ThinkPHP 66.xMVC 框架路由、ORM、模板引擎MySQL5.7商品、卡密池、訂單核心數(shù)據(jù)的持久化Redis6.x回調(diào)冪等鎖、庫(kù)存扣減鎖、異步任務(wù)隊(duì)列這套組合里最值得關(guān)注的是 Redis 承擔(dān)了“鎖”的職責(zé)。MySQL 的事務(wù)鎖能保證數(shù)據(jù)一致性但支付回調(diào)這種高頻率、可能重試的入口先用 Redis 做一次冪等攔截能減少大量無(wú)謂的數(shù)據(jù)庫(kù)行鎖等待。2.2 目錄結(jié)構(gòu)按業(yè)務(wù)模塊而不是按技術(shù)分層源碼解壓后的目錄劃分很清晰沒(méi)有把代碼全塞在控制器里。你可以先看app/controller找到 HTTP 入口再進(jìn)app/service看真正的業(yè)務(wù)邏輯。目錄樹大概長(zhǎng)這樣faka/ ├─ app/ │ ├─ controller/ │ │ ├─ Index.php # 商城首頁(yè)與購(gòu)買流程 │ │ ├─ Goods.php # 商品詳情與價(jià)格展示 │ │ ├─ Order.php # 下單、支付跳轉(zhuǎn) │ │ └─ Notify.php # 支付回調(diào)統(tǒng)一入口 │ ├─ model/ │ │ ├─ Goods.php # 商品模型 │ │ ├─ Cards.php # 卡密池模型 │ │ └─ Order.php # 訂單模型 │ ├─ service/ │ │ ├─ CardService.php # 卡密入庫(kù)、發(fā)貨、狀態(tài)流轉(zhuǎn) │ │ └─ PayService.php # 支付通道適配、驗(yàn)簽 │ └─ common.php # 公共函數(shù)金額格式化、驗(yàn)簽 ├─ config/ │ ├─ app.php # 應(yīng)用基礎(chǔ)配置 │ ├─ database.php # 數(shù)據(jù)庫(kù)連接配置 │ └─ route.php # 路由規(guī)則 ├─ public/ │ ├─ index.php # 應(yīng)用唯一入口 │ └─ static/ # CSS/JS/圖片等靜態(tài)資源 ├─ runtime/ # 日志、緩存、編譯模板 └─ .env.example # 環(huán)境變量配置模板service層的存在是這個(gè)目錄設(shè)計(jì)里最值得學(xué)習(xí)的地方??刂破髦回?fù)責(zé)收參數(shù)、調(diào)服務(wù)、返回響應(yīng)卡密的入庫(kù)、扣減、發(fā)貨這些核心邏輯全部收斂到CardService里支付回調(diào)統(tǒng)一走Notify控制器并轉(zhuǎn)發(fā)到PayService。這樣如果以后要對(duì)接新支付通道只需要擴(kuò)展PayService不用去動(dòng)訂單和卡密的核心邏輯。2.3 數(shù)據(jù)庫(kù)設(shè)計(jì)五張表?yè)纹鹫麄€(gè)發(fā)卡流程數(shù)據(jù)表只有五張核心表字段也不算多。這種精簡(jiǎn)設(shè)計(jì)由發(fā)卡業(yè)務(wù)本身決定商品、卡密、訂單、回調(diào)日志、配置五個(gè)域幾乎覆蓋了全部業(yè)務(wù)場(chǎng)景。表名核心字段作用goodsid, name, price, stock, sold_count, status商品的基本信息和庫(kù)存總量cardsid, goods_id, card_key, card_value, a_status, sold_order_no, sold_time卡密池每行是一張卡ordersorder_no, goods_id, pay_amount, channel, u_status, pay_time, card_id訂單與支付狀態(tài)流轉(zhuǎn)pay_logorder_no, notify_raw, notify_time, is_handle支付回調(diào)原始數(shù)據(jù)留痕configkey, value站點(diǎn)名稱、支付密鑰等鍵值配置cards表和orders表之間的關(guān)聯(lián)值得注意。cards里的a_status用于標(biāo)識(shí)卡密狀態(tài)0 待售、1 已售、2 鎖定、3 作廢。當(dāng)一張卡被賣出它的sold_order_no會(huì)寫入對(duì)應(yīng)的訂單號(hào)同時(shí)orders表記錄card_id這種雙向關(guān)聯(lián)讓對(duì)賬變得很簡(jiǎn)單。orders表的u_status則維護(hù)訂單自身狀態(tài)pending 待支付、paid 已支付、refunded 已退款。兩張表通過(guò)card_id和sold_order_no互相索引避免在發(fā)貨時(shí)再去遍歷待售卡密。3. 核心模塊拆解一張卡密從入庫(kù)到售出的完整鏈路發(fā)卡系統(tǒng)最核心的鏈路是管理員批量導(dǎo)入卡密用戶下單支付支付回調(diào)觸發(fā)后系統(tǒng)從卡密池取一張標(biāo)記為已售并返回給買家。整個(gè)過(guò)程里最危險(xiǎn)的兩個(gè)點(diǎn)是重復(fù)入庫(kù)和并發(fā)超賣。這一章把這條鏈路的每一段代碼按執(zhí)行順序拆開講清楚每段代碼為什么那么寫。3.1 卡密批量入庫(kù)事務(wù)包裹用內(nèi)存哈希做去重運(yùn)營(yíng)人員拿到一批卡密后通常是一段文本或一個(gè) Excel 文件。導(dǎo)入接口做的事情本質(zhì)上就是按行拆分、去空、查重、批量插入。源碼里CardService的導(dǎo)入方法大致如下public function importCards(int $goodsId, array $cards): int { $goods Goods::find($goodsId); if (!$goods) { throw new \Exception(商品不存在); } // 先做內(nèi)存去重避免重復(fù)卡密進(jìn)入下一輪 $newList []; foreach ($cards as $item) { $cd trim($item); if ($cd ) { continue; } if (in_array($cd, $newList, true)) { continue; } $newList[] $cd; } if (empty($newList)) { throw new \Exception(沒(méi)有有效的卡密數(shù)據(jù)); } Db::transaction(function () use ($goodsId, $newList, $goods) { // 查一次庫(kù)里已有卡密防止重復(fù)導(dǎo)入 $exist Db::name(cards) -where(goods_id, $goodsId) -column(card_key); $existMap array_flip($exist); $insert []; foreach ($newList as $card) { if (isset($existMap[$card])) { continue; } $insert[] [ goods_id $goodsId, card_key $card, a_status 0, create_time time(), ]; } if (!empty($insert)) { Db::name(cards)-insertAll($insert); // 同步更新商品的庫(kù)存余量 $goods-stock count($insert); $goods-save(); } }); return count($insert); }導(dǎo)入這段代碼把“數(shù)據(jù)清洗”和“落庫(kù)”拆成了兩步。第一步先用內(nèi)存in_array去重這一步其實(shí)可以省略只靠 MySQL 的唯一索引也能攔住重復(fù)但先用 PHP 做一次過(guò)濾能顯著減少第二步insertAll的數(shù)據(jù)量。第二步用事務(wù)包裹再把庫(kù)里已有的card_key拉出來(lái)做一次對(duì)比確保同一商品下不會(huì)出現(xiàn)重復(fù)卡密。這里有個(gè)我在實(shí)際項(xiàng)目中常注意的點(diǎn)如果是批量導(dǎo)入幾萬(wàn)條卡密insertAll可能超過(guò) SQL 最大包大小穩(wěn)妥的做法是按 1000 條一組分多次插入。3.2 下單創(chuàng)建訂單顯示庫(kù)存但不下手鎖庫(kù)存很多發(fā)卡系統(tǒng)初始版本會(huì)在用戶點(diǎn)擊購(gòu)買時(shí)就把庫(kù)存減掉這會(huì)導(dǎo)致大量“拍下不支付”的垃圾訂單霸占庫(kù)存。這套源碼的思路是下單時(shí)只創(chuàng)建一個(gè) pending 狀態(tài)的訂單不扣減卡密池真正的庫(kù)存扣減動(dòng)作放到支付成功以后。public function createOrder(int $goodsId): string { $goods Goods::lock(true)-find($goodsId); if (!$goods || $goods-status ! 1) { throw new \Exception(商品已下架); } // 這里讀的是商品表里的 stock 字段而不是實(shí)際統(tǒng)計(jì)卡密表 if ($goods-stock 0) { throw new \Exception(庫(kù)存不足); } $orderNo date(YmdHis) . mt_rand(1000, 9999); Db::name(orders)-insert([ order_no $orderNo, goods_id $goodsId, pay_amount $goods-price, u_status pending, create_time time(), ]); return $orderNo; }這段代碼里用lock(true)讀取商品行是為了保證并發(fā)下單時(shí)讀到的stock是準(zhǔn)確的避免兩個(gè)用戶同時(shí)看到一個(gè)商品還有最后 1 件庫(kù)存。但請(qǐng)注意這里并沒(méi)有真正把stock減掉訂單只是停留在 pending 狀態(tài)。這種設(shè)計(jì)的取舍很明確不支付就不會(huì)占用庫(kù)存對(duì)真實(shí)買家更友好。壞處是極端情況下會(huì)有輕微超賣比如 100 個(gè)人同時(shí)下單最后 1 件但只要支付回調(diào)里卡密扣減邏輯做對(duì)了多的訂單會(huì)進(jìn)入缺貨退款流程不會(huì)把一張卡發(fā)給兩個(gè)人。3.3 支付回調(diào)與自動(dòng)發(fā)貨Redis 冪等鍵加 MySQL 行鎖支付回調(diào)是發(fā)卡系統(tǒng)的命門。支付網(wǎng)關(guān)會(huì)異步通知你的服務(wù)器而且通知可能發(fā)生多次如果回調(diào)處理不做好冪等和并發(fā)控制就會(huì)出現(xiàn)一張訂單發(fā)兩次貨、兩張訂單搶同一張卡的情況。源碼在Notify控制器里做的處理邏輯如下public function payNotify(array $params): bool { $orderNo $params[order_no]; // Redis 冪等鍵同一訂單即使收到多次回調(diào)也只有一個(gè)能進(jìn)入發(fā)貨流程 $lockKey notify_lock_ . $orderNo; if (!Redis::set($lockKey, 1, [nx, ex 120])) { return true; } Db::transaction(function () use ($orderNo) { // 行鎖訂單防止兩個(gè)并發(fā)回調(diào)同時(shí)讀到未支付狀態(tài) $order Db::name(orders) -where(order_no, $orderNo) -lock(true) -find(); if (!$order || $order[u_status] paid) { return; } // 從卡密池取最早一張待售卡片同樣加行鎖 $card Db::name(cards) -where(goods_id, $order[goods_id]) -where(a_status, 0) -order(id asc) -lock(true) -find(); if (!$card) { // 庫(kù)存不足訂單標(biāo)記為缺貨狀態(tài)進(jìn)入人工退款流程 Db::name(orders)-where(id, $order[id])-update([ u_status refunded, ]); throw new \Exception(卡密庫(kù)存不足請(qǐng)人工介入); } Db::name(cards)-where(id, $card[id])-update([ a_status 1, sold_order_no $orderNo, sold_time time(), ]); Db::name(orders)-where(id, $order[id])-update([ u_status paid, pay_time time(), card_id $card[id], ]); }); return true; }這里有兩個(gè)攔截重復(fù)發(fā)貨的機(jī)制缺一不可。第一層是 Redis 的set nx ex同一訂單號(hào)第一次回調(diào)會(huì)成功設(shè)置鍵后續(xù)的重試回調(diào)在 Redis 這一層就被擋掉了壓根不會(huì)進(jìn)數(shù)據(jù)庫(kù)業(yè)務(wù)邏輯。第二層是 MySQL 事務(wù)里的lock(true)即使 Redis 抖動(dòng)或鍵過(guò)期導(dǎo)致兩個(gè)回調(diào)同時(shí)進(jìn)入事務(wù)訂單行鎖也能保證只有一個(gè)事務(wù)能讀到 pending 狀態(tài)并進(jìn)行發(fā)貨另一個(gè)讀到u_status paid后直接退出。真正取出卡密用的是where(a_status, 0)加lock(true)并發(fā)場(chǎng)景下后一個(gè)事務(wù)會(huì)被阻塞等前一個(gè)事務(wù)提交后它再讀取時(shí)這張卡的a_status已經(jīng)變成 1查詢條件命中不到就不會(huì)出現(xiàn)兩張訂單發(fā)出同一張卡的慘案。3.4 訂單查卡與補(bǔ)發(fā)用 card_id 關(guān)聯(lián)而非狀態(tài)篩選買家支付成功后跳回訂單詳情頁(yè)前端需要立即展示卡密。如果每次查看都去卡密池里篩選a_status 0那就會(huì)拿到另外一張未售卡這是典型的邏輯錯(cuò)誤。正確做法是通過(guò)訂單表里已經(jīng)寫入的card_id關(guān)聯(lián)查詢$order Db::name(orders) -alias(o) -join(cards c, o.card_id c.id) -where(o.order_no, $orderNo) -field(o.order_no, o.pay_amount, c.card_key, c.card_value) -find();這段查詢的意義不在于 SQL 本身有多復(fù)雜而是它體現(xiàn)了一個(gè)關(guān)鍵約定訂單和卡密一旦綁定就通過(guò)外鍵關(guān)系固化下來(lái)后續(xù)所有查看和補(bǔ)發(fā)動(dòng)作都基于這個(gè)綁定關(guān)系而不是去卡密池里重新找。訂單詳情、郵件補(bǔ)發(fā)、后臺(tái)售后查詢?nèi)繌?fù)用這一個(gè)查詢邏輯就能保證買家在任意時(shí)刻看到的都是當(dāng)初分配給自己的那張卡。4. 避坑指南支付回調(diào)和并發(fā)場(chǎng)景的幾個(gè)現(xiàn)場(chǎng)發(fā)卡系統(tǒng)看起來(lái)功能簡(jiǎn)單實(shí)際跑起來(lái)最容易翻車的地方全在支付回調(diào)、庫(kù)存扣減和數(shù)據(jù)安全這幾個(gè)點(diǎn)。這一章整理了四個(gè)真實(shí)項(xiàng)目里最容易踩到的坑每一條都按現(xiàn)象、原因、解決三步說(shuō)清楚。4.1 重復(fù)回調(diào)導(dǎo)致同一訂單發(fā)出兩張卡密現(xiàn)象買家只下一單付了一次款卻收到了兩條帶卡密的郵件或站內(nèi)信。原因支付網(wǎng)關(guān)為了保證通知送達(dá)會(huì)按照一定頻率重試回調(diào)直到你的服務(wù)器返回表示“我處理成功了”的響應(yīng)。如果回調(diào)處理里沒(méi)有做冪等控制每一次重試都會(huì)執(zhí)行一遍完整的發(fā)貨邏輯自然就發(fā)了兩張卡。解決在回調(diào)入口加 Redis 冪等鍵用set nx保證同一個(gè)訂單號(hào)只有第一次請(qǐng)求能真正進(jìn)入發(fā)貨流程后續(xù)請(qǐng)求直接返回成功。同時(shí)數(shù)據(jù)庫(kù)里的訂單狀態(tài)也要做二次校驗(yàn)u_status一旦變成paid后續(xù)事務(wù)讀到就直接退出。兩套機(jī)制配合能擋住 Redis 鍵意外失效時(shí)的極端情況。4.2 高并發(fā)下超賣最后一張卡被兩個(gè)訂單同時(shí)買走現(xiàn)象商品庫(kù)存只剩最后 1 張兩個(gè)買家同時(shí)支付成功系統(tǒng)卻只找到 1 張卡另一個(gè)訂單被迫人工退款。原因兩張訂單的支付回調(diào)幾乎同時(shí)進(jìn)入發(fā)貨邏輯都執(zhí)行了where a_status 0的查詢?cè)跊](méi)有行鎖的情況下都拿到了同一張卡然后分別標(biāo)記為已售。解決取卡密的 SQL 必須使用SELECT ... FOR UPDATE即框架里的lock(true)讓并發(fā)事務(wù)排隊(duì)。前一個(gè)事務(wù)取走卡并提交后后一個(gè)事務(wù)再執(zhí)行查詢時(shí)已經(jīng)取不到待售卡會(huì)走缺貨退款的分支。注意鎖的范圍要精確到卡密池的行不要在商品表上鎖整個(gè)庫(kù)存否則并發(fā)性能會(huì)非常難看。4.3 回調(diào)地址被偽造卡密被人批量刷走現(xiàn)象后臺(tái)日志里出現(xiàn)大量訂單都走同一個(gè)回調(diào)地址訂單沒(méi)有真實(shí)支付記錄但卡密全部被標(biāo)記為已售。原因回調(diào)接口沒(méi)有做簽名驗(yàn)證攻擊者構(gòu)造一個(gè)包含訂單號(hào)的請(qǐng)求直接訪問(wèn)回調(diào)地址服務(wù)器誤以為支付成功就執(zhí)行了發(fā)貨邏輯。解決支付網(wǎng)關(guān)每次回調(diào)會(huì)帶簽名參數(shù)把所有回調(diào)參數(shù)按字母序排序拼上商戶密鑰后計(jì)算簽名再用hash_equals和回調(diào)里的簽名比對(duì)。hash_equals是專門用來(lái)做字符串比較的函數(shù)比直接更防時(shí)序攻擊private function verifySign(array $params, string $sign): bool { // 1. 剔除簽名本身按字母序排序 ksort($params); // 2. 拼接成 query string 形式再拼上商戶密鑰 $str urldecode(http_build_query($params)); $secret $this-config-getPaySecret(); // 3. 用 hash_equals 做常量時(shí)間比較 return hash_equals(md5($str . $secret), $sign); }這套代碼的關(guān)鍵在排序和拼接規(guī)則必須和支付網(wǎng)關(guān)的簽名規(guī)則完全一致。一般支付平臺(tái)文檔里都會(huì)寫明簽名算法照著實(shí)現(xiàn)一遍后建議先跑一遍平臺(tái)提供的模擬回調(diào)工具確認(rèn)驗(yàn)簽通過(guò)再上線。4.4 卡密明文入庫(kù)數(shù)據(jù)庫(kù)泄露等于全部資產(chǎn)裸奔現(xiàn)象服務(wù)器被拖庫(kù)后攻擊者直接拿著card_key字段去變現(xiàn)所有庫(kù)存瞬間歸零。原因卡密字段在數(shù)據(jù)庫(kù)里是明文存儲(chǔ)沒(méi)有做任何加密或脫敏處理。解決入庫(kù)前用openssl_encrypt對(duì)卡密做對(duì)稱加密密鑰存到config表或.env里。展示和補(bǔ)發(fā)時(shí)再解密// 入庫(kù)時(shí)加密 $encrypted openssl_encrypt($cardKey, AES-256-CBC, $secretKey, 0, $iv); // 展示時(shí)解密 $plainCard openssl_decrypt($encrypted, AES-256-CBC, $secretKey, 0, $iv);這樣即使數(shù)據(jù)庫(kù)文件整個(gè)泄露攻擊者拿到的也只是一堆密文沒(méi)有應(yīng)用密鑰就無(wú)法還原出真實(shí)卡密。代價(jià)是后臺(tái)管理員搜索卡密時(shí)會(huì)失去“全文模糊查詢”的能力只能在加密前記錄一段不可逆哈希用于精確匹配。這個(gè)取舍在虛擬商品交易場(chǎng)景里是值得的。5. 運(yùn)行與部署從源碼到一臺(tái)服務(wù)器前面四章把代碼邏輯講透了接下來(lái)要解決的問(wèn)題是這份源碼拿到手本地怎么跑起來(lái)線上怎么配置。這一步對(duì)新手來(lái)說(shuō)最容易卡住主要卡在三個(gè)點(diǎn)PHP 擴(kuò)展缺失、偽靜態(tài)沒(méi)配、.env配置不對(duì)。這一章按順序走一遍。5.1 本地運(yùn)行最小依賴和初始化步驟發(fā)卡系統(tǒng)的運(yùn)行環(huán)境非常常規(guī)只要 PHP 7.4 以上版本開啟pdo_mysql、redis、openssl、fileinfo這幾個(gè)擴(kuò)展即可。用你習(xí)慣的集成環(huán)境或 Docker 都行。我一般按下面這個(gè)順序初始化項(xiàng)目# 1. 進(jìn)入項(xiàng)目根目錄安裝依賴 composer install # 2. 復(fù)制環(huán)境配置模板并編輯 cp .env.example .env # 3. 啟動(dòng) ThinkPHP 自帶的開發(fā)服務(wù)器 php think run.env文件里要重點(diǎn)填對(duì)四組信息數(shù)據(jù)庫(kù)連接地址和賬號(hào)、Redis 連接地址、支付網(wǎng)關(guān)的商戶號(hào)和密鑰。第一次運(yùn)行php think run后訪問(wèn)http://127.0.0.1:8000應(yīng)該能看到商城首頁(yè)后臺(tái)入口一般在/admin路徑首次進(jìn)入會(huì)跳轉(zhuǎn)初始化頁(yè)面讓你設(shè)置管理員賬號(hào)和密碼。5.2 Nginx 配置與偽靜態(tài)讓所有路由都進(jìn) index.php本地開發(fā)服務(wù)器不用配偽靜態(tài)但線上部署到 Nginx 時(shí)必須配。這套源碼的入口文件在public/index.php所有請(qǐng)求都通過(guò)這個(gè)文件分發(fā)到不同控制器。Nginx 配置的核心是把不存在的文件請(qǐng)求 rewrite 到index.php上server { listen 80; server_name your-domain.com; root /var/www/faka/public; index index.php index.html; location / { # 文件不存在時(shí)交給 index.php 處理 if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s/$1 last; } } location ~ ^/index\.php { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root/index.php; include fastcgi_params; } location ~* \.(jpg|jpeg|png|css|js|ico)$ { expires 7d; } }這段配置里最關(guān)鍵的if (!-e $request_filename)是判斷請(qǐng)求的路徑是不是真實(shí)存在的文件像/admin、/order/detail這類路由在文件系統(tǒng)里并不存在需要 rewrite 到index.php里由框架解析。而靜態(tài)資源請(qǐng)求比如/static/css/app.css是真實(shí)文件必須直接返回不能走 PHP 解析否則會(huì)白白損耗性能。5.3 上線前必須改的幾個(gè)配置項(xiàng)上線部署和本地跑通有一個(gè)顯著區(qū)別本地用的是默認(rèn)密鑰和測(cè)試支付參數(shù)線上必須全部換成自己的。我每次上線前會(huì)強(qiáng)制過(guò)一遍以下清單.env里的PAY_SECRET換成至少 32 位隨機(jī)字符串不能用源碼自帶的默認(rèn)值數(shù)據(jù)庫(kù)連接不推薦使用數(shù)據(jù)庫(kù) root 賬號(hào)單獨(dú)創(chuàng)建一個(gè)業(yè)務(wù)賬號(hào)并只授予業(yè)務(wù)庫(kù)表權(quán)限支付回調(diào)地址要改成線上域名并且暫時(shí)關(guān)閉支付網(wǎng)關(guān)的沙箱模式APP_DEBUG設(shè)為false防止異常信息直接暴露給訪客runtime目錄要保證 PHP 進(jìn)程有寫入權(quán)限否則日志和緩存寫不進(jìn)去排查問(wèn)題時(shí)什么線索都看不到配置完成后建議先做一次小額真實(shí)支付確認(rèn)回調(diào)、發(fā)貨、訂單詳情展示全部正常再開始放量。這一步跳過(guò)會(huì)怎么樣大概率上線第一天就被各種訂單問(wèn)題淹沒(méi)而且很難從日志里定位到原因。6. 二次開發(fā)把同步發(fā)貨改成異步隊(duì)列處理如果只是把卡密直接存在數(shù)據(jù)庫(kù)里同步發(fā)貨這個(gè)系統(tǒng)已經(jīng)能跑??梢坏┠憬尤攵绦虐l(fā)送或者物流單號(hào)推送這種外部渠道同步發(fā)卡就會(huì)暴露問(wèn)題支付網(wǎng)關(guān)的等待時(shí)間有限如果回調(diào)接口里多做幾次第三方請(qǐng)求網(wǎng)關(guān)會(huì)認(rèn)為你處理超時(shí)而反復(fù)重試反而容易產(chǎn)生重復(fù)發(fā)貨的隱患。常見(jiàn)的改造思路是把發(fā)貨動(dòng)作推進(jìn) Redis 隊(duì)列讓回調(diào)只負(fù)責(zé)“確認(rèn)支付并標(biāo)記已支付”真正的卡密取出和推送交給后臺(tái)消費(fèi)者異步執(zhí)行。我一般會(huì)加一個(gè)簡(jiǎn)單的隊(duì)列// 支付回調(diào)里在訂單標(biāo)記為 paid 后只做一件事推送任務(wù) Redis::lpush(faka:dispatch_queue, json_encode([ order_no $orderNo, goods_id $order[goods_id], ])); // 后臺(tái)消費(fèi)者腳本里從隊(duì)列里取出訂單號(hào)再發(fā)貨 while ($payload Redis::brpop(faka:dispatch_queue, 5)) { $orderNo json_decode($payload[1], true)[order_no]; $card CardService::dispatch($orderNo); }這樣改造后支付回調(diào)的耗時(shí)大幅縮短網(wǎng)關(guān)認(rèn)定的“處理成功”在毫秒級(jí)內(nèi)就能返回。真正的取卡、發(fā)短信、發(fā)郵件全部挪到消費(fèi)者里做如果消費(fèi)者掛了任務(wù)繼續(xù)留在隊(duì)列里服務(wù)恢復(fù)后還能補(bǔ)處理不會(huì)丟單。驗(yàn)證異步化改造是否成功有個(gè)很簡(jiǎn)單的辦法同時(shí)開兩個(gè)請(qǐng)求模擬同一訂單號(hào)的重復(fù)支付回調(diào)觀察在 Redis 冪等鍵有效期間訂單只標(biāo)記一次paid隊(duì)列里只有一條任務(wù)記錄消費(fèi)者也只發(fā)出一次貨。我從那次改完隊(duì)列之后每次動(dòng)發(fā)貨鏈路都會(huì)強(qiáng)制自己在測(cè)試環(huán)境先跑一遍這個(gè)雙回調(diào)測(cè)試。這套源碼的支付回調(diào)主鏈路依然可以保持同步方式使用但理解了隊(duì)列化改造的思路以后加新渠道就不會(huì)被回調(diào)超時(shí)卡住。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
人人爽天天爽| 99精品丁香五月| 激情综合无码| 99精品性爱| 亚洲综合九九| 久久婷婷东京热大香樵| 久99| 岛国av网站| 9伊人网| 天天日天天摸| 五月婷婷啪啪啪| 色婷婷丁香社综合| 五月天婷婷色播综合在线| 亚洲男女激情| 激情五月深爱五月| 一级视频网址| 91打屁股免费看| 淑女丝袜bi操逼123| 久久青草国| 大香蕉久久| 五月婷婷人妻| 日本噜噜色网| 丁香五月香蕉在线| 亚洲午夜av| 久超免费视频| 天天日色情| 五月婷婷五月天| 中文字幕色色| 婷婷丁香激情综合色情| 大地资源色婷婷视频在线| 婷婷五月天首页激情| av在线资源| 丁香五月激情综合| 九九99精品视频| 国产精品色婷婷AV综合色色| 婷婷五月天综合小说网| 久久精品66| 操笔无码| 五月激情综合激情五月| 插插网爽妇五月丁香| 激情伊人| 色播五月综合网| aaa久久久| 色香久久| 婷婷月综合| 99热亚洲精品| 激情五月天婷婷在线网址发给我| 丁香五月天视频在线播放| aa久久| 麻豆精品| 久久伊人婷婷| 伊人五月天日日夜夜久久久天天| 婷婷五月天成人五月天| 激情五月天色婷婷综合| av色婷婷| 婷香五月网在线| 激情AV中文| 久久性都花花世界成人免费视频 | 99视频35精品视频在线观看| 在线观看996精品| 久热精品免费视频4| 777精品久无码人妻蜜桃| 五月丁香婷婷综合视频| 色情五月天丁香社区| 99热这里只有免费| 五月丁香婷婷爱| AV在线不卡网站| 99热最新国内| 色欲AVV| 婷婷丁香五月综合| 久久婷婷五月天大香蕉| xxxx五月天色色| 好大好粗嗯啊-一级黄色大片免费观看-成人AV | 久久五月网| 成人电影AV在线观看| 香蕉操亚洲| 99在线公开视频| 色色草97| 五月婷婷色| 五月婷五月婷伊人伊人五月婷| 五月婷婷基地| 色婷婷丁香五月观看| 妻久久久久| 3p日韩网站视频| 久久狠色噜噜狠狠狠狠97| 中文字幕簧片| 色天堂A| 人妻久久久久久久久| 日本欧美国产| 思思re99视频在线观看| 久久久久久久91| 9久操| 开心久久网婷婷| 中文成人在线| 亚洲色婷婷色| 九九在线免费观看| 色婷婷九月| 狠狠色综合网| 综合色网站| 婷婷激情肏屄网| 亚洲99视频| 五月天婷婷无码| 亚洲第一第二网站| 久久久18| 91操屁股| 欧美天天性| 9l视频自拍9l九色9l成人| 99色在线视频| 婷婷久久综| 视频这里只有精品16| 99热在线播放| 久久AV无码精品人妻系列试探| 亚洲天堂有码| 五月激情久久综合| 91综合色| 9 7总站超级碰免费视频| 91岛国片| 操嫩逼电影| 欧美日韩成人在线网| 大香蕉久操| 丁香影院五月综合| 97色色色色色色色色色色色色色| 丁香五月综合婷婷| 啪啪五月综合| 色在线视频网2025| 亚洲中文字幕在线观看| 9九热视频| 久久久er热| 五月激情六月综合| 日本三级99人妇网站| 色亚洲无码| 直接看的AV| 日本片日本片祼观看网站在线看中文版网页在线看 | 亚洲免费婷婷| 婷婷丁香九月| 洗浴中心操B视频| 久久99热这里只有精品| 久久香蕉网| 亚洲人成人五月天| 夜色.cnm| 色 五月婷婷基地| 国产成人99久久亚洲综合精品| Av在线资源| 欧美综合婷婷欧美综| 九色七七| 中文字幕,综合,91| 国产综合网在线| 亚洲综合九九| 激情网第九色| 99色婷婷| 六月婷婷狠狠做| 五月天综合在线| 操B五月天| 激情五月婷| 亚洲视频无| av性爱在线| 国产美女无遮挡裸体毛片A片| 大香蕉婷婷丁香视频在线| 久久se 综合网| 久久黄色网扯| 亚洲黄色网址| 五月在线| 97碰碰人人| 成人视频一区| 综合激情网| 久久99网站| 五月丁香美女| 91se精品国产| 丁香婷婷六月男男| 五月婷婷基地| 久久久天堂国产精品女人| 婷婷丁香五月天色区| 欧美大肥婆大肥BBBBB| 久久精品性爱视频,| 丁香五月天激情| 97黑人精品区| 无码一区二区日韩| 天天日,天天插| 99国产精品久久久久久久久久久| 综合激情网五月激情| 五月婷久久| 97色热| www,com,五月色色| 婷婷永久在线| 99自拍视频在线观看| 亚洲av综合网| 99在线观看| 性色播| 国产毛片精品一区二区色欲黄A片| 大香蕉久久久久| 久久综合中文| 五月婷丁香久久久| 九九九九中文字幕| 综合另类视频| 精品国产人人爱人人| 99∨VTV| 影音先锋女人av鲁色资源网小说免费| 熟妇人妻中文字幕无码老熟妇| 五月婷婷天天色| 青草视频在线播放| 亚洲va在线∨a天堂va欧美va| 91热久| 婷婷成人视频| 婷香五月网在线| 91狠狠色丁香婷婷综合久久精品| 五月婷婷激情综合拍| 97色碰碰公开视频| 六月丁香啪啪| 欧美色小说婷婷| 激情伊人五月天| 亚洲成人AV一区在线观看| 六月丁香激情网| 久9热视频| 综合网色| 婷婷五月天成人综合网| 99久在线精品| 亚洲狠狠丁香婷婷香蕉| 综合网啪啪| 快乐婷婷五月天| 色婷婷基地 | 天天天天天操| 九九热99视频在线| 色色欧美色色| 亚洲成人综合在线| 久久性爱视频久久性爱视频| 成人av中文字幕| 丁香激情网| 99这里只有精品99| 五月色丁香综合| 丁香五月色情av| 天天干狠狠艹| wWw色五月| 五月激情久久| 国产精品VIDEOSSEX久久发布| 开心五月综合| 五月天伊人av| 狼人婷婷综合| 婷婷丁香精品视频在线观看| 天天爽天天操| 成人av在线网站| 九九在线免费观看| 婷婷综合色色| 玖玖激情网| 狠狠999| 久久久五月婷婷| 欧美性生交XXXXX无码小说| 天天干天天操天天拍| 婷婷午夜| 狼人婷婷综合| 香蕉影院色| 狠狠爱综合| 狠狠五月天婷婷激情网。| 成人在线综合| 亚洲在线播放| 丁香狠狠干| 亚洲色啪| 久碰婷婷视频| 久久婷婷五月免费视频| 久久性爱网站| 激情深爱婷婷网| 人人叉久| 五月婷婷涩涩爱| 亚洲精品亚洲人成人网| 激情六月天| 五月婷婷视频ab| 六月色婷婷色| 91九色网| 99久久婷婷国产综合精品草原| 色播激情婷婷| 亚洲无码影音| 亚洲视频一区| 国产又粗又大又爽又黄| 四色永久成人网站| 狠狠草在线观看| 99热精品无码| 色狠狠婷婷| 婷婷激情五月综合丁香社| WWW,五月天| 国产.亚洲.欧洲视频在线| 久久99人人| 99久久婷婷国产综合精品草原| 欧美精品99| 日本va欧美va欧美精品88| 日韩六六久久电影| 欧美激情综合| 久久久久久久综合狠狠综合| 久热这里只精品| 91免费看片| 丁香五月天婷婷91| 狠狠久久婷婷| 噜噜狠狠色综合久| 永久免费视频| 色狠狠999综合| 天天操中文字幕| 亭亭玉月丁香| 九月婷婷色色| 亚洲视频无| 激情超碰网| 4399精品一区二区| 久久久A级视频| 超碰京东热av男人的天堂| 色吧网综合| 伊人网色婷婷五月天| 中文字幕一色哟哟哟哟| 99久久超级| 九九九九热99超碰| www.久久9| 888久久久| 五月丁香婷婷99| 日本情色一区二区| 男人天堂99| 丁香五月激情啪啪啪| 婷婷黄色网| 奇米色大香蕉| 九九综合色综合| 超碰在线国产9| 97性视频| 六月丁香婷婷亚洲中文玖玖| 色婷婷综合网站| 五月婷婷在线播放| 91人人爽狠狠狠| 99啪啪| 99热香港| 六月丁香激情综合| 播五月,色五月,开心五月播放器 | bukadeavzaixian| 综合网网欲色| 九九精品网站| 激情婷婷亚洲五月| 玖玖资源在线视频| 婷婷色色五月| 五月丁香六月片| 婷色综合| 五月丁香六月婷综合成人综合 | 99热8| 婷婷五月天激情网| 久久婷婷五月综合一| 五月婷婷|欧美| 激情 婷婷| 久久九九99| 丁香五月天婷婷久久综合| 五月婷婷之美女图片| 亚洲av骚货| 婷婷五月综合久久中文字幕| 国产小精品| 丁香久久激情俄| 91精品久久久久久久久久久久| 天天日天天做天天舔| 久久婷婷五月综合色播| 狠狠干综合网| 最新无毒无码AV| 午夜在线成人网站免费观看| 五月激情综合网| 亚洲婷婷婷| 五月天亚洲综合网| 亚洲国产精品二二三三区| 91丁香色五月| 99精品色色| 久热这里只有精品99re | 操逼巨乳91| 色八月婷婷| av操一操| 中文人妻AV久久人妻18| 久久久性爱网| 久热这里只有精品视频免费观看| 婷婷五月天激情偷拍| 五月丁香成人版| 九九99精品视频| 国产精品色情AAAAA片软件| 五月婷婷六月丁香首页| 日夜夜天天| 超碰色综合| 五月天色图| 91色在线 | 日韩| 秋霞学生妹一二级| www.婷婷亚洲基地| 去色色五月天| 五月天中文网| AV大香蕉| 狠狠色丁香| 婷婷色五月天在线| 五月天开心色色网| 九九热九九| 五月婷婷丁香大陆免费| 婷综合六月| 日本色道视频网站| 国产精品国产| 涩五月丝袜婷婷| 777丁香六月青青草婷婷综合久月| 激情99热| 五月婷婷丁香六月| 久久国产色| 99热 精品在线| 啊v视频在线观看| www.五月天婷婷| 久久5 9视频免费观看| 五月天无码| www.色五月.com| 亚洲亚洲人成综合网络| 天天色天天爱天天舔| 婷婷五月天av| 九九热欧美| 91人碰| 九九热青草| 小视频在线亚洲| 91人妻PORNY九色大屁股| 五月婷天堂视频| 青青福利网| 婷婷在线视频| 人人人人人人人人人草| 国产精品色| 婷婷第六色| 99久久久久| 国产精品色婷婷久久久精品| 无码网站视频| 五月亭亭色| 婷婷五月天开心激情网| 狠狠色噜噜色狠狠狠综合色| 天天干狠狠| 色约约视频一区二区三区四区五区 | 亚洲影院婷婷色| 六月丁香激情综合| 91美女啪啪| 九九热视频思思| 草草色情综合网| 99色热视频| 99人妻碰碰久久久禁片| 丁香婷婷六月在线资源观看| 久久综合9| 俺也去在线视频 | 99热只有精品在线| www99热| 超碰激情五月| 日本九九视频| 九九国产精视频| 九九在线视频| 狠狠色无码| 亚洲偷| 99思思热只有在这里看| 欧美激情久| 免费视频无码| 色五月天.con| 丁香五月天激情综合| 五月激情婷婷色| 伊人九九68| 美女五月狠狠| 97久久人人| 婷婷综合网站| 五月香六月婷| 精品99在线| 99爱在线精品视频免费观看| 五月丁香婷婷激情| 99色久| 色情婷婷| 狠狠操.COM| 九九精品婷| 欧美图片丁香五月天| 日本色色色| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 天天在线XXX| 天天射综合网站| 五月天婷婷综合网| 99热国产这里只有精品| 久草天堂| 91re色综合视频| 九九热在线观看视频| 另类视频在线| 香蕉五月婷婷| 色婷婷丁香五月| 亚洲 五月 婷婷 成人| 中文久久婷婷| 韩日另类| 欧美人人操| 天天色综合色| 99热主页日本| 香蕉曰比| 丁香五月激情综合| 五月婷婷婷丁香播| 五月丁香激情综合网官网| 欧美日韩中国| 熟女人妻一区二区三区免费看| 丁香六月色婷婷| 色色五月天婷婷| www.第四色99| 婷婷久热| 97九色视频| 六月丁香深深爱| 99热加勒比| 屁股翘好撅高迎合跪趴| 激情九月婷婷| 婷婷性爱五月天| 欧洲色色| 99色五月| 97色色在线视频| 五月天天天综合| 丁香亚洲色综合| 色婷婷电影网| 一级二级色大片| 精a品a视a频| 99视频在线啪| 99久久综合狠狠综合久久| www超碰| 九九热国产| 丁香五月狠狠在线观看| 五月婷婷啪啪啪| av五月丁香| 欧美精品999| 激情亚洲网| VA国产在线综合网站| 99热99精品| httpwww色com日本| 99精品国产在热久久| 超碰人妻在线| 色色激情五月| 五月天天天天天天天天天天天婷婷婷| 色婷婷五月天天天干天天操天天爽| 97人妻碰碰碰久久| 色色色五月天激情资源| 五月天丁香婷婷视频网址| 五月天开心激情综合网| 午夜激情综合| 五月天社区婷婷丁香社区| 五月婷婷丁香在线视频| 久久这里有精品在线观看| 99热这里只有精品21| 日本色色色| 另类 在线| www. 五月. com| 大香蕉福利导航| 极品人妻VIDEOSSS人妻| 99在线精品免费视频| 超碰亚洲天堂| 99综合久久| AV成人在线播放| 伊人五月天在线| 五月综合六月婷婷| 99在这里有精品| 99精品无码网站| 五月天婷婷激情小说| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 如何安全看伊人婷婷| 九九热啪啪| 五月丁香婷婷婷激情爱爱| 97操在线资源| 九九色院| 日韩不卡DvD| 婷婷五月综合久久中文字幕| 九久9精品| 亚洲婷婷在线播放十月| 久久在线视频只有这里有精品| 五月丁香激| 久久久.COM| 久久婷婷视频| 五月婷婷开心深| 99 频99热国里只有精品| 久操大香蕉| 色狠狠五月天| 狠狠干五月丁香| 婷婷丁香五月六月激情| 久久免费婷婷视频| 久噜久噜| 五月丁香成人视频| 五月婷婷六月天| 婷婷五月天久久| 亚洲AV人人操| 色色五月天激情| 丰满少妇猛烈A片免费看观看| 久久一级AV| 综久久久| 99激情视频| 国产成人综合网| 欧州婷婷五月天综合| 草久私拍| 91久久1118| 婷婷伊在线| 五月天夜夜爱夜夜操| 99热这里只有精品2| 丁香六月婷婷色播| 99色视频| 91干在线视频| 91一起操| 综合五月激情| 综合久久影院| 中国女人内射6XXXXX| 97碰 在线视频观看| 182TV大香蕉| 狠狠艹狠狠艹| 婷婷五月天激情诱惑| 97资源碰碰| 99国产精品久久久久久久久久久| 国产熟妇乱子伦hd| 久99热在线观看| 操操操av| 蜜臀99精品| 色婷婷五月综合| Www.久久| 色就是色婷婷五月亚洲激情| 精品久久66| 亚洲激情在线| 97碰 在线视频观看| 色射影院| 老司机伊人| 五月天开心激情综合网| 丁香社92视频| 婷婷五月天成人动漫 | xxxx五月| 激情九九六月激情免费视频| 国产精品久久久久9999小说 | 久久婷婷青草五月天| 99这里只有精彩视频| 婷婷色中文字幕| 99爱在线免费视频| 禁欲电影完整版在线播放| 《丁香激情综合久久伊人久久》影视在线观看 -高清预告手机免费播放 -三妹影院 | 久热一本| 五月丁香中文字幕| 这里只有精品在线观看视频| 成人综合视频网址| 91碰碰碰| 91超级碰在线| 七七久久综合| 久久香蕉婷婷五月天| 99亚洲视频| 123日本不卡在线| 任你草| 九九婷婷网五月天| 亚洲综合激情五月久久| 激情六月丁香| 狠狠狠狠狠狠| www。久久久久一b。Cc| 色情综合网| 无码动漫av| 丁香五月色| 人妻综合网| 色丁香五月| 丰满少妇猛烈A片免费看观看| 超碰成人在线观看| 五月丁香成人网| 9九九久久精品无码专区| 婷婷五月天激情四射五月天激情| 91丁香五月| 狠狠色丁香久久综合婷婷亚洲成人福利| 亚洲第一色色色| 国产在线视频1234| 天堂成人久久| 五月丁香激情五月天| 狠狠色噜噜狠狠狠狠综合| 变态另类色图| 1769在线观看欧美国产| 五月天色官网| 99精品偷自拍| 色亭亭五月天网扯| 中文字幕 码精品视频网站| 综合久久综合久久| 久久99久久99久久99人受| 另类五月激情| 久久精品99久久久久久| 五月婷婷深深爱| 狠狠做五月| 婷婷久久久| 五月婷亚洲精品AV天堂| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 九九成人精品免费视频| 97操碰日本女人| 国产精产国品一二三在观看| 超碰99在线观看| 激情四射婷婷| 婷婷五月天播播| 淫荡综合网| 丁香五月婷婷呀| 26uuu四色| 欧美狠狠一在草| 7777激情基地| 日韩有码一区| 六月丁香啪| 亚洲中文字幕翔田千里| 五月伊人91| 日韩黄在免| 成人美女网| 无码成人AAAAA毛片AI换脸| 欧美精品999| 日韩在线视频中文字幕| 日本99在线| 九九视屏| 超碰免费大香蕉| 丁香五月在线自慰| 九九色影院| 亚洲情欲| 欧美成人精品三区综合A片| 超碰日日操| 五月天综合激情网| 99啪啪| 日本一级一级一级一级| 五月婷婷五月| 亚洲第一成人无码A片| 被男人添B超爽视频| 人人爱国产| www.91色| 色色五月婷婷狠狠| 五月丁香最新| 99热国产这里只有精品| 2017狠狠干| 丁香六月欧美| 欧类av怡春院| 噜噜五月天综合| 26uuu偷拍亚洲欧洲综合| 伊久久婷婷| 精品国产va久久久久| 97色五月天| 丁香激情综合| 啪啪综合| 亚洲V国产V欧美V久久久久久| 91麻豆国产三级精品福利在线观看 | 久热这里| 狠狠干,狠狠操| 成人av在线网| 色人久夂| 99热91| 高清无码一区二区三区四区| 激情五月小说婷婷| 成人丁香五月天| 国产精品第一国产精品| 成人网站av免费网站推荐| 99欧美| 五月婷婷丁香六月在线| 成人丁香色| 粉嫩AV久久一区二区三区| 精品无码片| 永久的网站AAAA | 丁香五月久久| 久草婷婷视频| 99免费热在线精品| 天天干夜夜谢| 久久丁香| 欧美人人女女精品综合五月天| 综合激情伊人影视在线| 天天狠狠干| 狠狠干天天日| 青青草网武则天| 深爱五月综合网| 丁香六月综合| 九九综合九| 超碰人人在线| 美国色五月天婷婷资源站| 九九久久网| 丁香婷婷久久五月天| 五月天无码| 另类激情首页| 久久艹 五月天| 99爽视频| 色狠狠综合| 久久亚洲天堂| 婷婷五月天AV激情| 久久综合99| 久久久久久久久久婷婷| 99热这里只有精品13| 99热这里都是精品| 9 大屁股在线视频精品| 国产精品-第3页-91JQ就要激情网91JQ5.JQJQ926.XYZ | 激情综合丁| www.夜夜操.com| 91精产品自偷自偷综合| 婷婷五月天激情丁香| 99这里有精品| 九九热a| 色99热| 丁香五月性爱爱五月| 欧美97p| 激情99| 婷婷操超碰| 狠狠色综合精品视频在线| 五月香婷婷| 婷婷六月色开| tingtingzonghewang| 性综合网| 中文精品久久久久人妻不| 9精品在线| 91视频五月丁香| 五月六月婷| 五月天久久色| 激情五月六月丁香| 丰满少妇乱A片无码| 亚洲丁香婷婷五月天综合色| 120分钟婬片免费看| 亚洲综合草草| 亚洲成人AV在线观看| 成人中文字幕在线| 日韩av在线免费观看| 婷婷九月丁香中文| 天天舔天天操| 久草丁香婷婷五月天婷| www.操.com| 六月婷婷最新网址| 五月天久久网站| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 五月婷婷开心丁香| 91碰操| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 拳交大逼| 噜噜狠狠色综合久| 狼人婷婷久久| 色婷婷手机在线| 午夜婷婷| 五月中旬婷婷丁香六| 国产AV成人精品| 色亭亭五月天丁香综合AV - 百度 - 百度 | 久久激情视频99| 99色在线| 色色色色色色综合| 久久五月天影院| 色五月天成人| 激情另类综合| 精品久热| dingxiangtingtingliuyue| 97超碰9久热婷婷热| 婷婷五月六月丁香| 9久视频| 另类少妇人与禽zOZZ0性伦| 五月丁香久久久| 久草网大香视频| 婷婷九月丁香| 色婷婷丁香五月丁香| 香蕉久久av一区二区三区| 五月天伊人手机在线播放AV| 91婷婷五月丁香碰| 99视频在线精品免费观看2| 五月丁六月香av| 99碰碰碰| 超碰免费在线| 99热 免费| 婷婷色综合中心站| 久久五月视频| 五月丁香六月婷婷手机无线| 97午夜一区二区| 婷婷射综合| 色在线五月天免费| 亚洲久艹| 99热免费| 五月婷婷视频在线观看| 日本久久99| 日韩不卡123| ww久久| 色婷婷在线视频综合| 亚卅毛片| 激情五月天天| 99综合| 深爱五月日韩| 99热大全在线观看| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 亚洲成人日韩无码精品| 欧美日韩aaa| 久久人妻视频| 五月天婷婷乱| 五月天五月色婷婷综合| 91精品人妻少妇无码影院| 久久视频九九视频| 色999五月色| 久久免费试看120秒| 四季8848精品成人免费网站| www.五月丁香| 啪啪激情综合| 九九热精品视频在线观看| 天天天天天天天操| 婷婷五月深深的爱| www.久久| 婷婷丁香97| 色综合av超碰| 日本狠狠色| 26uuu欧美| 99极品视频| 在线观看的av| 海外网站专业操老外| 日韩av一区二区在线/日产精品久久久 | 无码日本精品XXXXXXXXX| 开心婷婷五月| 思思久日精品视频| 丁香五月婷婷动漫| 综合色久| 久热 91| 亚洲99一级无嗎特制在线| 天天日天天爽| 26uuu成人网| 五月丁香综合激情网| 婷婷五月天在线一区| 九九热在这里只有精品| 这里只有精品,日韩视频| 人人摸人人操人人爽| 美国不卡视频| 五月婷久草| 五月婷A V在线| 国产欧美精品AAAAAA片| 丁香五月天激情| 亚洲精品99| 丁香五月天激情AV| 色婷婷在线综合色播网| 五月丁香色婷婷伊人| 五月婷婷丁香| 亚洲精品视频在线播放| 日本啪啪网| 久久激情天堂| 4399在线观看免费毛片| 九月婷婷综合网| 91视频久久久| 色婷久| 操日视频| 色色色婷婷五月| 婷婷色九月| 色婷婷在线播放| 玖玖资源站国产| 天天插天天很| 五月婷婷亞洲中文| 干一干xxxx| 丁香五月久久| 亚洲蜜桃精久久久久久久久久久久| 丰满少妇乱A片无码| 97超喷视频在线观看| 国产婷婷综合| 久久婷婷五月综合| 无码人妻少妇色欲AV一区二区| 嫩草AV久久伊人妇女超级A| 精品热九九| 91久久久久久久91| 五月激情丁香五月| 新激情五月天色播| 六月色婷婷| 亚洲视频99| 色婷婷8| 五月丁香毛片| www.minyis.com【JT】实力收量可预付TG@LXSPSW8 | 激情五月天色婷婷综合| 亚洲欧美丁香五月天亚洲欧美| 丁香五月电影| 婷婷五月激情欧美大胆视频| 亚洲婷婷五月| 99热国内| 婷婷成人五月天| 日本色婷婷| 婷五月天丁香婷五月| 色色色五月婷婷| 丁香九月婷婷色| 婷婷丁香花五月天| 国产一区二区av免费| 久草狼人| 婷婷丁香五月视频| 久久久精品人妻| 五月开心网| 懂色av蜜臀av粉嫩av永陈冠希| 性韩日色婷婷五月天激情啪啪XXX| 色色色色色色色色色999| 亚洲乱码在线观看| 成人丁香婷婷| 伊人激情| 五月激情婷婷国产精品久久久久久| 婷婷爱五月天| 亭亭玉月丁香| 激情 婷婷 插| 丁香五月久久| 欧亚中文A V| VA五月激情在线| 日本婷婷| 另类在线免费视频| 五月婷婷深深的爱| 五月色综合| 狠狠噪| www,8050,午夜三级| 丁香久久| 99精品视频在线观看| 97久久人人操| 五月丁香六月婷婷网| 亚洲欧洲中文日韩久久AV乱码| 97碰碰在线看视频免费| 开心婷婷五月天激情网| 夫妇交换刺激做爰| 国产韩日亚洲美州欧亚综合在线 | 99热| 青青草tp| 激情综合五月婷婷| 97碰 在线视频观看| 婷婷五月天激情综合| 无码啪啪| 色爽九九| 第四色五月天| 成人AV播放| 热99视频| 欧美激情综合色综合啪啪五月| 五月天婷婷影院| 激情综合激情综合| 婷婷天天色| 国产美女无遮挡裸体毛片A片| www.激情| 男女99免费视频| 操逼三区| 99国产精品久久久久久久久久久| 中文字幕人妻一区二区| 婷婷激情五月天亚洲综合| 91碰碰碰| 成人五月天色天堂| 色五月婷婷基地| 国产日产成人亚洲欧美国产VA| 婷婷刺激综合| 激情五月婷婷视频一区二区三区| 丁香五月乱中文字幕| 亚洲精品一二三| 无码婷婷五月天| 草草女人亚洲| 五月丁香久久呀| 操操操97| 巴基斯坦粉嫩无码视频| 狠狠爱丁香婷| 五月天激情AV| 成人在线高清| 人妻aV在线| 五月 成人 婷婷| 在线色色| 天天干,天天舔| 久久久婷婷| 无码毛片992367| 中文字幕在线aⅴ免费观看| 激情五月婷婷在线区| 变态 另类 在线| 激情五月婷婷丁香综合网| 嘿嘿视频免费看9| 五月丁香六月婷婷欧美综合| 超碰高清在线| 丁香六月色婷婷| 五月丁香久人妻中文| 狠狠综合网| 激情五月婷婷伊人| 美女视频图片久久91| 亚洲最大激情无码| 國語久久婷| 久久激情五月| 日韩精品色| 一本九九色| 91超碰九色| 久久综合网免费视频| 琪琪色网在线| 色五月婷婷小说亚洲中文字幕组| 亚洲熟女色| 五月丁香啪啪啪| 2025年最新亚洲在线欧美| 开心五月婷婷综合在线精品素人| 夜夜大香蕉婷婷丁香| 華人性愛AV在線| 综合久久丁丁香婷| 日本婷婷| 色六月天天激情综合网| 天天操天天干天天射| 色五月天婷婷| 色频玖玖五月天| 久综合九综合99| 欧美日韩123| 天天日夜夜夜操操操操| 91热手机在线| 婷婷五月天成人| 涩涩涩.com| 婷婷伊人久久| 五月婷婷影视| 人人操AV| 日日操,天天操| www.91.com黄| 97人妻超级碰碰碰碰碰| 色婷婷偷拍| 99精品在| 久久作爱| 性爱网五月婷婷| 成人婷99最新| 蜜臀嫩草| 激情丁香五月天综合| 午夜色丁香| 午夜丁香| 爱狠射| 婷婷丁香五月综合| 91se在线观看| www.五月婷婷久久.com| 丁香五婷婷| 亚洲超碰青涩| 激情五月婷婷五月| 色播播五月| 激情五月婷婷伊人| 婷婷五月天综合网| 亚洲婷婷综合视频| 一起草av| 99热网址| 思思国产99| 五月天播播综合| 9|无码久久久久久| 久99久视频精选| av高清无码| 99爱在线精品视频免费观看| 青草五月天| anquye五月| 精品网站99| 国产精品人妻欲求不满| 五月天婷婷丁香人人操91| 一本大道熟女人妻中文字幕在线 | www.色五月| 色欲资源网| 亚洲丁香五月深爱五月| 操人91| 色综合丁香婷婷| 99热99在线精品| 亚洲av电影在线| 三男玩一女三A片| 色色色免费视频| 亚洲综合无码| 婷婷五月激情中文字幕| 亚洲色模骚货| 色综合综合色| 激情五月天之五月婷婷| 国产色色在线| 久久综合干| 伊人超碰| 99色热视频| 国产亚洲网站在线| 色婷亚洲五月丁香| 青青操成人福利| 婷婷五月天最新网址| 爱iii做iiii日| 国产露脸150部国语对白| www.激情| 99re在线观看| 思思99热| 天天日天天插| 少妇AB又爽又紧无码网站| 亚洲高清在线| 99精品网| 色五月网址| JAPANRCEP老熟妇乱子伦视频 | 久久九九囯产| 激情碰碰碰| 中文av在线观看| 亚洲自拍天堂| 五月天婷婷伊人| 五月婷婷狠狠干| 东京热伊人| 怡红院 久久| VA五月激情在线| 停停色综合伊人| 99久久成人| 婷婷视频在线| 99久在线精品99re8热| 五月丁香777| 99热在线观看| 亚洲激情综合网| 色色色无码| 婷婷五月天av| 天天综合天综合久久网| 日韩AV在线免费| 色综合偷拍| 日良久久| 人妻操逼| 色婷婷色人人射| 日日操日日撸| 99久.| 婷婷色综合| 开心婷婷五月综合| 人人插9| jiujiu热在线视频| 亚洲成人电影aaaa| 亚洲亚洲永久无码777777| 狠狠色综合网| 五月丁香啪啪| 色五月在线观看| 精品一二三区久久AAA片| 免费无码毛片一区二区A片| 日韩成人电影AV| 婷婷社区五月天| 免费视频WWW在线观看网站| 99久久喉9| 激情五月天的婷婷| 大香蕉伊人久久| 国产26uuu视频| 五月婷婷色五月| 777色色色| 97luluse| 欧美婷婷日本| 亚洲 在线 性爱 | 婷婷色色网站| 97色在线观看视频| 五月天播播综合| 丁香五月天激情视频| 久久xx| 伊人香大香蕉视频| 天天综合网91| 激情综合网亚洲色图| A1片久久久| 亚洲乱码日产精品BD| 日韩精品超碰在线观看| 成人婷婷桔色| 99在线免费观看| 亚洲妇女熟BBW| 丁香五月婷婷激情尤物| 天天舔天天摸天天射| 这里只有精品久久| 免费看欧美成人A片无码| 午夜成人综合| 爱婷婷久久视频| 丁香五月电影| 丁香五月婷婷www..com| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 夜夜夜夜撸夜夜操| 色五月激情网| 久婷久婷激情肉| 精品九九视频| 另类在线| 国产色99| 五月综合六月丁| 99精品热| 五月婷婷|欧美| 快色t v在线入口| 深爱激情五月天| 97碰人人操| 久热A| 一本道在线电影| 人人摸人人操人人爽| 婷婷五月天香蕉| WWW.国产| 亚洲色啪| 色五月涩涩婷婷| 丁香五月天日韩无码| 伍月激情天| 九九这里有精品| h亚洲| 色色色色色色色色综合网| 国产精品久久久久久久久久免费 | 桃色成人网| 一区二区中文字幕| 午夜大香蕉| 99精品一二三四视频| 深爱五月激情| 高清免费在线视频| 亚洲国产精品VA在线看黑人 | 无码免费人妻A片AAA毛片西瓜| 人妻激情综合| 五月花婷婷| 一级无码作爱片| 九九色综合视频| 91综合视频丁香| 亚洲精品性色| 思思久久99热只有频精品66| 丁香六月 婷婷六月| 久久五月天婷婷| 中文字幕在线免费观看视频| 婷婷五月天网址| 正宗黄色毛片| 色综合另类| 亚洲色色五月| 丁香五月婷婷香| 9久热在线精品| 玖玖资源站中文| 九九九九九九九九九九九九九国产精品| 色婷婷五月亚洲| 色www99| 婷婷六月五月天综合| 香蕉曰比| 79精品视频| 五月婷婷丁香网| 99热这里有精品| 丁香五月777| 秋霞成人毛片一级A片| 激情五婷网| 99热这里只有精品在线观看| 久久丁香婷婷五月天| 深爱五月天| 99色看|