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

springboot實現(xiàn)支付寶支付(沙箱環(huán)境)

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

1. 獲取應用id,應用私鑰和支付寶公鑰

進入支付寶控制臺:https://open.alipay.com/develop/manage

找到沙箱
springboot實現(xiàn)支付寶支付(沙箱環(huán)境)
springboot實現(xiàn)支付寶支付(沙箱環(huán)境)
這里可以看到應用id
springboot實現(xiàn)支付寶支付(沙箱環(huán)境)
可以看到應用私鑰支付寶公鑰,獲取這三后就可以開始敲代碼了

2. 開始開發(fā)

依賴:

        <!--支付寶-->
        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>4.34.0.ALL</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

在resources/templates目錄下創(chuàng)建一個pay.html文件,用于展示支付寶支付頁面。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<meta charset="UTF-8">
	<title>支付寶支付</title>
</head>
<body onload="document.forms[0].submit();">
	<div th:utext="${form}"></div>
</body>
</html>

創(chuàng)建同步通知頁面
在resources/templates目錄下創(chuàng)建一個return.html文件,用于展示同步通知結果。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
	<meta charset="UTF-8">
	<title>支付結果</title>
</head>
<body>
	<h1 th:text="${message}"></h1>
</body>
</html>
# 支付寶支付參數(shù)配置
alipay:
  # 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號
  appId: 111111111111111111
  # 應用私鑰,您的PKCS8格式RSA2私鑰
  privateKey: 11111111111111111
  # 支付寶公鑰
  publicKey: 111111111111111111111111
  # 支付寶網關
  gatewayUrl: https://openapi.alipaydev.com/gateway.do
  # 服務器異步通知頁面路徑  需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),必須外網可以正常訪問
  notifyUrl: http://花生殼地址:花生殼端口/api/alipay/notify
  # 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),必須外網可以正常訪問
  returnUrl: http://花生殼地址:花生殼端口/returnView.html
/**
 * @version 1.0.0
 * @date 2023/6/8
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PayRequest {

    /**
     * 訂單編號
     */
    private String out_trade_no;

    /**
     * 商品名稱
     */
    private String subject;

    /**
     * 支付金額
     */
    private BigDecimal total_amount;

    /**
     * 商品描述
     */
    private String body;

    /**
     * 電腦網站支付場景固定傳值FAST_INSTANT_TRADE_PAY
     */
    private String product_code="FAST_INSTANT_TRADE_PAY";

    /**
     * PC掃碼支付的方式
     */
    private String qr_pay_mode;

    /**
     * 支付渠道
     */
    private String enable_pay_channels/*="balance,pcredit,moneyFund,bankPay,creditCard,pcreditpayInstallment"*/;

    /**
     * 商戶自定義二維碼寬度。
     * 注:qr_pay_mode=4時該參數(shù)有效
     */
    private String qrcode_width;
}

/**
 * 支付配置類
 */
@Configuration
@ConfigurationProperties(prefix = "alipay")
@Data
public class PayAliConfig {

    /**
     * 應用ID,您的APPID,收款賬號既是您的APPID對應支付寶賬號
     */
    public  String appId;
    
    /**
     * 應用私鑰,您的PKCS8格式RSA2私鑰
     */
    public String privateKey;

    /**
     * 支付寶公鑰
     */
    public String publicKey;
    
    /**
     * 服務器異步通知頁面路徑  需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),必須外網可以正常訪問
     */
    public  String notifyUrl;

    /**
     * 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),必須外網可以正常訪問
     */
    public  String returnUrl;

    /**
     * 支付寶網關
     */
    public String gatewayUrl;

}
/**
 * 初始化AlipayClient
 * @version 1.0.0
 * @date 2023/6/7
 */
@Component
public class AliPayClient {

    @Autowired
    private PayAliConfig payAliConfig;

    @Bean
    public AlipayClient AlipayClient()  throws AlipayApiException {
        AlipayConfig alipayConfig = new AlipayConfig();
        //設置網關地址
        alipayConfig.setServerUrl(payAliConfig.gatewayUrl);
        //設置應用ID
        alipayConfig.setAppId(payAliConfig.appId);
        //設置應用私鑰
        alipayConfig.setPrivateKey(payAliConfig.privateKey);
        //設置請求格式,固定值json
        alipayConfig.setFormat(AlipayConstants.FORMAT_JSON);
        //設置字符集
        alipayConfig.setCharset(AlipayConstants.CHARSET_UTF8);
        //設置支付寶公鑰
        alipayConfig.setAlipayPublicKey(payAliConfig.publicKey);
        //設置簽名類型
        alipayConfig.setSignType(AlipayConstants.SIGN_TYPE_RSA2);
        //構造client
        AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
        return alipayClient;
    }
}
/**
 * @version 1.0.0
 * @date 2023/6/6
 */
@RestController
@RequestMapping("/api/alipay")
@Api(tags = "網站支付寶支付")
@Slf4j
public class AlipayController {
    @Autowired
    private AliPayService alipayService;

    /**
     * 創(chuàng)建支付訂單,返回支付頁面
     */
    @GetMapping("/pay")
    @Timing(remark = "創(chuàng)建支付訂單")
    public ModelAndView pay(){

        String outTradeNo= IdUtil.simpleUUID();
        String subject="測試商品";
        BigDecimal totalAmount = BigDecimal.valueOf(250);

        PayRequest payRequest = new PayRequest();
        payRequest.setOut_trade_no(outTradeNo);
        payRequest.setSubject(subject);
        payRequest.setTotal_amount(totalAmount);
        payRequest.setBody("這是一個測試商品描述哦");
        payRequest.setQr_pay_mode("2");

        AlipayTradePagePayResponse response = alipayService.pay(payRequest);
        if (response == null) {
            return null;
        }
        log.info("響應:{}",response.getBody());
        // 返回支付頁面
        ModelAndView modelAndView = new ModelAndView("pay");
        modelAndView.addObject("form", response.getBody());

        return modelAndView;
    }


    /**
     * 處理支付寶異步通知
     */
    @PostMapping("/notify")
    @Timing(remark = "處理支付寶異步通知")
    public void notify(HttpServletRequest request, HttpServletResponse response) throws Exception {
        boolean signVerified = alipayService.rsaCheckV1(request);
        // 將請求參數(shù)轉換為Map
        if (signVerified) {
            // 處理支付成功邏輯,更新訂單狀態(tài)等操作
            response.getWriter().write("success"); // 告訴支付寶已經收到通知并處理成功
        } else {
            response.getWriter().write("failure"); // 告訴支付寶驗簽失敗
        }
    }
}
/**
 * @version 1.0.0
 * @date 2023/6/7
 */
public interface AliPayService {

    AlipayTradePagePayResponse pay(PayRequest payRequest);

    boolean rsaCheckV1(HttpServletRequest request);
}

/**
 * @version 1.0.0
 * @date 2023/6/7
 */
@Service
@Slf4j
public class AliPayServiceImpl implements AliPayService {

    @Autowired
    private AlipayClient alipayClient;

    @Autowired
    private PayAliConfig payAliConfig;

    @Override
    public AlipayTradePagePayResponse pay(PayRequest payRequest) {
        // 構造請求參數(shù)
        AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
        request.setReturnUrl(payAliConfig.getReturnUrl());
        request.setNotifyUrl(payAliConfig.getNotifyUrl());
        log.info("生成的字符串:{}", JSONUtil.toJsonStr(payRequest));

        request.setBizContent(JSONUtil.toJsonStr(payRequest));
//        request.setBizContent("{\"out_trade_no\":\"" + UUID.randomUUID().toString().replaceAll("-", "") + "\","
//                + "\"total_amount\":\"0.01\","
//                + "\"subject\":\"測試商品\","
//                + "\"body\":\"測試商品詳情\","
//                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

        // 調用SDK生成表單
        try {
            return alipayClient.pageExecute(request);
        } catch (AlipayApiException e) {
            log.error("支付寶請求失敗");
        }
        return null;
    }

    @Override
    public boolean rsaCheckV1(HttpServletRequest request) {
        boolean flag = false;
        Map<String, String> params = new HashMap<>();
        Enumeration<String> parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()) {
            String paramName = parameterNames.nextElement();
            String paramValue = request.getParameter(paramName);
            params.put(paramName, paramValue);
        }
        // 調用SDK驗證簽名
        try {
            flag =AlipaySignature.rsaCheckV1(params, payAliConfig.publicKey, AlipayConstants.CHARSET_UTF8, AlipayConstants.SIGN_TYPE_RSA2);
        } catch (AlipayApiException e) {
            log.error("驗簽失敗");
        }
        return flag;
    }
}

3. 內網穿透

花生殼:https://hsk.oray.com/
下載安裝配置一下就好了

4. 測試支付功能

啟動Spring Boot應用,訪問http://localhost:8889/api/alipay/pay,即可看到支付寶支付頁面。輸入支付密碼后,會自動跳轉到同步通知頁面,并顯示支付結果。

賬號密碼在沙箱賬號中看到

springboot實現(xiàn)支付寶支付(沙箱環(huán)境)
springboot實現(xiàn)支付寶支付(沙箱環(huán)境)
springboot實現(xiàn)支付寶支付(沙箱環(huán)境)文章來源地址http://www.zghlxwxcb.cn/news/detail-479612.html

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

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

領支付寶紅包贊助服務器費用

相關文章

  • SpringBoot項目(支付寶整合)——springboot整合支付寶沙箱支付 & 從極簡實現(xiàn)到IOC改進

    SpringBoot項目(支付寶整合)——springboot整合支付寶沙箱支付 & 從極簡實現(xiàn)到IOC改進

    1.springboot整合支付寶沙箱支付; 2.準備工作:沙箱api,內網穿透; 3.極簡實現(xiàn)理解支付,異步回調等; 4.按照spring依賴注入的思想改造基礎demo; https://gitee.com/pet365/springboot-alipay 支付寶開放平臺 (alipay.com) 支付參數(shù) natapp.cn官網 啟動和配置 訂單ID,需要唯一;價格;物品名稱(

    2024年02月11日
    瀏覽(26)
  • 支付寶沙箱環(huán)境配置結合內網穿透實現(xiàn)遠程調試Java SDK接口

    支付寶沙箱環(huán)境配置結合內網穿透實現(xiàn)遠程調試Java SDK接口

    1.測試環(huán)境 Maven Spring boot Jdk 1.8 2.本地配置 獲取支付寶支付Java SDK,maven項目可以選擇maven版本,普通java項目可以在GitHub下載,這里以maven為例 SDK下載地址:https://doc.open.alipay.com/docs/doc.htm?treeId=193articleId=103419docType=1 選擇最新版的SDK版本 復制maven坐標,導入spring boot項目pom 文件里面

    2024年02月04日
    瀏覽(27)
  • SpringBoot+支付寶支付(沙箱)

    SpringBoot+支付寶支付(沙箱)

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

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

    支付寶手機網站支付接入(沙箱環(huán)境)

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

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

    Springboot支付寶沙箱支付---完整詳細步驟

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

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

    SpringBoot集成沙箱支付

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

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

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

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

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

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

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

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

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

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

    2024年02月20日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包