成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Boot 3.4 實現支付寶支付集成,輕松搞定支付功能

開發 開發工具
在本地開發時,我們通常會遇到接口請求的問題:如果外部系統需要調用我們的接口(比如支付寶返回支付結果),那么我們需要一個公網地址來接收這些回調請求。

支付寶支付集成是電商應用中常見的功能之一,今天我們將通過 Spring Boot 3.4 來實現這一功能,包括支付寶沙箱環境配置、內網穿透配置、支付請求參數的設置等步驟,確保你能快速上手并完成支付功能的集成。

支付寶沙箱環境配置

為了進行支付功能的測試,我們需要使用支付寶提供的沙箱環境。這是一個虛擬的支付環境,專門用于測試和調試。訪問沙箱環境:支付寶沙箱 https://openhome.alipay.com/platform/appDaily.htm。使用沙箱時,可以采用默認的密鑰進行測試,我們只需要獲取以下幾個關鍵數據:

  • 支付寶的公鑰和私鑰
  • 支付的網關地址
  • 支付的APP ID

內網穿透配置

在本地開發時,我們通常會遇到接口請求的問題:如果外部系統需要調用我們的接口(比如支付寶返回支付結果),那么我們需要一個公網地址來接收這些回調請求。此時,內網穿透技術便派上了用場,它可以幫助我們將本地服務器暴露到公網。

通過使用如 Ngrok https://ngrok.com/ 或 Natapp https://natapp.cn 等工具,你可以為本地服務配置一個公網地址。免費版通常會提供一個隨機生成的地址,這樣你就能在外網測試接口了。

配置支付寶支付 SDK

在集成支付寶支付前,我們需要引入支付寶的 SDK。以下是添加依賴的 Maven 配置:

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

接下來,我們在 application.yml 文件中配置支付寶相關信息:

server:
  port: 9090

alipay:
  appId: 9021000135634074
  appPrivateKey: <your-app-private-key>
  alipayPublicKey: <your-alipay-public-key>
  notifyUrl: http://v6tqyw.natappfree.cc/alipay/notify

支付請求參數對象

為了創建支付請求,我們需要準備支付訂單的基本信息,如訂單號、金額、商品描述等。這些信息會通過支付寶的 API 發起請求。

定義一個支付請求對象 PayVO

package com.icoderoad.dto;


import java.math.BigDecimal;


@Data
public class PayVO {
    private String outTradeNo; // 商戶訂單號
    private String subject;    // 訂單名稱
    private BigDecimal totalAmount; // 付款金額
    private String body;      // 商品描述
}

支付接口實現

接下來,我們需要通過支付寶 SDK 創建支付客戶端并發送支付請求。以下是實現的關鍵步驟:

package com.icoderoad.controller;


import com.icoderoad.config.AliPayConfig;
import com.icoderoad.dto.PayVO;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.AlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.AlipayApiException;
import com.alipay.api.response.AlipayTradePagePayResponse;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;


import javax.servlet.http.HttpServletResponse;
import java.util.UUID;


@RestController
@RequestMapping("/alipay")
public class AliPayController {


    @Autowired
    private AliPayConfig aliPayConfig;


    private static final String GATEWAY_URL = "https://openapi-sandbox.dl.alipaydev.com/gateway.do";
    private static final String CHARSET = "utf-8";
    private static final String SIGN_TYPE = "RSA2";


    @GetMapping("/pay")
    public void pay(PayVO payVO, HttpServletResponse response) throws Exception {
        // 創建支付客戶端
        AlipayClient alipayClient = new DefaultAlipayClient(
            GATEWAY_URL,
            aliPayConfig.getAppId(),
            aliPayConfig.getAppPrivateKey(),
            "JSON",
            CHARSET,
            aliPayConfig.getAlipayPublicKey(),
            SIGN_TYPE
        );


        // 創建支付請求對象
        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
        request.setNotifyUrl(aliPayConfig.getNotifyUrl());


        // 設置請求參數
        payVO.setOutTradeNo(UUID.randomUUID().toString());
        request.setBizContent("{\"out_trade_no\":\"" + payVO.getOutTradeNo() + "\","
                             + "\"total_amount\":\"" + payVO.getTotalAmount() + "\","
                             + "\"subject\":\"" + payVO.getSubject() + "\","
                             + "\"body\":\"" + payVO.getBody() + "\","
                             + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");


        // 設置回調接口
        request.setReturnUrl("http://localhost:9090/hello/pay");


        // 執行支付請求
        try {
            String form = alipayClient.pageExecute(request).getBody();
            response.setContentType("text/html;charset=" + CHARSET);
            response.getWriter().write(form);
            response.getWriter().flush();
            response.getWriter().close();
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
    }
}

支付回調接口

支付寶支付成功后,會調用我們在 notifyUrl 中配置的回調接口。這時,我們需要在回調接口中處理支付結果,確認支付狀態。

package com.icoderoad.controller;


import org.springframework.web.bind.annotation.*;


@RestController
@RequestMapping("/alipay")
public class AliPayCallbackController {


    @PostMapping("/notify")
    public void handleNotify(@RequestBody String notifyData) {
        // 處理支付結果通知
        // 例如:驗證簽名、更新訂單狀態等
    }
}

測試支付

在集成完成后,你可以通過訪問以下 URL 來測試支付流程:

http://localhost:9090/alipay/pay?subject=測試商品&total_amount=1000

在支付寶沙箱環境中,輸入測試賬號和支付密碼完成支付。支付成功后,支付寶將會回調我們的 notifyUrl,我們可以通過此接口接收支付結果并更新訂單狀態。

總結

通過上述步驟,我們成功地將支付寶支付集成到 Spring Boot 3.4 項目中,完成了支付功能的實現。這些操作不僅可以應用于本地開發環境,還可以通過內網穿透技術進行公網測試,確保支付寶支付功能在實際環境中的順利運行。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2025-02-18 16:00:00

SpringBoot支付Java

2021-09-09 15:30:28

鴻蒙HarmonyOS應用

2011-04-21 11:27:42

Firefox支付寶

2013-10-11 09:41:01

Windows 8.1支付寶

2021-01-25 14:13:26

iOS支付寶支付

2009-11-23 10:02:22

PHP支付寶接口

2014-11-17 10:52:56

支付寶去阿里化

2024-02-28 08:59:47

2011-10-15 23:24:48

Java

2009-08-26 16:07:09

支付寶網上購物安全邁克菲

2023-11-28 08:53:15

2009-09-17 12:15:28

互聯網

2016-12-27 09:49:59

支付寶紅包破解

2021-12-29 21:36:12

微信支付寶移動支付

2018-02-25 11:22:14

SDK代碼接口

2011-12-28 21:43:40

蘋果

2013-11-28 11:15:43

微信支付寶支付戰爭

2018-03-27 12:02:31

央行支付寶紅包

2017-12-18 18:23:09

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

2013-10-31 11:24:53

支付寶漏洞支付寶漏洞
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区四区视频 | 日韩在线中文字幕 | 中文字幕 欧美 日韩 | 精品久久久久久久久久久久 | 天色综合网| 久久99精品久久久久 | 欧美福利视频 | 蜜桃黄网| 99久久精品视频免费 | 日韩视频精品在线 | 免费黄篇| 欧美 日韩 国产 成人 | 一区免费| 国产成人99 | 欧美精品久久久久久久久老牛影院 | 亚洲一区国产 | 欧美亚洲视频在线观看 | 日韩视频一区 | 黄网站涩免费蜜桃网站 | 国产精品毛片无码 | 日韩午夜电影在线观看 | 日韩av一区二区在线 | 日韩国产在线 | 日韩综合一区 | 精品免费国产一区二区三区 | 日韩三区 | 国产在线二区 | 日本欧美国产在线 | 欧美理论在线观看 | 日韩网站在线 | 国产日韩欧美一区 | 久久久久久久久国产精品 | av一区二区三区四区 | 欧美成人激情视频 | 国产精品区一区二 | 精品一区二区久久久久久久网精 | 99色在线 | 亚洲高清视频一区二区 | 日韩欧美一级片 | 成人精品鲁一区一区二区 | 日韩欧美精品在线 |