首页 > 编程语言 >Java怎么现在支付宝沙盒支付

Java怎么现在支付宝沙盒支付

时间:2024-06-18 21:03:39浏览次数:23  
标签:alipay 支付宝 Java String alipayConfig import 沙盒 com public

一、支付环境准备

  • 支付宝的公钥和私钥
  • 支付的网关
  • 支付的APPID
  • 1、配置沙箱应用环境
  • 1、打开支付宝开放平台,官网:支付宝开放平台
  • 2、登录个人账户,然后点击控制台找到里面的沙箱
  • 3、这里能够找到APPID支付宝网关地址密钥
  • 二、设置内网穿透环境

  • 我用的花生壳:花生壳官网|动态域名|免费域名|域名注册|向日葵远程控制|远程桌面-贝锐开放的互联网应用服务引领者
  • 三、实际后端开发

  • 1、引入依赖
  • </dependency> <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk --> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.10.0.ALL</version> </dependency> <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.22.110.ALL</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.20</version> </dependency>
  • 2、服务端代码配置
  • 接口环境调试接口是,开发者需要调整如下代码配置

  • 支付宝网关地址:支付宝 - 网上支付 安全快速!
  • APPID:支付宝开发平台中的APPID
  • 3、客户端代码配置
  • AlipayConfig.java:package com.cxs.biyesheji.config;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.stereotype.Component;
    
    @Component
    @PropertySource("classpath:alipay.properties")
    public class AlipayConfig {
    
        @Value("${alipay.gatewayUrl}")
        private String gatewayUrl;
    
        @Value("${alipay.appId}")
        private String appId;
    
        @Value("${alipay.privateKey}")
        private String privateKey;
    
        @Value("${alipay.publicKey}")
        private String publicKey;
    
        @Value("${alipay.notifyUrl}")
        private String notifyUrl;
    
        @Value("${alipay.returnUrl}")
        private String returnUrl;
    
        public String getGatewayUrl() {
            return gatewayUrl;
        }
    
        public String getAppId() {
            return appId;
        }
    
        public String getPrivateKey() {
            return privateKey;
        }
    
        public String getPublicKey() {
            return publicKey;
        }
    
        public String getNotifyUrl() {
            return notifyUrl;
        }
    
        public String getReturnUrl() {
            return returnUrl;
        }
    }
    
  • AlipayController.java:
    package com.cxs.biyesheji.controller;
    
    import com.alipay.api.AlipayApiException;
    import com.alipay.api.AlipayClient;
    import com.alipay.api.DefaultAlipayClient;
    import com.alipay.api.request.AlipayTradePagePayRequest;
    import com.cxs.biyesheji.config.AlipayConfig;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import java.util.UUID;
    
    @Controller
    public class AlipayController {
    
        private final AlipayConfig alipayConfig;
    
        @Autowired
        public AlipayController(AlipayConfig alipayConfig) {
            this.alipayConfig = alipayConfig;
        }
    
        @PostMapping(value = "/alipay", produces = "text/html; charset=UTF-8")
        @ResponseBody
        public String pay(@RequestParam("amount") String amount) {
            try {
                // Initialize AlipayClient
                AlipayClient alipayClient = new DefaultAlipayClient(
                        alipayConfig.getGatewayUrl(),
                        alipayConfig.getAppId(),
                        alipayConfig.getPrivateKey(),
                        "json",
                        "UTF-8",
                        alipayConfig.getPublicKey(),
                        "RSA2"
                );
    
                // Set request parameters
                AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
                alipayRequest.setReturnUrl(alipayConfig.getReturnUrl());
                alipayRequest.setNotifyUrl(alipayConfig.getNotifyUrl());
    
                // Generate a unique order number using UUID
                String orderNo = UUID.randomUUID().toString();
                alipayRequest.setBizContent("{\"out_trade_no\":\"" + orderNo + "\","
                        + "\"total_amount\":\"" + amount + "\","
                        + "\"subject\":\"订单支付\","
                        + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
    
                // Send the payment request and get the HTML content of the payment page
                String form = alipayClient.pageExecute(alipayRequest).getBody();
    
                // Return the HTML content of the payment page to the frontend
                return form;
            } catch (AlipayApiException e) {
                System.err.println("Alipay API exception: " + e.getMessage());
                e.printStackTrace();
                // Return error message to the frontend
                return "支付初始化失败,请重试!原因:" + e.getMessage();
            }
        }
    }
    
  • alipay.properties:
    # UTF-8 encoding declaration
    # 文件编码为 UTF-8
    alipay.appId=支付的APPID; 
    alipay.privateKey=自己的私钥
    alipay.publicKey=公钥
    alipay.gatewayUrl=支付宝网关地址
    alipay.notifyUrl=内网穿透的网址
    alipay.returnUrl=内网穿透的网址

标签:alipay,支付宝,Java,String,alipayConfig,import,沙盒,com,public
From: https://blog.csdn.net/weixin_63831348/article/details/139773038

相关文章

  • java基础·小白入门(一)
    目录Java语言概述Java的性质三种平台跨平台原理Java语言开发环境相关概念Java开发工具的安装Java程序的编译与运行基本注意事项Java语言基础数据类型基本数据类型引用数据类型关键字与标识符常量与变量常量变量数据类型转换常见运算符Java语言概述这一部分主要......
  • 课题分享:校园快领服务系统,基于java+SSM+mysql
     一、前言介绍     随着中国经济的快速发展和互联网技术的普及,信息管理改革确实成为了一种广泛和全面的趋势。在这一背景下,基于MySQL数据库的校园快领服务系统应运而生,这不仅体现了信息化建设在教育领域的深入应用,也展现了现代管理手段在提高工作效率和优化服务体验......
  • 课程分享:校园兼职系统,基于java+SSM+mysql
    一、前言介绍       随着社会的不断发展和科学技术的飞速进步,互联网技术已经变得越来越受到人们的欢迎。在这个快节奏的时代,我们的生活方式也变得越来越忙碌,对生活品质的要求也变得更加严格。因此,对于快速、方便的服务的需求也在逐渐增加。互联网具有许多优点,例如便利......
  • 深入理解Java虚拟机
    类加载加载java数据类型分为基本数据类型和引用数据类型,基本数据类型由虚拟机预先定义,引用数据类型才需要类的加载过程。类的加载,就是将java类的字节码文件加载到内存中,并通过字节码在内存中构建出类的原型---类模板对象。jvm把字节码中的常量池,类字段,类方法等信息存储到类模......
  • Java访问控制符及final
    1、访问控制符在Java语言中,访问控制修饰符有4种,分别是public、private、protected和default。1) private用private修饰的类成员,只能被该类自身的方法访问和修改,而不能被任何其他类(包括该类的子类)访问和引用。因此,private修饰符具有最高的保护级别。2)default(默......
  • Java毕业设计 基于SSM助学贷款管理系统
    Java毕业设计基于SSM助学贷款管理系统SSM助学贷款管理系统功能介绍学生:登录修改密码学生信息贷款项目信息申请贷款留言信息公告学校负责人:登录修改密码学生管理学校负责人信息贷款项目贷款申请审批留言信息公告银行负责人:登录修改密码银行负责人信息......
  • 数组趣味玩法:在Java SE中尝试创新玩法
    哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。  我是一名后端开发爱好者,工作日常接触到最多的......
  • 深入探究:Java SE中的数组高级用法
    哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。  我是一名后端开发爱好者,工作日常接触到最多的......
  • 在现代编程环境中,Perl 如何与其他流行语言(如 Python、Java 等)进行集成和协作?
    在现代编程环境中,Perl可以与其他流行语言(如Python、Java等)进行集成和协作。以下是一些常见的方法:调用外部程序:Perl可以使用系统调用来执行其他语言编写的可执行文件。这意味着可以从Perl中调用Python、Java等程序,并将它们的输出捕获到Perl程序中进行处理。使......
  • 滚雪球学Java(65-3):详解Java IdentityHashMap的内部实现原理
      咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及JavaSE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~......