Java接入支付宝支付

本文只接入了支付宝中的APP支付,如果要拓展更多支付方式的的话,请看文末补充

项目支付流程

  1. 前端发起创建订单请求
  2. 后端接受请求创建订单,并将订单参数进行支付宝对应签名并返回
  3. 前端拿到签名后调起支付宝支付
  • 本文主要写的就是2的过程

前期准备工作:

  1. 创建应用
  2. 创建公私钥
  3. 进入沙箱环境
  4. 进行沙箱模拟测试
  5. 代码

一:创建应用

登录:https://openhome.alipay.com/develop/manage 按照提示对应创建自己的应用

image.png

image.png

二:创建公私钥

  1. 在支付宝应用,开发设置,设置接口加签方式(我使用密钥加签,证书加密太复杂还没有研究
    image.png

  2. 按照指示下载支付宝开放平台密钥工具应用并进行公私钥生成支付宝公钥

image.png

三:回到开发平台页面点击进入沙箱或者直接点击链接:https://open.alipay.com/api/apiDebug

image.png

四:进行沙箱模拟测试

image.png

  • 根据业务需求选择合适的API进行测试,模拟出来的签名数据前端拿出调用就行(我已经找前端测试过了,是可以调起支付宝进行支付的

五:代码

  1. 导入maven依赖
    <!--支付宝SDK--><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.38.52.ALL</version></dependency>
  1. AliPayUtils.java

https://open.alipay.com/develop/sandbox/app 可以获取公私钥和appId和卖家买家信息

image.png

image.png


import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayConfig;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.domain.AlipayTradeCreateModel;
import com.alipay.api.request.AlipayTradeAppPayRequest;
import com.alipay.api.request.AlipayTradeCreateRequest;
import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.alipay.api.response.AlipayTradeCreateResponse;/*** @author miao*/
public class AliPayUtils {private static final String ALI_PAY_PRIVATE_KEY = "你生成的私钥/自定义私钥";private static final String ALI_PAY_PUBLIC_KEY = "你生成的公钥/自定义公钥";private static final String APP_ID = "沙箱中appId";private static AlipayConfig alipayConfig;static {alipayConfig = new AlipayConfig();//服务地址,固定写死alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");alipayConfig.setAppId(APP_ID);alipayConfig.setPrivateKey(ALI_PAY_PRIVATE_KEY);alipayConfig.setFormat("json");alipayConfig.setAlipayPublicKey(ALI_PAY_PUBLIC_KEY);alipayConfig.setCharset("UTF8");alipayConfig.setSignType("RSA2");}public static String createAppTradePay(String orderId, String totalAmount, String subject) throws AlipayApiException {AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();model.setOutTradeNo(orderId);model.setTotalAmount(totalAmount);model.setSubject(subject);request.setBizModel(model);AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);if (response.isSuccess()) {return response.getBody();}return null;}public static String createTradeCreate(String orderId, String totalAmount, String subject,String buyerId) throws AlipayApiException {AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();AlipayTradeCreateModel model = new AlipayTradeCreateModel();model.setOutTradeNo(orderId);model.setTotalAmount(totalAmount);model.setSubject(subject);model.setBuyerId(buyerId);request.setBizModel(model);AlipayTradeCreateResponse response = alipayClient.execute(request);if (response.isSuccess()) {//目前只知道这个sign有用,但是还没具体用到return JSONObject.parseObject(response.getBody()).getString("sign");}return null;}
}
  1. 测试类
    public static void main(String[] args) throws AlipayApiException {//        String result = AliPayUtils.createAppTradePay("123456", "19.52", "测试APP支付");
//        System.out.println(result);String result = AliPayUtils.createTradeCreate("123456","111222","测试当面付","2中沙箱账号的买家uid");System.out.println(result);}

如果还要接入支付宝的其他支付,直接通过沙箱查看文档进行测试即可

  • 希望我的文章能给你带来帮助,我接入的时候看到别人的文章有点乱,如果有问题请评论,我们一起交流

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/52192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

报名倒计时!| 基于RflySim平台飞控底层算法开发专题培训(第二期)

RflySim 暑期学校 飞思实验室“基于RflySim平台飞控底层算法开发”系列专题培训第二期开启报名了&#xff01;专题培训由戴训华副教授以及飞思实验室学生&工程师团队主讲&#xff0c;采用“线上线下”集中授课形式&#xff0c;培训时间为8月28日-9月3日&#xff1b;课程内…

基于XL32F003单片机的可控硅调光方案

可控硅调光是一种用于调节电源输出电压的技术&#xff0c;被广泛应用于各种场景。它主要通过改变波形的导通角度来调节输出电压的大小&#xff0c;从而实现对照明设备亮度的控制。在照明市场占据了很大的调光市场。 可控硅调光的兼容性强&#xff0c;应用范围广。例如&#xff…

2023科隆游戏展:虚幻5游戏百花齐放,云渲染助力虚幻5高速渲染

8月23日&#xff0c;欧洲权威级游戏展示会——科隆游戏展拉开帷幕。今年的参展游戏也相当给力&#xff0c;数十款游戏新预告片在展会上公布&#xff0c;其中有不少游戏使用虚幻5引擎制作&#xff0c;开创了游戏开发新纪元。 虚幻5游戏百花齐放&#xff0c;渲染堪比电影级效果 …

数学软件和编程环境Mathematica 13 「mac」

Mathematica 13是一种强大的计算机代数系统和编程环境&#xff0c;它提供了广泛的数学功能和符号计算能力&#xff0c;可以进行高级数值计算、数据分析、可视化和模拟等任务。 Mathematica使用自己的独特的程序语言&#xff0c;称为Wolfram语言&#xff0c;它结合了函数式编程、…

Kotlin 中的 设计模式

单例模式 饿汉模式 饿汉模式在类初始化的时候就创建了对象&#xff0c;所以不存在线程安全问题。 局限性&#xff1a; 1、如果构造方法中有耗时操作的话&#xff0c;会导致这个类的加载比较慢&#xff1b; 2、饿汉模式一开始就创建实例&#xff0c;但是并没有调用&#xf…

软考A计划-系统集成项目管理工程师-知识产权管理

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

【腾讯云Cloud Studio实战训练营】React 快速构建点餐页面+Python 拼图小游戏

文章目录 一、腾讯云 Cloud Studio 概述1.1 腾讯云 Cloud Studio 简介1.2 腾讯云 Cloud Studio 功能特点1.3 腾讯云 Cloud Studio 产品优势 二、Cloud Studio界面功能介绍2.1 注册登录2.1.1 新注册用户有免费的3000分钟体验 2.2 界面功能介绍2.2.1 空间模板2.2.2 开发空间关闭空…

js 实现一个数组对应位置插入另一个数组

js 实现一个数组对应位置插入另一个数组 文章目录 js 实现一个数组对应位置插入另一个数组前言一、网上的教程二、实现思路1.将两个数组分成三个数组2.将需要再指定位置插入另一个数组的数据进行拆分2-1.拆解的另一份数组数据2-2.拼接数组 - concat 前言 网上看了很多改写spli…

FPGA解析串口指令控制spi flash完成连续写、读、擦除数据

前言 最近在收拾抽屉时找到一个某宝的spi flash模块&#xff0c;如下图所示&#xff0c;我就想用能不能串口来读写flash&#xff0c;大致过程就是&#xff0c;串口向fpga发送一条指令&#xff0c;fpga解析出指令控制flah&#xff0c;这个指令协议目前就是&#xff1a; 55 AA …

剑指offer(C++)-JZ64:求1+2+3+...+n(算法-位运算)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 求123...n&#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句&…

QT使用QXlsx实现对Excel的创建与文字的存取 QT基础入门【Excel的操作】

准备:搭建环境引用头文件QT中使用QtXlsx库的三种方法 QT基础入门【Excel的操作】_吻等离子的博客-CSDN博客 #include "xlsxdocument.h"const QString ExcelName="./test.xlsx"; QTXLSX_USE_NAMESPACE // 添加Xlsx命名空间 1、初始化excel表格 注意!两…

行业首家·合规典范|昂首资本携手菲律宾警察局,树立经纪商合规经营典范

Anzo Capital 昂首资本携手菲律宾达沃市警察局长阿尔贝托P卢帕兹受邀参加由 AFP-PNP Southern Mindanao Press Corps( 菲律宾武装部队(AFP)和菲律宾国家警察(PNP)南部棉兰老岛记者团)举办的新闻发布会。 本次新闻发布会在菲律宾达沃市皇家曼达亚酒店举行&#xff0c;Anzo Cap…

前端、后端、运维、产品等开发技术在面试之前,如何做好一份完美的自我介绍

1. 文章引言 我们都知道,不论是前端开发、后端开发、产品设计、运维开发等,在面试之前,都要做自我介绍。 虽然我们都有简历,但对方仍要求做自我介绍。 那么,你怎么做一份完美的自我介绍,给面试官一个良好的印象呢? 接下来,我便详细介绍,如何做一份完美的自我介绍。…

React创建组件的三种方式及其区别是什么?

在React中&#xff0c;创建组件的三种主要方式是函数式组件、类组件和使用React Hooks的函数式组件。以下是对每种方式的详细解释以及它们之间的区别&#xff1a; 1、函数式组件&#xff1a; 函数式组件是使用纯粹的JavaScript函数来定义的。它接收一个props对象作为参数&…

Leetcode每日一题:2337. 移动片段得到字符串(2023.8.21 C++)

目录 2337. 移动片段得到字符串 题目描述&#xff1a; 实现代码与解析&#xff1a; 双指针 原理思路&#xff1a; 2337. 移动片段得到字符串 题目描述&#xff1a; 给你两个字符串 start 和 target &#xff0c;长度均为 n 。每个字符串 仅 由字符 L、R 和 _ 组成&#x…

网络渗透day1-Windows Server相关

-建议收藏至手机&#xff0c;每天顺道几分钟学一下。掌握别人掌握不了的知识&#xff0c;赢在起跑线。 1.Windows Server操作系统是以下哪个公司开发的&#xff1f; A.Microsoft B.Apple C.Google D.IBM 正确答案&#xff1a;A 答案解析&#xff1a;Windows Server操作系…

【LeetCode-中等题】189. 轮转数组

题目 题解一&#xff1a;开辟数组 取模运算寻找位置(ik)mod n 新位置 思路&#xff1a;通过&#xff0c;开辟数组 取模运算寻找新位置------位置(ik)mod n 新位置 int[] newNums new int[nums.length];for(int i 0;i<nums.length;i){newNums[(ik)%nums.length] nums[i…

微信小程序|步骤条

![在这里插入图片描述]() 步骤条是现代用户界面设计中常见的元素之一,它能够引导用户按照预定顺序完成一系列任务或步骤。在小程序中,实现步骤条可以为用户提供更好的导航和引导,使用户体验更加流畅和直观。本文将介绍如何在小程序中实现步骤条,并逐步展示实现的过程和关键…

时序预测 | Matlab实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元时间序列预测

时序预测 | Matlab实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元时间序列预测 目录 时序预测 | Matlab实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | Matlab实现SO-CNN-BiGRU蛇群算法优化…

Docker容器与虚拟化技术:Docker consul 实现服务注册与发现

目录 一、理论 1.Docker consul 二、实验 1.consul部署 2. consul-template部署 三、总结 一、理论 1.Docker consul &#xff08;1&#xff09;服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&…