精品欧美一区二区三区在线观看 _久久久久国色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)

精品一区二区三区日本| 久久精品免费播放| av动漫在线看| 国产51人人成人人人人爽色哟哟 | 91麻豆国产在线观看| 日本精品久久久久影院| 91高清免费看| 欧洲亚洲视频| 欧美日韩国产高清一区二区三区| 日本免费成人网| 国产二区视频在线观看| 国产河南妇女毛片精品久久久| 91精品国产高清久久久久久久久 | 一区二区三区四区日韩| 精品噜噜噜噜久久久久久久久试看| 无码aⅴ精品一区二区三区浪潮 | 97超碰国产精品女人人人爽| 成人性视频免费看| 日韩高清影视在线观看| 91麻豆精品国产自产在线| 国产免费毛卡片| www.久久久久.com| 国产欧美日韩在线| 国产98在线|日韩| 国产一区二区三区黄片| 国产亚洲一级| 久久久亚洲国产| 成人在线观看免费完整| 欧美精品第一区| 日韩av网站导航| 黑森林av导航| 国产成人免费视频网站视频社区| 91久久精品日日躁夜夜躁欧美| 久久久久久免费看| av毛片在线免费看| 国产精品久久久久aaaa樱花| 欧美视频1区| 天堂√在线中文官网在线| 国产老女人精品毛片久久| 国产精品视频一区二区三区四| 国产午夜免费福利| 韩国av一区| 欧美成人免费大片| www欧美com| 欧美a级片视频| 色综久久综合桃花网| 亚洲第一综合网| 欧美变态挠脚心| 亚洲国产精品视频在线观看| 国产又黄又嫩又滑又白| 日本在线成人| 欧美一区二区视频网站| 一级黄色高清视频| 亚洲二区av| 91精品国产日韩91久久久久久| 亚洲另类第一页| 日韩电影精品| 欧美美女视频在线观看| 精品综合久久久久| 97久久中文字幕| 欧美一区欧美二区| 欧美一级片在线免费观看| 警花av一区二区三区| 日韩一级视频免费观看在线| 久久出品必属精品| 中文字幕区一区二区三| 亚洲国产成人精品久久久国产成人一区 | а√天堂中文在线资源8| 亚洲成人资源在线| 日韩欧美一区三区| 精品欧美一区二区三区在线观看 | 亚洲av无码专区在线播放中文| 超碰成人在线观看| 亚洲国产精品va在线看黑人| 欧美深性狂猛ⅹxxx深喉| 网友自拍区视频精品| 亚洲欧洲午夜一线一品| 天堂网av2018| 欧美视频福利| 91精品国产高清自在线看超| 亚洲黄网在线观看| 久久se精品一区二区| 99精彩视频在线观看免费| 婷婷五月综合久久中文字幕| 久久九九久久九九| 亚洲综合激情五月| 超碰中文在线| 欧美视频一区二区| 麻豆av免费看| 久久最新网址| 欧美大胆在线视频| 精品国产一区二区三区四| 免费观看在线色综合| 91久久爱成人| 欧美xxx.com| 亚洲男人的天堂网| 97国产精东麻豆人妻电影| 国产精品久久久久久久久久齐齐| 欧美一区二区日韩一区二区| 亚洲av无码成人精品国产| 欧美成人激情| 高清欧美性猛交xxxx黑人猛交| 无码人妻精品一区二| 国产精品一区不卡| 欧美日韩国产精品一卡| 日本色护士高潮视频在线观看| 色中色一区二区| 深爱五月综合网| 欧美**字幕| 国内精品中文字幕| 91麻豆成人精品国产| 99re这里只有精品视频首页| 欧美日韩一级在线| 日韩欧美看国产| 精品久久久久久久一区二区蜜臀| 欧美激情 一区| 激情亚洲成人| 91久久嫩草影院一区二区| 嫩草研究院在线| 亚洲sss视频在线视频| 国产乱女淫av麻豆国产| 国产欧美亚洲精品a| 欧美激情性做爰免费视频| 亚洲在线免费观看视频| 国产亚洲人成网站| 动漫av网站免费观看| 亚洲乱码一区| 日韩中文在线中文网在线观看| 国产无遮挡呻吟娇喘视频| 福利电影一区二区三区| 超碰免费在线公开| 九九九伊在线综合永久| 亚洲免费视频在线观看| 日本天堂在线视频| 处破女av一区二区| wwwjizzjizzcom| 欧美综合影院| 久久精品2019中文字幕| 羞羞色院91蜜桃| 国产午夜精品一区二区三区视频| 女性女同性aⅴ免费观女性恋| 国产精品chinese在线观看| 欧美乱妇高清无乱码| 国产精品福利电影| 亚洲欧洲无码一区二区三区| 天堂社区在线视频| 欧美久久精品一级c片| 国产精品扒开腿做爽爽爽视频 | 欧美精品videossex88| 国产精品无码久久av| 国产精品成人在线观看| 午夜免费福利视频在线观看| 欧美第十八页| 91精品久久久久久久久中文字幕| 中文日本在线观看| 欧美日韩国产免费一区二区| 国产传媒视频在线| 久久国产生活片100| 中文字幕av日韩精品| 四虎精品在线观看| 伦理中文字幕亚洲| 性欧美8khd高清极品| 亚洲3atv精品一区二区三区| 国产福利在线观看视频| 日韩精品一级二级 | 亚洲r级在线观看| 天堂亚洲精品| 精品国产亚洲一区二区三区在线观看| 国产香蕉在线视频| 91亚洲永久精品| www.日本xxxx| 亚洲精品二区三区| 国产免费一区| 日本久久免费| 久久亚洲国产成人| 国产91免费在线观看| 欧美色另类天堂2015| 一级黄色片网址| 激情综合色播激情啊| 成人免费视频91| av影片在线一区| 亚洲精品欧美一区二区三区| 超级白嫩亚洲国产第一| 亚洲视频日韩精品| a级片免费观看| 欧美三级免费观看| 卡通动漫亚洲综合| 91在线精品秘密一区二区| 中文字幕天天干| 欧美三区在线| 日本一区高清在线视频| 日韩精品成人| 日本精品免费一区二区三区| 久cao在线| 国产视频亚洲精品| va视频在线观看| 色噜噜狠狠成人中文综合| 国产一区二区视频在线观看免费| 久久男人中文字幕资源站| 午夜影院免费观看视频| 亚洲一卡久久| 欧美激情亚洲天堂| 成人高清电影网站| 国产精品免费看一区二区三区| 成人在线免费av| 91精品国产高清自在线| 动漫一区在线| 国产一区二区三区毛片| 女人18毛片水真多18精品| 欧美狂野另类xxxxoooo| 成年人av网站| 精品久久久久久久久久久久久| 天天色天天综合| 久久精品视频免费观看| 国产艳妇疯狂做爰视频| 狠狠久久亚洲欧美| 欧美激情国产精品日韩| 亚洲青涩在线| 无码人妻aⅴ一区二区三区日本| 国产日韩欧美一区二区三区| 国产精品亚洲不卡a| 国产日韩中文在线中文字幕| 国产精品一二三视频| 在线人成日本视频| 久久久久国产精品www| 成人福利网站| 日韩一区视频在线| 成人在线免费电影| 亚洲欧洲黄色网| 污污网站在线免费观看| 精品国产在天天线2019| 精品国产伦一区二区三| 4438x成人网最大色成网站| 久久国产香蕉视频| 欧美中文字幕一区二区三区亚洲| 天天综合网久久综合网| 精品久久久久久国产| 国产精品suv一区二区| 亚洲影院在线观看| 欧美电影免费观看网站| 日韩欧美在线一区二区三区| 在线观看视频中文字幕| 在线观看日产精品| 欧美一级黄视频| 91黄色免费版| 波多野结衣家庭主妇| 91久久精品午夜一区二区| 国产免费一区二区三区四区五区| 色综合久久88色综合天天| 神马久久久久久久| 在线日韩一区二区| 亚洲免费视频二区| 欧美日韩性生活| 91亚洲国产成人精品一区| 在线不卡中文字幕播放| 国产男男gay网站| 日韩三级高清在线| 可以免费观看的毛片| 亚洲高清av在线| 欧美挠脚心网站| 国产一区二区美女视频| 免费av网站在线看| 久久91亚洲人成电影网站| www欧美xxxx| 91sao在线观看国产| 日韩高清在线| 91情侣在线视频| 麻豆一区二区| 日韩欧美一区二区三区久久婷婷| 欧美激情电影| 国产精品视频一二三四区| 亚洲日本免费| 九热视频在线观看| 国产麻豆精品95视频| 国产性生活毛片| 日本一区二区免费在线 | 国产伦精品一区二区三区千人斩| 亚洲国产精品综合| 国产精品a久久久久| 水蜜桃色314在线观看| 免费在线观看不卡| 人妻互换一二三区激情视频| 久久综合久久综合九色| 99久久久无码国产精品不卡| 夜夜精品视频一区二区 | 免费黄色激情视频| 亚洲国产精品麻豆| 中文永久免费观看| 日韩精品影音先锋| av影片在线看| 久久久久久国产免费| 福利一区二区免费视频| 国产女主播一区二区| 欧美电影一区| 免费在线激情视频| 国产在线精品一区在线观看麻豆| 中文在线永久免费观看| 国产精品久久看| 男人的天堂一区二区| 67194成人在线观看| 国产又爽又黄网站亚洲视频123| 裸体女人亚洲精品一区| 欧美性理论片在线观看片免费| 99re在线观看视频| 精品美女视频| 欧美国产激情视频| 国产成人免费网站| 懂色av粉嫩av蜜臀av一区二区三区| 精品久久久久久久久久国产| www.97av| 俺去了亚洲欧美日韩| 神马电影网我不卡| 国产精品视频在线免费观看| 天天操综合网| 韩国中文字幕av| 26uuu精品一区二区在线观看| 加勒比av在线播放| 欧美精品 国产精品| 国产资源在线播放| 日韩av不卡电影| 国产一区在线电影| 男女裸体影院高潮| 国产中文字幕精品| 任我爽在线视频| 欧美日韩一区二区在线观看视频 | 国产精品沙发午睡系列| 国产成人丝袜美腿| 青青草免费av| 日韩一区二区三区电影在线观看| 午夜激情视频在线观看| 国产精品久久久久久久久久小说| 香蕉久久精品日日躁夜夜躁| 拔插拔插海外华人免费| 成人免费毛片高清视频| 国产一级做a爰片在线看免费| 欧美一级欧美三级在线观看| 国产午夜精品久久久久免费视| 国产中文字幕91| 爽成人777777婷婷| 潘金莲激情呻吟欲求不满视频| 国产精品日韩成人| 亚洲天堂久久久久| 精品国产一区二区三区四区在线观看| 国产精品伦一区二区| 一区二区三区免费看| 麻豆一区二区99久久久久| 美国精品一区二区| 7777精品伊人久久久大香线蕉超级流畅| 1pondo在线播放免费| 国产精品网站大全| 一个色综合网| 午夜影院福利社| 精品久久久久久中文字幕一区奶水 | 亚洲电影天堂av| 国产在线看片免费视频在线观看| 黑人中文字幕一区二区三区| 亚洲综合精品| 日韩女同一区二区三区| 欧美日韩日本视频| 韩国中文字幕在线| 丁香婷婷久久久综合精品国产| 亚洲经典三级| 色婷婷在线影院| 欧美日韩国产首页| 18视频在线观看| 激情小说综合区| 免费精品视频在线| 美女福利视频在线观看| 亚洲成av人片在线观看香蕉| 欲香欲色天天天综合和网| 四虎一区二区| 国产激情一区二区三区四区 | 成人欧美视频在线| 国产免费成人| 国产精品综合激情| 日韩欧美激情一区| 日本在线啊啊| 一区二区三区四区五区精品| 国产黑丝在线一区二区三区| 欧美国产成人精品一区二区三区| 日韩中文字幕第一页| 好吊妞国产欧美日韩免费观看网站| www.国产区| 亚洲久本草在线中文字幕| 人妻偷人精品一区二区三区| 国产精品9999| 亚洲国产精品第一区二区三区| japanese中文字幕| 日韩丝袜美女视频| 成人欧美大片| 久久精品在线免费视频| 2020国产精品| 亚洲AV无码一区二区三区少妇| 日韩暖暖在线视频| 好吊视频一区二区三区四区| 精品无码国产污污污免费网站| 精品福利av导航| 欧洲亚洲精品| 免费观看精品视频| 亚洲一区中文在线|