最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot基于沙箱環(huán)境實現(xiàn)支付寶支付教程

 更新時間:2025年03月10日 10:40:31   作者:今天的接口寫完了嗎?  
本文介紹了如何使用支付寶沙箱環(huán)境進行開發(fā)測試,包括沙箱環(huán)境的介紹、準備步驟、在Spring Boot項目中結合支付寶沙箱進行支付接口的實現(xiàn)與測試

一、支付寶沙箱環(huán)境介紹

沙箱環(huán)境是支付寶開放平臺為開發(fā)者提供的安全低門檻的測試環(huán)境,開發(fā)者在沙箱環(huán)境中調用接口無需具備所需的商業(yè)資質,無需綁定和開通產品,同時不會對生產環(huán)境中的數(shù)據造成任何影響。

合理使用沙箱環(huán)境,可以讓研發(fā)流程與商業(yè)流程并行,降低聯(lián)調資損風險,加速項目的交付。

更為詳細的說明可以看官方文檔:https://opendocs.alipay.com/common/02kkv7

二、沙箱環(huán)境準備

2.1 注冊入駐支付寶開放平臺

登錄支付寶開放平臺,支付寶登錄平臺,找到開發(fā)接入入駐為開發(fā)者。

2.2 配置沙箱環(huán)境

進入到開發(fā)者的控制臺,找到最下方的開發(fā)者工具推薦 ,點擊沙箱。

2.3 沙箱應用

獲取支付參數(shù)信息

打開沙箱應用后,需要拿到3個參數(shù),appId,應用私鑰,支付寶公鑰,用于對接支付接口使用。

支付寶網關里的https://不要復制,會幫我們自動拼接

三、SpringBoot 結合 支付寶沙箱

3.1 pom.xml

<!--引入支付寶sdk -->
		<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk -->
		<dependency>
			<groupId>com.alipay.sdk</groupId>
			<artifactId>alipay-easysdk</artifactId>
			<version>2.2.2</version>
		</dependency>

3.2 application.yml

spring:
  application:
    name:
      SpringBoot_Pay
alipay:
  appId: 9021000137619573
  appPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC43Mr6YjCPwWDhb+d+2fxatYjDeJjrNKj78KY6oD2hatVAWsQvG/dW9Sr3bouit2rvOc6AQIem7CJQ3gQEvw15dn8Q4Uh+LWxBB5aujCjgr2Fvp0ELqHlnKNUgxACPgzfqLCpIYGcGI6zqrrGtA2PCD3TyjNbgyo18c4OZLLWhpokr2Ml7fI/F0h0irMM+zymupY2L/Q5Zjcf2Y7Z7cVFefOF+wI06CRCfpFQE9mjffH/MNHMdgxmY/mqvFE1slCPulmRi2wMDKV34dQZFQ0B0cMBMbIlwNFAa/QtEJ5xN3ksvNZ2VS7Fj9r5/Z7pEUtHEQT8OYbDnZye2OjHSKt1ZAgMBAAECggEACc1TSfF457Z2P53iZXyDf//OL6cuXJJfP3SkK8mhWvTCN/ZYHrNZ6xd23sXSy570IZksFOrXBofQzf7nsaS7vywEUs3PPTmFWvFfEQRHippiDTyOG2MkhM7KdkFOUk2/4j/TQiEydUXg/lSjASyD1p9hMRc8sZCr7eRmHvIa82Y9D078bprdZEDjcFRiLN8jxikpmCnezPcSmI2VWpKQIemo62HIuYD3iQUr+S0MYmlkH229HU4c9rBJ+MCjuDj9eWkyT7DhtmhFcUlQvae/lGQukRu4ZEIdY1eBvICJ2SExmH0oCu11CuPIeu2KSI5zaInnDr7bAsQRg90U+JFs7QKBgQDqbMv1/s8X6Cu/GfGMLJrVkANR6C+N0EhEzJ/53HowZopyVI1qaLmFpK7veMukPxVYbmO/h+iSbahQ1+S2Gw3CsEQDimGrC1+s1dhkrgFZhWTpVg3I1rIbXFkHDNvAa6+HgtB/ZIjP0qUrmGO+HipUSEmvCXNRV0L3TlWpco2G4wKBgQDJ4EV/KoPFk/XOJHGn/Kt6QhK+YOCC59835qOM3zX9f6klWGl+9NeIefxRcQ4kqDp4kCQzw+y5Ds7Lv5EYGiWsuYVN2ObcG+MLj0qisrMwE61mJ1bCXok7C+1ild3+FyXMBXqp7zuNog3rGwZAzS99x5ouELl/Mems1n/pt1NDkwKBgQC0E4UN34Hn5HIOZ3h0bCM4YFschRZagp+xMdrFzgaSvYImVysWjYHN1naHACy2a7sS5iF7lIQkT1YXW/CVruyAHHTyn09tW9xP4SlMFZp10RF2aKNIHxxMBkFhOBBqnI4Gs4dEBM9PjYlRlssv1O5BNhJcAg9ycWzAmo0VECkFbwKBgBD+hTswTAl87CtfXAYFOjY/i65lH2FFvb/J9aitPbFKZuXS7IaYe/BsPHZqqwMg+lMd5z5IVww5F+WFCeTahqNktrkX8k9DNbjKZkEOBBGfBnDcDOyt4qWK2n/7F8YFEtR6/ZmCnyPMKZnKG5um6kGPZQZNuB/iBsbbA8eb/DFrAoGAdM5Wn1q8G6uB7QsxHFfjir6kbvfrf3WMPDvIIDTKS49t0WucVvLPNtIPGCSb99MEWOEZvWvMhn0RmCZNHWX7Fy4HB4FcJW57aWvIDKwxEcI9gdy5Vmg0uRIsd3WPzcZxbTCERUvIXRgh/tacaTq9/wPTEq1vp0AGYXoJHQslxLs=
  publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArEEt6BXEXKinvjjQooptYjjyJIy+4DHhxBK2BOMUWs2Ol9xQStPrkCz3gVwZg0yM1nIvv/G970u8siXL7GN42CbPEw3hVimCjiclDn1qMaurTakOUtUT0RygF118wThny40rZYsMbnDs7uCV4yynI8/5dEhHvUfe4pZm3by8Wy+aNjlX9Fwn1FbRa8aWnZmglcEp92xGkIyhC7Yc/DJA7J4xc44mgWVcHy8lNJv7Cznoehsq9dAew5mpjYvRCr1PIwGHw8D9Tkz/T1gOREiiejaBwF3zZpEUhq85t1GBoyPKwGtsb2Ve8ribP3EfKbqORgOc9ay7CnMkz8KRTRuK4wIDAQAB
# 回調函數(shù)的地址 http://localhost:8080/api/alipay/notify
#  要使用公網地址,用路由俠進行內網穿透
  notifyUrl: https://o4662e9430.vicp.fun/api/alipay/notify
  gatewayHost: openapi-sandbox.dl.alipaydev.com

3.3 對應的配置類

package com.by.config;

import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.Config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
@ConfigurationProperties(prefix = "alipay")
@Data
public class AlipayConfig {
    // 應用Id

    private String appId;
    // 應用私鑰
    private String appPrivateKey;
    // 支付寶公鑰
    private String publicKey;
    // 回調接口路徑,要進行內網穿透
    private String notifyUrl;
    // 支付寶網關地址:配置文件中不要寫https://,會自動補全
    private String gatewayHost;


    @PostConstruct
    public void init(){
        Config config = new Config();
        // 基礎配置
        config.protocol = "https";
        config.gatewayHost = this.gatewayHost;// 支付寶網關地址
        config.signType = "RSA2";

        // 業(yè)務配置
        config.appId = this.appId;
        config.merchantPrivateKey = this.appPrivateKey;
        config.alipayPublicKey = this.publicKey;
        config.notifyUrl = this.notifyUrl;

        // 將配置信息, 添加到相應的工廠類
        Factory.setOptions(config);
        System.out.println("支付寶初始化配置完成");

    }

}

3.4 支付接口,和支付的回調接口

package com.by.controller;

import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.payment.page.models.AlipayTradePagePayResponse;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/api/alipay")
public class PayController {

    /**
     * 訂單支付接口, 核心是調用支付寶的 Factory.Payment.Page().pay() 方法
     * @param subject  支付對象信息
     * @param outTradeNo  訂單號
     * @param totalAmount 訂單金額
     * @param returnUrl   支付成功以后返回的頁面地址
     * @return
     */
    @GetMapping
    public String pay(String subject, String outTradeNo, String totalAmount,String returnUrl) throws Exception {
        AlipayTradePagePayResponse response = Factory.Payment.Page().pay(subject, outTradeNo, totalAmount, returnUrl);
        String body = response.getBody();
        return body;
    }


    /**
     * 支付回調接口,如果支付成功,支付寶將會請求此接口,將成功信息返回
     */
    @PostMapping("/notify")
    public String notify(@RequestParam Map parameterMap) throws Exception {
        String tradeStatus = parameterMap.getOrDefault("trade_status","").toString();

        if (tradeStatus.trim().equals("TRADE_SUCCESS")) {
            // 驗證請求的有效性
            if (Factory.Payment.Common().verifyNotify(parameterMap)) {
                System.out.println("通過支付寶的驗證");
                System.out.println("訂單id:" + parameterMap.get("out_trade_no"));
            }else {
                System.out.println("支付驗證不通過");
            }
        }
        return "success";
    }

}

3.5 支付頁面 apy.html

傳遞的參數(shù)用于支付接口接收 ,其中里的

  • subject 商品名稱或交易標題
  • outTradeNo 商戶訂單號
  • totalAmount 訂單總金額,單位為元
  • returnUrl 訂單返回URL,本來應該為http://localhost:8080/payok.html?orderId=1001,要傳遞一個下單id,因為有問號,所以要進行url編碼

<body>
<a href="/api/alipay?subject=商品支付&outTradeNo=3123&totalAmount=16.8&returnUrl=http%3A%2F%2Flocalhost%3A8080%2Fpayok.html%3ForderId%3D1001" rel="external nofollow"  class="a">
    <img src="https://zhengxin-pub.bj.bcebos.com/logopic/a9936a369e82e0c6c42112674a5220e8_fullsize.jpg?x-bce-process=image/resize,m_lfit,w_200" alt="支付寶支付">
    <h2>支付寶支付</h2>
</a>
</body>

3.6 支付成功的頁面 payok.html

<div class="alert alert-primary" role="alert">
    支付成功
</div>

四、測試

4.1 訪問http://localhost:8080/pay.html

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • WebSocket獲取httpSession空指針異常的解決辦法

    WebSocket獲取httpSession空指針異常的解決辦法

    這篇文章主要介紹了在使用WebSocket實現(xiàn)p2p或一對多聊天功能時,如何獲取HttpSession來獲取用戶信息,本文結合實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-01-01
  • Java線程優(yōu)先級變量及功能

    Java線程優(yōu)先級變量及功能

    這篇文章主要介紹了Java線程優(yōu)先級變量及功能,關于優(yōu)先級的問可能有兩個或更多線程被分配了相同的優(yōu)先級,那么它們的執(zhí)行取決于操作系統(tǒng),更多相關介紹,需要的小伙伴可以參考一下
    2022-06-06
  • Java從零開始創(chuàng)建功能豐富的PDF文檔

    Java從零開始創(chuàng)建功能豐富的PDF文檔

    隨著數(shù)字化辦公的普及,PDF格式因其跨平臺兼容性和安全性而被廣泛應用于各種場景中,本文將詳細介紹如何使用Java來實現(xiàn)PDF文檔的一鍵生成,有需要的可以了解下
    2025-01-01
  • java中Locks的使用詳解

    java中Locks的使用詳解

    這篇文章主要介紹了java中Locks的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Java數(shù)據結構之復雜度篇

    Java數(shù)據結構之復雜度篇

    算法復雜度分為時間復雜度和空間復雜度。其作用:?時間復雜度是度量算法執(zhí)行的時間長短;而空間復雜度是度量算法所需存儲空間的大小
    2022-01-01
  • 深入淺析Netty 在 Dubbo 中是如何應用的

    深入淺析Netty 在 Dubbo 中是如何應用的

    國內知名框架 Dubbo 底層使用的是 Netty 作為網絡通信,那么內部到底是如何使用的呢?今天通過本文給大家詳細講解,對Netty 在 Dubbo中應用相關知識感興趣的朋友跟隨小編一起看看吧
    2020-05-05
  • Reactor 多任務并發(fā)執(zhí)行且結果按順序返回第一個

    Reactor 多任務并發(fā)執(zhí)行且結果按順序返回第一個

    這篇文章主要介紹了Reactor 多任務并發(fā)執(zhí)行且結果按順序返回第一個,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-09-09
  • Java?Scanner?類讀取一維數(shù)組二維數(shù)組示例詳解

    Java?Scanner?類讀取一維數(shù)組二維數(shù)組示例詳解

    這篇文章主要為大家介紹了Java?Scanner?類讀取一維數(shù)組二維數(shù)組示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • spring boot mogodb多條件拼接的解決方法

    spring boot mogodb多條件拼接的解決方法

    這篇文章主要介紹了spring boot mogodb多條件拼接的解決方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • 一文詳細解析Java?8?Stream?API中的flatMap方法

    一文詳細解析Java?8?Stream?API中的flatMap方法

    這篇文章主要介紹了Java?8?Stream?API中的flatMap方法的相關資料,flatMap方法是Java?StreamAPI中的重要中間操作,用于將流中的每個元素轉換為一個新的流,并將多個流合并為一個單一的流,常用于處理嵌套集合和一對多映射,需要的朋友可以參考下
    2024-12-12

最新評論

禄丰县| 交口县| 出国| 合肥市| 巴东县| 财经| 黔西县| 南康市| 镶黄旗| 双牌县| 沙雅县| 简阳市| 旬阳县| 云霄县| 江达县| 南陵县| 玉山县| 上饶县| 南川市| 台南市| 车致| 淮安市| 湘阴县| 新野县| 永善县| 宁强县| 新营市| 吴堡县| 青岛市| 新晃| 鄱阳县| 太仆寺旗| 上林县| 积石山| 忻州市| 甘肃省| 黔南| 大港区| 彭山县| 依兰县| 河间市|