精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

別再踩坑了!SpringBoot 集成支付寶支付最全教程

開發(fā) 項(xiàng)目管理
支付寶支付集成并不復(fù)雜,但細(xì)節(jié)環(huán)環(huán)相扣,稍有遺漏就可能導(dǎo)致異常。希望本文能幫你在項(xiàng)目中快速構(gòu)建一套可靠的支付體系,少走彎路!

在電商、在線服務(wù)以及會(huì)員系統(tǒng)中,支付是繞不過去的核心環(huán)節(jié)。支付寶作為國(guó)內(nèi)主流的支付方式,早已開放了完善的 API 接口供開發(fā)者使用。然而,許多初學(xué)者在 Spring Boot 項(xiàng)目中集成支付寶時(shí),經(jīng)常會(huì)遇到密鑰配置不當(dāng)、回調(diào)驗(yàn)證失敗、訂單狀態(tài)未及時(shí)更新等“坑”。

本文將帶你從 支付寶開放平臺(tái)沙箱環(huán)境配置 → Spring Boot 項(xiàng)目接入 → 支付/回調(diào)/退款流程 → 消息隊(duì)列處理超時(shí)訂單 全流程,構(gòu)建一個(gè)健壯的支付模塊。為了便于理解,我們會(huì)逐步展開代碼示例,幫助你快速落地。

支付寶開放平臺(tái)沙箱環(huán)境配置

在本地調(diào)試之前,我們需要先完成支付寶開放平臺(tái) 沙箱環(huán)境 的配置。操作步驟如下:

登錄沙箱環(huán)境

進(jìn)入支付寶開發(fā)者平臺(tái),使用開發(fā)者賬號(hào)登錄,選擇 沙箱環(huán)境。 在 沙箱控制臺(tái) → 沙箱應(yīng)用 → 產(chǎn)品列表 中,可以看到當(dāng)前沙箱所支持的產(chǎn)品。

配置接口加簽方式

支付寶提供了兩種方式:

  • 系統(tǒng)默認(rèn)密鑰/證書(推薦)
  • 自定義密鑰

這里選擇系統(tǒng)默認(rèn)密鑰,因?yàn)楹罄m(xù)使用 API 在線調(diào)試工具時(shí)必須依賴默認(rèn)密鑰。

應(yīng)用網(wǎng)關(guān)配置

應(yīng)用網(wǎng)關(guān)主要用于接收支付寶的異步通知(如交易完成回調(diào))。

  • HTTP 訂閱模式下必須配置應(yīng)用網(wǎng)關(guān);
  • WebSocket 訂閱模式下則不需要。

生成密鑰

完成應(yīng)用信息配置后,生成一套屬于自己的應(yīng)用密鑰,確保項(xiàng)目后續(xù)能與支付寶沙箱環(huán)境正常交互。

至此,網(wǎng)頁端配置環(huán)節(jié)結(jié)束。

Spring Boot 項(xiàng)目配置(IDEA 操作部分)

引入依賴

在 pom.xml 中添加支付寶 SDK:

<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>4.22.110.ALL</version>
</dependency>

在 application.yml 中配置

alipay:
  appId: your-app-id
  appPrivateKey: your-private-key
  alipayPublicKey: your-alipay-public-key
  notifyUrl: http://your-domain.com/alipay/notify

封裝配置類

//src/main/java/com/icoderoad/config/AliPayConfig.java
package com.icoderoad.config;


import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;


@Data
@Component
@ConfigurationProperties(prefix = "alipay")
public class AliPayConfig {
    private String appId;
    private String appPrivateKey;
    private String alipayPublicKey;
    private String notifyUrl;
}

支付接口開發(fā)

//src/main/java/com/icoderoad/controller/AliPayController.java
package com.icoderoad.controller;


import com.alibaba.fastjson.JSONObject;
import com.alipay.api.*;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.icoderoad.config.AliPayConfig;
import com.icoderoad.entity.AliPay;
import com.icoderoad.mapper.OrdersMapper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;


@RestController
public class AliPayController {


    private static final String GATEWAY_URL = "https://openapi.alipaydev.com/gateway.do";
    private static final String FORMAT = "JSON";
    private static final String CHARSET = "UTF-8";
    private static final String SIGN_TYPE = "RSA2";


    @Resource
    private AliPayConfig aliPayConfig;


    @Resource
    private OrdersMapper ordersMapper;


    @GetMapping("/pay")
    public void pay(AliPay aliPay, HttpServletResponse httpResponse) throws Exception {
        // 1. 創(chuàng)建客戶端
        AlipayClient alipayClient = new DefaultAlipayClient(
                GATEWAY_URL,
                aliPayConfig.getAppId(),
                aliPayConfig.getAppPrivateKey(),
                FORMAT,
                CHARSET,
                aliPayConfig.getAlipayPublicKey(),
                SIGN_TYPE
        );


        // 2. 創(chuàng)建支付請(qǐng)求
        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
        request.setNotifyUrl(aliPayConfig.getNotifyUrl());


        JSONObject bizContent = new JSONObject();
        bizContent.put("out_trade_no", aliPay.getTraceNo());
        bizContent.put("total_amount", aliPay.getTotalAmount());
        bizContent.put("subject", aliPay.getSubject());
        bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY");
        request.setBizContent(bizContent.toString());


        // 3. 執(zhí)行請(qǐng)求并返回表單
        String form = alipayClient.pageExecute(request).getBody();
        httpResponse.setContentType("text/html;charset=" + CHARSET);
        httpResponse.getWriter().write(form);
        httpResponse.getWriter().flush();
        httpResponse.getWriter().close();
    }
}

異步回調(diào)處理

支付寶異步回調(diào)必須使用 公網(wǎng)地址,本地調(diào)試可借助 natapp 內(nèi)網(wǎng)穿透

@PostMapping("/notify")
public String payNotify(HttpServletRequest request) throws Exception {
    if ("TRADE_SUCCESS".equals(request.getParameter("trade_status"))) {
        Map<String, String> params = new HashMap<>();
        request.getParameterMap().forEach((name, values) -> params.put(name, values[0]));


        String sign = params.get("sign");
        String content = AlipaySignature.getSignCheckContentV1(params);


        boolean checkSignature = AlipaySignature.rsa256CheckContent(
                content,
                sign,
                aliPayConfig.getAlipayPublicKey(),
                "UTF-8"
        );


        if (checkSignature) {
            ordersMapper.updateState(params.get("out_trade_no"),
                    "已支付",
                    params.get("gmt_payment"),
                    params.get("trade_no"));
        }
    }
    return "success";
}

退款流程

退款流程與支付類似:

  1. 創(chuàng)建 AlipayClient
  2. 創(chuàng)建 AlipayTradeRefundRequest 并設(shè)置參數(shù);
  3. 執(zhí)行請(qǐng)求,根據(jù) isSuccess 判斷結(jié)果;
  4. 成功則更新數(shù)據(jù)庫(kù)狀態(tài)。

退款接口完整代碼

package com.icoderoad.controller;


import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.DateUnit;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.*;
import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.response.AlipayTradeRefundResponse;
import com.icoderoad.config.AliPayConfig;
import com.icoderoad.entity.AliPay;
import com.icoderoad.entity.Orders;
import com.icoderoad.mapper.OrdersMapper;
import com.icoderoad.result.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


import javax.annotation.Resource;


@RestController
public class RefundController {


    private static final String GATEWAY_URL = "https://openapi.alipaydev.com/gateway.do";
    private static final String FORMAT = "JSON";
    private static final String CHARSET = "UTF-8";
    private static final String SIGN_TYPE = "RSA2";


    @Resource
    private AliPayConfig aliPayConfig;


    @Resource
    private OrdersMapper ordersMapper;


    @GetMapping("/return")
    public Result returnPay(AliPay aliPay) throws AlipayApiException {
        String now = DateUtil.now();
        Orders orders = ordersMapper.getByNo(aliPay.getTraceNo());
        if (orders != null) {
            long between = DateUtil.between(DateUtil.parseDateTime(orders.getPaymentTime()),
                    DateUtil.parseDateTime(now), DateUnit.DAY);
            if (between > 7) {
                return Result.error("-1", "該訂單已超過7天,不支持退款");
            }
        }


        AlipayClient alipayClient = new DefaultAlipayClient(
                GATEWAY_URL,
                aliPayConfig.getAppId(),
                aliPayConfig.getAppPrivateKey(),
                FORMAT,
                CHARSET,
                aliPayConfig.getAlipayPublicKey(),
                SIGN_TYPE
        );


        AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
        JSONObject bizContent = new JSONObject();
        bizContent.put("trade_no", aliPay.getAlipayTraceNo());
        bizContent.put("refund_amount", aliPay.getTotalAmount());
        bizContent.put("out_request_no", aliPay.getTraceNo());
        request.setBizContent(bizContent.toString());


        AlipayTradeRefundResponse response = alipayClient.execute(request);
        if (response.isSuccess()) {
            ordersMapper.updatePayState(aliPay.getTraceNo(), "已退款", now);
            return Result.success();
        } else {
            return Result.error(response.getCode(), response.getBody());
        }
    }
}

核心邏輯就是 使用支付寶回調(diào)訂單號(hào)與金額完成退款

未支付訂單的自動(dòng)取消(消息隊(duì)列)

為了避免用戶下單后長(zhǎng)時(shí)間不支付,系統(tǒng)需要自動(dòng)取消訂單。

我們使用 RabbitMQ 延遲隊(duì)列 來實(shí)現(xiàn):

  1. 下單時(shí)投遞一條延時(shí)消息(30 分鐘);
  2. 若超時(shí)未消費(fèi),該消息進(jìn)入死信隊(duì)列;
  3. 消費(fèi)死信消息時(shí),查詢訂單支付狀態(tài);
  • 若仍未支付,則更新訂單為“已超時(shí)”;
  • 若已支付,則丟棄消息。

這種方式具有 高效、可擴(kuò)展 的優(yōu)勢(shì),但依賴 RabbitMQ 運(yùn)維,增加了一定的系統(tǒng)復(fù)雜度。

RabbitMQ 配置類

//src/main/java/com/icoderoad/config/RabbitConfig.java
package com.icoderoad.config;


import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class RabbitConfig {


    public static final String ORDER_DELAY_QUEUE = "order.delay.queue";
    public static final String ORDER_DELAY_EXCHANGE = "order.delay.exchange";
    public static final String ORDER_ROUTING_KEY = "order.delay.routingkey";


    public static final String ORDER_DEAD_QUEUE = "order.dead.queue";
    public static final String ORDER_DEAD_EXCHANGE = "order.dead.exchange";
    public static final String ORDER_DEAD_ROUTING_KEY = "order.dead.routingkey";


    @Bean
    public DirectExchange orderDelayExchange() {
        return new DirectExchange(ORDER_DELAY_EXCHANGE);
    }


    @Bean
    public DirectExchange orderDeadExchange() {
        return new DirectExchange(ORDER_DEAD_EXCHANGE);
    }


    @Bean
    public Queue orderDelayQueue() {
        return QueueBuilder.durable(ORDER_DELAY_QUEUE)
                .withArgument("x-dead-letter-exchange", ORDER_DEAD_EXCHANGE)
                .withArgument("x-dead-letter-routing-key", ORDER_DEAD_ROUTING_KEY)
                .withArgument("x-message-ttl", 1800000) // 30分鐘
                .build();
    }


    @Bean
    public Queue orderDeadQueue() {
        return QueueBuilder.durable(ORDER_DEAD_QUEUE).build();
    }


    @Bean
    public Binding orderDelayBinding() {
        return BindingBuilder.bind(orderDelayQueue()).to(orderDelayExchange()).with(ORDER_ROUTING_KEY);
    }


    @Bean
    public Binding orderDeadBinding() {
        return BindingBuilder.bind(orderDeadQueue()).to(orderDeadExchange()).with(ORDER_DEAD_ROUTING_KEY);
    }
}

死信隊(duì)列消費(fèi)者

//src/main/java/com/icoderoad/consumer/OrderDeadConsumer.java
package com.icoderoad.consumer;


import com.icoderoad.mapper.OrdersMapper;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;


import javax.annotation.Resource;


import static com.icoderoad.config.RabbitConfig.ORDER_DEAD_QUEUE;


@Component
public class OrderDeadConsumer {


    @Resource
    private OrdersMapper ordersMapper;


    @RabbitListener(queues = ORDER_DEAD_QUEUE)
    public void handleDeadMessage(String orderNo) {
        String state = ordersMapper.getStateByNo(orderNo);
        if ("待支付".equals(state)) {
            ordersMapper.updateState(orderNo, "已超時(shí)", null, null);
            System.out.println("訂單超時(shí)未支付,已自動(dòng)取消: " + orderNo);
        }
    }
}

結(jié)論

通過以上完整的流程,我們實(shí)現(xiàn)了一個(gè) 可落地、穩(wěn)定、支持支付/回調(diào)/退款/超時(shí)取消 的支付寶支付模塊:

  • 前端沙箱環(huán)境幫助我們快速調(diào)試;
  • Spring Boot 配合支付寶 SDK 打通了支付鏈路;
  • 異步回調(diào)保障交易狀態(tài)的準(zhǔn)確性;
  • RabbitMQ 延遲隊(duì)列確保未支付訂單能夠自動(dòng)取消。

支付寶支付集成并不復(fù)雜,但細(xì)節(jié)環(huán)環(huán)相扣,稍有遺漏就可能導(dǎo)致異常。希望本文能幫你在項(xiàng)目中快速構(gòu)建一套可靠的支付體系,少走彎路! 

責(zé)任編輯:武曉燕 來源: 路條編程
相關(guān)推薦

2025-09-25 09:31:53

2021-09-09 15:30:28

鴻蒙HarmonyOS應(yīng)用

2025-02-17 00:00:45

接口支付寶沙箱

2021-01-25 14:13:26

iOS支付寶支付

2025-02-18 16:00:00

SpringBoot支付Java

2014-11-17 10:52:56

支付寶去阿里化

2024-02-28 08:59:47

2011-04-21 11:27:42

Firefox支付寶

2009-09-17 12:15:28

互聯(lián)網(wǎng)

2009-08-26 16:07:09

支付寶網(wǎng)上購(gòu)物安全邁克菲

2013-10-11 09:41:01

Windows 8.1支付寶

2023-11-28 08:53:15

2018-03-27 12:02:31

央行支付寶紅包

2011-10-15 23:24:48

Java

2013-10-31 11:24:53

支付寶漏洞支付寶漏洞

2017-12-18 18:23:09

支付寶掃碼賺錢支付寶套路

2009-12-14 16:31:00

Linux安裝支付寶

2009-11-23 10:02:22

PHP支付寶接口

2021-12-29 21:36:12

微信支付寶移動(dòng)支付

2021-11-30 07:31:42

微信支付寶付款
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

免费视频成人| 黄色免费在线播放| 亚洲午夜91| 亚洲美女福利视频网站| 北条麻妃在线视频| 天堂资源在线中文| 丁香六月综合激情| 国产成人综合精品在线| 国产午夜精品理论片| 精品一区二区男人吃奶| 在线观看视频91| 一级特黄妇女高潮| 免费在线高清av| 国产一区二区女| 国产不卡在线观看| 久草国产在线观看| 色喇叭免费久久综合| 亚洲精品97久久| 极品粉嫩美女露脸啪啪| 色在线免费观看| 亚洲精品成人精品456| 欧美伦理一区二区| 亚洲精品久久久久avwww潮水| 久久精品午夜| 欧美高跟鞋交xxxxhd| 李宗瑞91在线正在播放| 91精品久久久久久综合五月天 | 精品国产网站在线观看| 日本www.色| 欧美aaaaa性bbbbb小妇| 亚洲精品写真福利| 亚洲日本一区二区三区在线不卡| 污视频网站免费观看| 国产在线精品一区二区三区不卡| 国产精品999999| 奇米影视第四色777| 女主播福利一区| www.xxxx精品| 亚洲一二三精品| 国产99精品| 日韩激情视频在线| 国产a级黄色片| 91成人在线精品视频| 91精品国模一区二区三区| 尤蜜粉嫩av国产一区二区三区| 岛国av免费在线观看| 综合分类小说区另类春色亚洲小说欧美 | 成人99免费视频| 114国产精品久久免费观看| 中文字幕人妻丝袜乱一区三区| 久久深夜福利| 秋霞av国产精品一区| 日韩精品――中文字幕| 亚洲二区精品| 久久理论片午夜琪琪电影网| 久久免费少妇高潮99精品| 欧美精品色网| 欧美激情欧美激情在线五月| 精品无码av在线| 精品96久久久久久中文字幕无| 欧美福利小视频| www.99re7.com| 中日韩男男gay无套| 97在线日本国产| 特级做a爱片免费69| 麻豆成人在线| 国产精品对白刺激| 夜夜嗨av禁果av粉嫩avhd| 另类小说欧美激情| 91免费综合在线| 精品人妻午夜一区二区三区四区| 国产成人精品亚洲日本在线桃色 | 一区二区美女| 亚洲色图校园春色| ass极品国模人体欣赏| 99精品电影| 色在人av网站天堂精品| 国产精品 欧美 日韩| 99在线|亚洲一区二区| 国产91色在线免费| 在线视频 中文字幕| 国产一区激情在线| 国产欧美综合精品一区二区| 男人天堂网在线| 国产精品免费久久| 欧美a级免费视频| 性欧美18~19sex高清播放| 色婷婷亚洲综合| 黄色一级片免费的| 福利片在线一区二区| 亚洲男人7777| 人妻人人澡人人添人人爽| 极品av少妇一区二区| 国产成人在线亚洲欧美| 国产人妖一区二区三区| 91色婷婷久久久久合中文| 亚洲精品一区二区三区四区五区| 在线免费观看a视频| 欧美性猛交99久久久久99按摩| 日韩免费毛片视频| 成人97精品毛片免费看| 日韩精品高清在线| 一区二区三区在线观看免费视频| 一二三区不卡| 69精品小视频| 国产特级黄色片| 久久精品视频免费观看| 亚洲av首页在线| 蜜桃精品在线| 欧美变态tickle挠乳网站| 日本少妇xxxxx| 在线成人h网| 成人性生交大片免费看小说| 欧美另类自拍| 亚洲国产精品久久久男人的天堂| 国产又黄又猛又粗| 天天躁日日躁狠狠躁欧美| www.欧美精品一二三区| 日本高清不卡码| 成人美女视频在线看| 中文字幕一区二区三区四区五区六区 | 亚洲一级二级在线| 国产美女18xxxx免费视频| 亚洲女娇小黑人粗硬| 欧美美女15p| 国产女优在线播放| 久久午夜羞羞影院免费观看| 91制片厂免费观看| 国产精品videossex撒尿| 日韩av中文字幕在线播放| 2021亚洲天堂| 国产一区二区三区免费在线观看| 先锋影音一区二区三区| 亚洲精品福利电影| 亚洲精品狠狠操| 国产污视频在线观看| 国产成a人亚洲精| 最新视频 - x88av| 四虎影视国产精品| 色黄久久久久久| 中文字幕久久久久| 国产亲近乱来精品视频| 国产成人无码av在线播放dvd| 白嫩白嫩国产精品| 欧美激情女人20p| 丰满人妻熟女aⅴ一区| 亚洲免费成人av| 乳色吐息在线观看| 欧美二区不卡| αv一区二区三区| 丰满诱人av在线播放| 日韩精品一区二区三区中文精品| 日本老熟俱乐部h0930| 韩国av一区二区三区| 一级黄色免费在线观看| 国产精品视频一区二区三区| 美日韩精品视频免费看| 国产高清免费观看| 亚洲在线免费播放| 性色av蜜臀av浪潮av老女人| 在线综合视频| 青青草久久网络| 国产精品久久久久久久久久齐齐| 中文字幕精品—区二区| 一级做a爰片久久毛片16| 亚洲色图欧美偷拍| 99国产精品免费视频| 欧美福利一区| 精品无人区一区二区三区| 久久人体大尺度| 色哟哟入口国产精品| 99riav国产| 亚洲成人免费影院| 欧美多人猛交狂配| 日韩黄色一级片| 男女啪啪的视频| 成人av婷婷| 国产成人精品视频| av网站在线看| 日韩精品一二三四区| 日韩欧美国产另类| 亚洲嫩草精品久久| 国产高清自拍视频| 蜜桃精品在线观看| 久久久久久久久久伊人| 亚洲+小说+欧美+激情+另类 | 18禁免费无码无遮挡不卡网站| 久久最新网址| 亚洲自拍在线观看| 澳门成人av网| 欧美成人一区在线| 久久精品a一级国产免视看成人 | 三区视频在线观看| 亚洲免费黄色| 在线不卡视频一区二区| 精品在线网站观看| 国产在线精品自拍| 成年男女免费视频网站不卡| 在线日韩精品视频| 成人免费视频国产免费麻豆| 欧美视频第二页| 国产真实乱人偷精品视频| 中文av一区特黄| 李丽珍裸体午夜理伦片| 寂寞少妇一区二区三区| 国产黄色一级网站| 在线观看国产精品入口| 日本精品二区| 加勒比视频一区| 亚洲a成v人在线观看| 色婷婷综合久久久中字幕精品久久| 欧美成人午夜影院| 成在在线免费视频| 日韩精品极品视频| 午夜精品久久久久久久99| 欧美午夜精品理论片a级按摩| 日本天堂在线视频| 亚洲精品中文在线观看| 日本高清黄色片| wwwwww.欧美系列| 久久精品aⅴ无码中文字字幕重口| 蜜乳av一区二区三区| 国产xxxxx在线观看| 在线欧美福利| 国产精品国三级国产av| 欧美好骚综合网| 亚洲国产欧美不卡在线观看| 性欧美lx╳lx╳| 国产精品一区二区三区在线观| 天堂久久一区| 国产伦精品一区二区三区精品视频| 欧美男男tv网站在线播放| 色综合久久久久久中文网| 亚洲视频tv| 自拍偷拍亚洲在线| 阿v免费在线观看| 夜夜躁日日躁狠狠久久88av | 国产欧美日产一区| 国产色视频一区二区三区qq号| jvid福利写真一区二区三区| 日本中文字幕精品| 国产1区2区3区精品美女| 伦伦影院午夜理论片| 国产自产2019最新不卡| 在线免费黄色网| 国产乱一区二区| wwwxxx色| eeuss影院一区二区三区| 亚洲午夜久久久久久久久| 成人污视频在线观看| 国产精品成人免费一区久久羞羞| 国产精品白丝av| 九色91porny| 国产.精品.日韩.另类.中文.在线.播放| www.com污| 国产精品亚洲综合一区在线观看| 91大神免费观看| 国产不卡一区视频| 亚洲一区二区在线免费| 91蝌蚪porny九色| 日韩精品无码一区二区三区久久久| 久久久不卡网国产精品二区| 亚洲а∨天堂久久精品2021| 国产精品久久夜| 日韩女优一区二区| 亚洲国产欧美日韩另类综合| 97人人澡人人爽人人模亚洲 | wwwxxx黄色片| 日本亚洲最大的色成网站www| jizz18女人| 国产精品18久久久久久久久| 9.1在线观看免费| 91麻豆免费看| 久久日免费视频| 亚洲免费看黄网站| 日本五十路女优| 在线观看亚洲精品视频| 一区不卡在线观看| 精品久久国产字幕高潮| 色哟哟在线观看| 日韩最新免费不卡| hd国产人妖ts另类视频| 国产不卡在线观看| 日韩一级淫片| 欧美日本国产精品| 午夜精品视频一区二区三区在线看| 免费日韩在线观看| 亚洲欧美视频| 91插插插影院| 久久一区二区三区四区| 免费在线观看a级片| 性做久久久久久| 免费在线观看成人av| 欧美激情国产日韩精品一区18| 污片视频在线免费观看| 午夜精品一区二区三区视频免费看| 性欧美超级视频| 亚洲bt欧美bt日本bt| 91丨九色丨蝌蚪丨对白| 日韩成人18| 亚洲国产欧美一区二区丝袜黑人 | 亚洲九九在线| 三上悠亚久久精品| 美女爽到高潮91| 国产+高潮+白浆+无码| 国产精品天干天干在线综合| 亚洲精品在线观看av| 欧美日韩成人综合天天影院 | 国产精品久久久亚洲一区| 日本肉体xxxx裸体xxx免费| 懂色av噜噜一区二区三区av| 黄色国产在线播放| 精品久久久久久亚洲国产300| 亚洲综合网av| 亚洲人成网站999久久久综合| 日本成人不卡| 国产精品视频自在线| 神马久久影院| 99在线观看视频免费| 久久se精品一区精品二区| 少妇毛片一区二区三区| 亚洲影视在线观看| 国产精品久久久国产盗摄| 亚洲色图美腿丝袜| 小草在线视频免费播放| 国产精品18毛片一区二区| 99久久综合| 精品日韩久久久| 久久精品男人天堂av| 五月婷婷亚洲综合| 日韩精品在线看片z| av片在线观看网站| 91精品啪aⅴ在线观看国产| 精品日产免费二区日产免费二区| 91精品91久久久中77777老牛| 成人少妇影院yyyy| 麻豆chinese极品少妇| 欧美一区二区国产| 黄色成人影院| 成人国产精品免费视频 | 精品成在人线av无码免费看| 国产精品影音先锋| 疯狂试爱三2浴室激情视频| 欧美日韩久久不卡| 在线免费观看黄色网址| 国产精品久久久久久超碰| 一本色道久久综合狠狠躁的番外| 欧美一级在线看| 91免费视频观看| 台湾佬中文在线| 亚洲毛片在线看| 日韩一区二区三区免费| 日韩福利一区二区三区| 日本亚洲欧美天堂免费| 激情五月深爱五月| 欧美日韩三级视频| 美女国产在线| 亚洲精品欧美日韩专区| 欧美va亚洲va日韩∨a综合色| a级大片免费看| 亚洲一二三级电影| 少妇高潮久久久| 日韩av电影手机在线| heyzo久久| 亚洲人视频在线| 亚洲欧美色图小说| 肥臀熟女一区二区三区| 91国语精品自产拍在线观看性色| 欧美黑白配在线| www.欧美日本| 亚洲视频在线一区观看| 丰满少妇一级片| 国产91免费观看| 99国内精品久久久久久久| 亚洲国产精品第一页| 日韩欧美精品免费在线| 神马精品久久| 国产有码一区二区| 一区在线播放| 夫妇交换中文字幕| 日韩情涩欧美日韩视频| 国产在线美女| 亚洲巨乳在线观看| 丁香婷婷深情五月亚洲| 国产主播第一页| 欧美久久精品一级黑人c片| 欧美a一欧美| 天天干天天玩天天操| 亚洲国产精品综合小说图片区| 毛片在线能看| 97视频热人人精品| 久久免费黄色| 九九热精彩视频| 中文字幕精品一区二区精品| 成人爽a毛片| 爱情岛论坛亚洲首页入口章节| 亚洲一区免费在线观看| 国产高清在线| 国产欧美一区二区三区不卡高清| 美女免费视频一区|