国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

支付寶支付整合SpringBoot(沙箱環(huán)境)

這篇具有很好參考價值的文章主要介紹了支付寶支付整合SpringBoot(沙箱環(huán)境)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1.查看沙箱賬號

2.內(nèi)網(wǎng)穿透

3.沙箱環(huán)境整合SpringBoot開發(fā)


下面我將以實際案例詳細(xì)介紹如何使用沙箱環(huán)境進(jìn)行支付寶支付對接的開發(fā)

1.查看沙箱賬號

?首先什么是沙箱賬號?

沙箱賬號是指在支付寶沙箱環(huán)境中創(chuàng)建的測試賬戶,用于模擬真實的支付流程。在開發(fā)和測試過程中,使用沙箱賬號可以避免真實賬戶數(shù)據(jù)的泄露和風(fēng)險,同時可以進(jìn)行多種測試場景和交易模擬,以保證應(yīng)用程序的穩(wěn)定性和可靠性。

支付寶沙箱環(huán)境中的測試賬戶和真實賬戶一樣,可以進(jìn)行支付、退款、查詢等操作。開發(fā)人員可以通過創(chuàng)建和使用沙箱賬號,進(jìn)行多種測試和調(diào)試,以保證應(yīng)用程序的正確性和穩(wěn)定性。同時,沙箱賬號的創(chuàng)建和使用是免費的,不需要任何費用。

需要注意的是,沙箱賬號只能在支付寶沙箱環(huán)境中使用,不能在生產(chǎn)環(huán)境中使用。在將應(yīng)用程序上線之前,需要使用真實賬戶進(jìn)行測試和驗證。

1.登錄支付寶開放平臺:https://open.alipay.com/platform/home.htm

支付寶支付整合SpringBoot(沙箱環(huán)境)?

?2.點擊登錄,系統(tǒng)會彈出一個二維碼進(jìn)行掃描登錄,當(dāng)然也可以使用賬號密碼進(jìn)行登錄

3.點擊進(jìn)入控制臺

支付寶支付整合SpringBoot(沙箱環(huán)境)?

4.開發(fā)工具推薦中選擇使用沙箱環(huán)境

支付寶支付整合SpringBoot(沙箱環(huán)境)?

5.自此完成沙箱賬號信息的查看

支付寶支付整合SpringBoot(沙箱環(huán)境)

2.內(nèi)網(wǎng)穿透

獲取方式:電腦應(yīng)用商店搜索花生殼

網(wǎng)頁端申請配置:

1.需要進(jìn)行實名認(rèn)證否則用不了

2.需要花6元買個域名映射

支付寶支付整合SpringBoot(沙箱環(huán)境)

?3.將ip和端口換成剛剛申請的域名,填入回調(diào)地址處,用于后續(xù)的支付寶系統(tǒng)回調(diào)接口

支付寶支付整合SpringBoot(沙箱環(huán)境)

客戶端:開啟自定義映射

支付寶支付整合SpringBoot(沙箱環(huán)境)

下面將進(jìn)入主題,如何整合SpringBoot進(jìn)行支付開發(fā)

3.沙箱環(huán)境整合SpringBoot開發(fā)

?1.1.創(chuàng)建Spring Boot項目

可以使用Spring Initializr快速創(chuàng)建一個新項目也可以在maven創(chuàng)建的基礎(chǔ)上加上相關(guān)的依賴

如果您是maven創(chuàng)建的項目請加如下依賴:

 <dependencies>
        <!-- Spring Boot starter dependencies -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.5.4</version>
        </dependency>
  </dependencies>

如果是基于Spring Initializr快速創(chuàng)建一個SpringBoot項目則導(dǎo)入如下依賴:

2.導(dǎo)入依賴

 <dependencies>
        <!-- Other dependencies -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.26</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
        </dependency>
        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>3.0.0</version>
        </dependency>
        <!-- Fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.78</version>
        </dependency>
        <!-- slf4j -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.32</version>
        </dependency>

        <!-- JSON -->
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20210307</version>
        </dependency>
    </dependencies>

3.配置應(yīng)用程序

在application.yml文件中,我們需要添加支付寶支付的相關(guān)配置。

# 應(yīng)用ID,您的APPID,收款賬號既是您的APPID對應(yīng)支付寶賬號,在沙箱應(yīng)用中獲取
appId: 
# 商戶私鑰,您的PKCS8格式RSA2私鑰,通過開發(fā)助手生成的應(yīng)用私鑰
privateKey: 
# 支付寶公鑰,在沙箱應(yīng)用獲取,通過應(yīng)用公鑰生成支付寶公鑰
publicKey: 
# 服務(wù)器異步通知頁面路徑需http://格式的完整路徑,不能加?id=123這類自定義參數(shù)
notifyUrl: https://7*****.zicp.fun/alipay/notify
# 頁面跳轉(zhuǎn)同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數(shù)
returnUrl: https://7*****.zicp.fun/alipay/success
# 支付寶網(wǎng)關(guān),在沙箱應(yīng)用中獲取
gatewayUrl: 

?下面就上面的參數(shù)進(jìn)行說明

支付寶支付整合SpringBoot(沙箱環(huán)境)?

所以應(yīng)用ID、應(yīng)用私鑰和支付寶公鑰可以在支付寶開放平臺上獲取。gateway-url是支付寶支付接口的地址,return-url和notify-url是支付完成后跳轉(zhuǎn)的地址和支付結(jié)果通知地址。

4.創(chuàng)建支付服務(wù)

接下來,創(chuàng)建一個支付服務(wù)類,用于處理支付請求和支付結(jié)果通知。在創(chuàng)建支付服務(wù)之前,我要先創(chuàng)建一個AlipayClient對象,用于調(diào)用支付寶支付接口。

@Configuration
public class AlipayConfig {
  //獲取配置文件中的配置信息
    //應(yīng)用ID,您的APPID,收款賬號既是您的APPID對應(yīng)支付寶賬號
    @Value("${appId}")
    private String appId;

    //商戶私鑰 您的PKCS8格式RSA2私鑰
    @Value("${privateKey}")
    private String privateKey;

    //支付寶公鑰
    @Value("${publicKey}")
    private String publicKey;

    //支付寶網(wǎng)關(guān)
    @Value("${gatewayUrl}")
    private String gatewayUrl;

 @Bean
    public AlipayClient alipayClient() {
        return new DefaultAlipayClient(gatewayUrl, appId, privateKey, "json", "UTF-8", publicKey, "RSA2");
    }
}

再創(chuàng)建一個支付服務(wù),用于處理支付請求和支付結(jié)果通知。

@Service
public class AlipayService {
    @Autowired
    private AlipayClient alipayClient;

      //服務(wù)器異步通知頁面路徑
    @Value("${notifyUrl}")
    private String notifyUrl;

    //頁面跳轉(zhuǎn)同步通知頁面路徑
    @Value("${returnUrl}")
    private String returnUrl;

    /**
     * 發(fā)起支付請求
     * @param order 訂單信息
     * @return 支付頁面HTML代碼
     */
    public String pay(Order order) {
        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
        request.setReturnUrl(returnUrl);
        request.setNotifyUrl(notifyUrl);

        Map<String, Object> params = new HashMap<>();
        params.put("out_trade_no", order.getOrderId());
        params.put("total_amount", order.getTotalAmount());
        params.put("subject", order.getSubject());
        params.put("body", order.getBody());
        params.put("product_code", "FAST_INSTANT_TRADE_PAY");

        request.setBizContent(JSON.toJSONString(params));

        try {
            AlipayTradePagePayResponse response = alipayClient.pageExecute(request);
            return response.getBody();
        } catch (AlipayApiException e) {
            throw new RuntimeException("支付寶支付失敗", e);
        }
    }

    /**
     * 處理支付結(jié)果通知
     *
     * @param request 支付結(jié)果通知參數(shù)
     * @return 處理結(jié)果
     */
    public String notify(HttpServletRequest request) throws AlipayApiException {
           log.info("異步回調(diào)");
        Map<String, String> params = new HashMap<String, String>();
        Map<String, String[]> requestParams = request.getParameterMap();
        for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext(); ) {
            String name = iter.next();
            String[] values = requestParams.get(name);
            StringBuilder valueStr = new StringBuilder();
            for (int i = 0; i < values.length; i++) {
                valueStr.append((i == values.length - 1) ? values[i] : values[i] + ",");
            }
            params.put(name, valueStr.toString());
        }

        log.info("請求參數(shù)的傳入:" + params);
        String tradeStatus = params.get("trade_status");
        log.info("tradeStatus:" + tradeStatus);
        String outTradeNo = params.get("out_trade_no");
        log.info("outTradeNo:" + outTradeNo);
        String totalAmount = params.get("total_amount");
        log.info("totalAmount:" + totalAmount);
//
//        // 從數(shù)據(jù)庫中查詢訂單信息
//        Order order = orderService.findByOutTradeNo(outTradeNo);

        // 驗證通知是否來自支付寶服務(wù)器
        if (!AlipaySignature.rsaCheckV1(params, publicKey, charset, signType)) {
            return "fail";
        }

        // 驗證交易狀態(tài)和訂單金額等信息
//            if (!"TRADE_SUCCESS".equals(tradeStatus) || !totalAmount.equals(order.getTotalAmount().toString())) {
        if (!"TRADE_SUCCESS".equals(tradeStatus)) {
            return "fail";
        }

        // 根據(jù)交易狀態(tài)進(jìn)行業(yè)務(wù)處理
        switch (tradeStatus) {
            case "TRADE_SUCCESS":
                // 更新訂單狀態(tài)、發(fā)貨等操作
                break;
            case "TRADE_CLOSED":
                // 訂單關(guān)閉處理
                break;
            default:
                // 其他狀態(tài)處理
                break;
        }

        return "success";
        }

    public String success(HttpServletRequest request) throws AlipayApiException, UnsupportedEncodingException {
        log.info("=================同步回調(diào)======================");
        // 獲取支付寶GET過來反饋信息
        Map<String, String> params = new HashMap<String, String>();
        Map<String, String[]> requestParams = request.getParameterMap();
        for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext(); ) {
            String name = (String) iter.next();
            String[] values = (String[]) requestParams.get(name);
            String valueStr = "";
            for (int i = 0; i < values.length; i++) {
                valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
            }
            // 亂碼解決,這段代碼在出現(xiàn)亂碼時使用
            valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
            params.put(name, valueStr);
        }
        log.info("支付寶平臺同步回調(diào)傳入的參數(shù):" + params);
        //驗證簽名(支付寶公鑰)
        boolean signVerified = AlipaySignature.rsaCheckV1(params, publicKey, charset, signType); // 調(diào)用SDK驗證簽名
        //驗證簽名通過
        if (signVerified) {
            // 商戶訂單號
            String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"), "UTF-8");

            // 支付寶交易流水號
            String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"), "UTF-8");

            // 付款金額
            float money = Float.parseFloat(new String(request.getParameter("total_amount").getBytes("ISO-8859-1"), "UTF-8"));

            log.info("商戶訂單號=" + out_trade_no);
            log.info("支付寶交易號=" + trade_no);
            log.info("付款金額=" + money);

            //在這里編寫自己的業(yè)務(wù)代碼(對數(shù)據(jù)庫的操作)
			/*
			################################
			*/
            //跳轉(zhuǎn)到提示頁面(成功或者失敗的提示頁面)
            return "交易成功!";
        } else {
            //跳轉(zhuǎn)到提示頁面(成功或者失敗的提示頁面)
            return "交易失?。?;
        }
    }
}

在AlipayService類中,我們使用@Autowired注解注入AlipayClient對象,并使用@Value注解注入支付寶支付的相關(guān)配置。

pay方法用于發(fā)起支付請求,首先創(chuàng)建一個AlipayTradePagePayRequest對象,設(shè)置returnUrl和notifyUrl,然后將訂單信息封裝成一個Map對象,調(diào)用alipayClient的pageExecute方法發(fā)起支付請求,并返回支付頁面的HTML代碼。

notify方法用于處理支付結(jié)果通知,首先使用AlipaySignature.rsaCheckV1方法驗證支付結(jié)果通知的簽名,然后根據(jù)支付結(jié)果更新訂單狀態(tài)。

success方法也是如此,但是開發(fā)中用notify異步處理效率更高一些。

?5.5.創(chuàng)建支付控制器

創(chuàng)建一個支付控制器,用于處理支付請求和支付結(jié)果通知。

@Controller
@RequestMapping("/alipay")
public class AlipayController {
    @Autowired
    private AlipayService alipayService;

    /**
     * 發(fā)起支付請求
     * @param order 訂單信息
     * @return 支付頁面HTML代碼
     */
    @RequestMapping("/pay")
    @ResponseBody
    public String pay(Order order) {
        return alipayService.pay(order);
    }

     /**
     * 處理支付結(jié)果通知
     * @param request 支付結(jié)果通知參數(shù)
     * @return 處理結(jié)果
     */
    @PostMapping("/notify")
    @ResponseBody
    public String notify(@RequestParam HttpServletRequest request) throws AlipayApiException {
        return alipayService.notify(request);
    }

    /**
     * 支付完成后跳轉(zhuǎn)回商戶網(wǎng)站的地址
     *
     * @return 跳轉(zhuǎn)頁面
     */
    @RequestMapping("/success")
    @ResponseBody
    public String success(HttpServletRequest request) throws UnsupportedEncodingException, AlipayApiException {
        return alipayService.success(request);
    }
//根據(jù)自己的實際業(yè)務(wù)選擇是同步處理還是異步處理
}

在AlipayController類中,我們使用@Autowired注解注入AlipayService對象,并創(chuàng)建pay、notify和returnUrl三個方法,分別用于處理支付請求、支付結(jié)果通知和支付完成后跳轉(zhuǎn)回商戶網(wǎng)站的地址。?

? ? ? ? 這里需要注意的是,只有當(dāng)方法的返回值類型為voidString時,才需要使用@ResponseBody注解。如果方法的返回值類型為其他類型(如對象、集合等),Spring MVC會自動將其轉(zhuǎn)換為JSON或XML格式的數(shù)據(jù)并返回給客戶端,無需使用@ResponseBody注解。

?6.測試支付功能

現(xiàn)在,我們已經(jīng)完成了支付寶支付的整合,可以通過調(diào)用支付控制器中的pay方法發(fā)起支付請求,并在支付完成后處理支付結(jié)果通知和支付完成后跳轉(zhuǎn)回商戶網(wǎng)站的地址。

可以通過Postman等工具模擬支付請求,或者在網(wǎng)站上添加一個支付按鈕,點擊按鈕后跳轉(zhuǎn)到支付頁面完成支付。

在網(wǎng)站上面添加一個支付按鈕

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/alipay/pay" method="post">
    訂單號:<input type="text" name="out_trade_no" required><br/>
    訂單名稱:<input type="text" name="subject" required><br/>
    付款金額:<input type="text" name="total_amount" required><br/>
    商品描述:<input type="text" name="body"><br/>
    <input type="submit" value="下單"> <input type="reset" value="重置">
</form>

</body>
</html>

瀏覽器地址欄輸入:http://localhost:8081/

支付寶支付整合SpringBoot(沙箱環(huán)境)輸入支付賬號和支付密碼即可完成支付

支付寶支付整合SpringBoot(沙箱環(huán)境)

? ? ? ? ? ? ? ? ? ? ?支付寶沙箱環(huán)境+SpringBoot+內(nèi)網(wǎng)穿透整合開發(fā)完美收官!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 有任何問題隨時私信我!文章來源地址http://www.zghlxwxcb.cn/news/detail-409040.html

到了這里,關(guān)于支付寶支付整合SpringBoot(沙箱環(huán)境)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • SpringBoot+支付寶支付(沙箱)

    SpringBoot+支付寶支付(沙箱)

    easy支付官方文檔: 工具 | 網(wǎng)頁移動應(yīng)用 通用版文檔: 通用版 | 網(wǎng)頁移動應(yīng)用 有基礎(chǔ)的可以直接看文檔自己搭建,官方文檔寫的很詳細(xì)。 支付寶沙箱配置 1、注冊支付寶開發(fā)者賬戶,進(jìn)入開發(fā)者控制臺 (有支付寶賬戶的直接支付寶掃碼登入即可) 支付寶開放平臺 ? htt

    2024年02月06日
    瀏覽(20)
  • 支付寶手機(jī)網(wǎng)站支付接入(沙箱環(huán)境)

    支付寶手機(jī)網(wǎng)站支付接入(沙箱環(huán)境)

    參考阿里云文檔:https://docs.open.alipay.com/203/105285/ 手機(jī)網(wǎng)站支付產(chǎn)品包含兩類API: 頁面跳轉(zhuǎn)類:需要從前端頁面以Form表單的形式發(fā)起請求,瀏覽器會自動跳轉(zhuǎn)至支付寶的相關(guān)頁面(一般是收銀臺或簽約頁面),用戶在該頁面完成相關(guān)業(yè)務(wù)操作后再回跳到商戶指定頁面。例如本

    2024年02月08日
    瀏覽(24)
  • Springboot支付寶沙箱支付---完整詳細(xì)步驟

    Springboot支付寶沙箱支付---完整詳細(xì)步驟

    不經(jīng)??聪⒑驮u論,代碼和數(shù)據(jù)庫已上傳至gitee 項目源碼 沙箱環(huán)境-支付寶文檔中心 1.1、進(jìn)入個人沙箱環(huán)境 點擊進(jìn)入沙箱環(huán)境并用支付寶登陸 沙箱管理界面如圖所示 appid,支付寶網(wǎng)關(guān),自定義密鑰等 這里是沙箱支付寶(虛擬)的賬號和密碼,可以用來支付 1.2、接下來進(jìn)行

    2023年04月25日
    瀏覽(26)
  • SpringBoot集成沙箱支付

    SpringBoot集成沙箱支付

    支付寶沙箱支付( Alipay Sandbox Payment )是支付寶提供的一個模擬支付環(huán)境,用于開發(fā)和測試支付寶支付功能的開發(fā)者工具。在真實的支付寶環(huán)境中進(jìn)行支付開發(fā)和測試可能涉及真實資金和真實用戶賬戶,而沙箱環(huán)境則提供了一個安全、隔離的環(huán)境,使開發(fā)者能夠模擬支付過程

    2024年02月03日
    瀏覽(17)
  • spring boot支付寶沙箱環(huán)境測試支付功能

    spring boot支付寶沙箱環(huán)境測試支付功能

    目錄 一、安裝支付寶支付demo 二、配置demo信息 三、配置回調(diào)地址和異步地址 四、內(nèi)網(wǎng)穿透 (一)簡介 (二)使用場景 (三)內(nèi)網(wǎng)穿透的幾個常用軟件 (四)使用natapp 選擇Java版本,下載后是一個eclipse項目 SDK Demo 獲取 - 支付寶文檔中心 (alipay.com) 導(dǎo)入ideal參考:IDEA導(dǎo)入Ec

    2024年01月17日
    瀏覽(26)
  • 公網(wǎng)環(huán)境調(diào)試本地配置的Java支付寶沙箱環(huán)境模擬支付場景

    公網(wǎng)環(huán)境調(diào)試本地配置的Java支付寶沙箱環(huán)境模擬支付場景

    在沙箱環(huán)境調(diào)試支付SDK的時候,往往沙箱環(huán)境部署在本地,局限性大,在沙箱環(huán)境中有多種支付場景,往往是多人聯(lián)合開發(fā),本地環(huán)境可能無法滿足異地聯(lián)合,所以把本地環(huán)境變成公網(wǎng)環(huán)境下進(jìn)行調(diào)試開發(fā)會更好。 本次教程,我們將使用支付寶平臺提供的沙箱環(huán)境,在本地配

    2024年01月22日
    瀏覽(30)
  • Java集成支付寶沙箱支付,詳細(xì)教程(SpringBoot完整版)

    Java集成支付寶沙箱支付,詳細(xì)教程(SpringBoot完整版)

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 easy支付官方文檔:https://opendocs.alipay.com/open/009ys9 通用版文檔:https://opendocs.alipay.com/open/02np94 支付寶沙箱的配置: 注冊支付寶開發(fā)者賬戶,進(jìn)入開發(fā)者控制臺 沙箱快捷入口: https://open.alipay.com/develop/

    2024年02月20日
    瀏覽(19)
  • Java實現(xiàn)支付寶沙箱環(huán)境支付,SDK接口遠(yuǎn)程調(diào)試

    Java實現(xiàn)支付寶沙箱環(huán)境支付,SDK接口遠(yuǎn)程調(diào)試

    轉(zhuǎn)發(fā)自cpolar內(nèi)網(wǎng)穿透的文章:Java支付寶沙箱環(huán)境支付,SDK接口遠(yuǎn)程調(diào)試【內(nèi)網(wǎng)穿透】 Maven Spring boot Jdk 1.8 獲取支付寶支付Java SDK,maven項目可以選擇maven版本,普通java項目可以在GitHub下載,這里以maven為例 SDK下載地址:https://doc.open.alipay.com/docs/doc.htm?treeId=193articleId=103419docType=1 選擇

    2024年02月06日
    瀏覽(26)
  • Java開發(fā)者必備:支付寶沙箱環(huán)境支付遠(yuǎn)程調(diào)試指南

    Java開發(fā)者必備:支付寶沙箱環(huán)境支付遠(yuǎn)程調(diào)試指南

    ?? 博客主頁 : 小羊失眠啦. ?? 系列專欄 : C語言 、 Linux 、 Cpolar ?? 感謝大家點贊??收藏?評論?? 前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點擊跳轉(zhuǎn)到網(wǎng)站。 在沙箱環(huán)境調(diào)試支付SDK的時候,往往沙箱環(huán)境部署在本地

    2024年02月08日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包