欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

2.1 注冊(cè)入駐支付寶開放平臺(tái)

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

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

進(jìn)入到開發(fā)者的控制臺(tái),找到最下方的開發(fā)者工具推薦 ,點(diǎn)擊沙箱。

2.3 沙箱應(yīng)用

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

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

支付寶網(wǎng)關(guān)里的https://不要復(fù)制,會(huì)幫我們自動(dòng)拼接

三、SpringBoot 結(jié)合 支付寶沙箱

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
# 回調(diào)函數(shù)的地址 http://localhost:8080/api/alipay/notify
#  要使用公網(wǎng)地址,用路由俠進(jìn)行內(nèi)網(wǎng)穿透
  notifyUrl: https://o4662e9430.vicp.fun/api/alipay/notify
  gatewayHost: openapi-sandbox.dl.alipaydev.com

3.3 對(duì)應(yīng)的配置類

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 {
    // 應(yīng)用Id

    private String appId;
    // 應(yīng)用私鑰
    private String appPrivateKey;
    // 支付寶公鑰
    private String publicKey;
    // 回調(diào)接口路徑,要進(jìn)行內(nèi)網(wǎng)穿透
    private String notifyUrl;
    // 支付寶網(wǎng)關(guān)地址:配置文件中不要寫https://,會(huì)自動(dòng)補(bǔ)全
    private String gatewayHost;


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

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

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

    }

}

3.4 支付接口,和支付的回調(diào)接口

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 {

    /**
     * 訂單支付接口, 核心是調(diào)用支付寶的 Factory.Payment.Page().pay() 方法
     * @param subject  支付對(duì)象信息
     * @param outTradeNo  訂單號(hào)
     * @param totalAmount 訂單金額
     * @param returnUrl   支付成功以后返回的頁(yè)面地址
     * @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;
    }


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

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

}

3.5 支付頁(yè)面 apy.html

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

  • subject 商品名稱或交易標(biāo)題
  • outTradeNo 商戶訂單號(hào)
  • totalAmount 訂單總金額,單位為元
  • returnUrl 訂單返回URL,本來(lái)應(yīng)該為http://localhost:8080/payok.html?orderId=1001,要傳遞一個(gè)下單id,因?yàn)橛袉?wèn)號(hào),所以要進(jìn)行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 支付成功的頁(yè)面 payok.html

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

四、測(cè)試

4.1 訪問(wèn)http://localhost:8080/pay.html

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用itextpdf解決PDF合并的問(wèn)題

    使用itextpdf解決PDF合并的問(wèn)題

    這篇文章主要介紹了使用itextpdf解決PDF合并的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java集合中的LinkedHashMap使用解析

    Java集合中的LinkedHashMap使用解析

    這篇文章主要介紹了Java集合中的LinkedHashMap使用解析,LinkedHashMap是繼承于HashMap的,所以它的很多屬性和方法都是HashMap中的,那么它是怎么實(shí)現(xiàn)有序存儲(chǔ)的呢,需要的朋友可以參考下
    2023-12-12
  • Java打開瀏覽器訪問(wèn)指定頁(yè)面的實(shí)現(xiàn)方法

    Java打開瀏覽器訪問(wèn)指定頁(yè)面的實(shí)現(xiàn)方法

    在開發(fā)Java應(yīng)用程序時(shí),有時(shí)需要從程序中啟動(dòng)默認(rèn)的Web瀏覽器并訪問(wèn)特定的網(wǎng)頁(yè),這在實(shí)現(xiàn)幫助文檔鏈接、用戶指南或在線資源導(dǎo)航等功能時(shí)非常有用,本文將介紹如何使用Java代碼來(lái)實(shí)現(xiàn)這一功能,需要的朋友可以參考下
    2025-01-01
  • 跳表的由來(lái)及Java實(shí)現(xiàn)詳解

    跳表的由來(lái)及Java實(shí)現(xiàn)詳解

    跳表(Skip List)是一種基于鏈表的數(shù)據(jù)結(jié)構(gòu),它可以支持快速的查找、插入、刪除操作,本文主要來(lái)和大家講講跳表的由來(lái)與實(shí)現(xiàn),感興趣的小伙伴可以了解一下
    2023-06-06
  • Spring-boot結(jié)合Shrio實(shí)現(xiàn)JWT的方法

    Spring-boot結(jié)合Shrio實(shí)現(xiàn)JWT的方法

    這篇文章主要介紹了Spring-boot結(jié)合Shrio實(shí)現(xiàn)JWT的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Java8深入學(xué)習(xí)系列(一)lambda表達(dá)式介紹

    Java8深入學(xué)習(xí)系列(一)lambda表達(dá)式介紹

    Java8最值得學(xué)習(xí)的特性就是Lambda表達(dá)式和Stream API,所以我們學(xué)習(xí)java8的第一課就是學(xué)習(xí)lambda表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于Java8學(xué)習(xí)之lambda的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • Java算法比賽常用方法實(shí)例總結(jié)

    Java算法比賽常用方法實(shí)例總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java算法比賽常用方法實(shí)例總結(jié)的相關(guān)資料,文中給出了詳細(xì)的實(shí)例介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)java算法具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Java?空和null的區(qū)別

    Java?空和null的區(qū)別

    本文主要介紹了Java?空和null的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • Spring Boot使用Spring的異步線程池的實(shí)現(xiàn)

    Spring Boot使用Spring的異步線程池的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Boot使用Spring的異步線程池的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Java中Spring MVC接收表單數(shù)據(jù)的常用方法

    Java中Spring MVC接收表單數(shù)據(jù)的常用方法

    Spring MVC是Spring框架中的一個(gè)模塊,用于開發(fā)基于MVC(Model-View-Controller)架構(gòu)的Web應(yīng)用程序,它提供了一種輕量級(jí)的、靈活的方式來(lái)構(gòu)建Web應(yīng)用,同時(shí)提供了豐富的功能和特性,本文給大家介紹了Spring MVC接收表單數(shù)據(jù)的方法,需要的朋友可以參考下
    2024-05-05

最新評(píng)論