支付宝支付对接-附带完整代码!!

news2025/1/12 16:09:16

支付宝对接

文章目录

  • 支付宝对接
    • 1、大纲
      • 1.1 整体业务流程图
      • 1.2、开发流程图
      • 1.3、核心参数
      • 1.4、支付宝开放平台
      • 1.5、支付应用场景
      • 1.6、支付宝入驻
    • 2、环境准备
      • 2.1 首先注册自己的支付宝账号
      • 2.2 沙箱环境
      • 2.3 支持产品列表
    • 3、项目实现
      • 3.1、项目代码地址
      • 3.2、 代码层级
      • 3.3、快速启动
        • 3.3.1环境准备
        • 3.3.2 定义application.yml和application-dev.yml配置支付相关参数
        • 3.3.3 创建配置文件对应的数据库
    • 4、大致流程

兄弟们,肝就完事了。这个代码是可以完整运行的,可以试试。

1、大纲

首先本笔记是基于狂神的笔记整理的,仅供学习,下面是原资源地址:

支付宝对接学习地址

1.1 整体业务流程图

主要流程如下:

1.2、开发流程图

1.3、核心参数

  • APPID
  • 商家私钥
  • 支付宝公钥
  • 支付回调地址
  • 网关地址
  • 加密签名算法RSA2

1.4、支付宝开放平台

官网:https://open.alipay.com/platform/home.htm
文档:https://openhome.alipay.com/docCenter/docCenter.htm?from=openhomemenu

1.5、支付应用场景

使用第三方支付宝支付,解决了商家,消费者之间的交易瓶颈,提升商家的服务效率和营收,也可以让消费者在消费产品的时候更加快捷和便捷。使用的场景如下:

  • 互联网产品在线支付
  • 金融
  • 电商
  • 卡券
  • 红包
  • 线下门店扫码
  • 分销分账
  • 提现
  • 等等……

1.6、支付宝入驻

为提升入驻开放平台时的效率和体验,开发者在入驻前,需要注册支付宝账号并完成实名认证。
注册支付宝账号:https://memberprod.alipay.com/account/reg/index.htm
企业支付宝账号实名认证指南:https://opendocs.alipay.com/open/200/qyzfbsmrz

2、环境准备

2.1 首先注册自己的支付宝账号

官网:https://open.alipay.com/platform/home.htm

2.2 沙箱环境

(由于企业需要审核)这里以个人开发测试环境为主,选择支付宝沙箱环境。获取这个环境主要就是为了拿到上面介绍的核心参数,比如appId、商家私钥、支付宝公钥、支付回调地址等。(企业环境支付宝公钥是用应用公钥换取的)

如果需要企业环境认证可以参考下面的文章:

支付宝对接

界面说明如下(这些后面详细介绍):

  • 接口加签方式(步骤1) 必填
    开发者可根据接入产品需求选择 公钥证书模式 或 公钥模式,并保证接口中使用的私钥与此处设置公钥成对匹配,否则无法调用接口,且接口参数 sign_type=RSA2。详情请参见 生成密钥并上传。
  • IP 白名单(步骤2)可选。
    为提高商户访问开放平台的安全性,避免商户因应用私钥泄漏等原因导致业务受损,开放平台提供 IP 白名单机制,详情可参考 IP 白名单接入指南。IP 白名单旨在保证开发者的资金安全,开发者视实际情况选用。
  • 应用网关(步骤3)可选。用于接收支付宝异步通知,开发者视实际需要填写。例如:现金红包、转账到支付宝账户 中单据状态变更后触发的 alipay.fund.trans.order.changed (转账单据状态变更通知 )。C2C 现金红包 退款成功时触发的 alipay.fund.trans.refund.success(资金退回成功通知) 。
  • 接口内容加密方式(步骤4)可选。即 AES 密钥可用于加解密数据信息。接入 获取会员手机号、运动数据 等需解密数据功能必须配置。详情请参考 内容加密指引。
  • 授权回调地址(步骤5) 必填。第三方应用授权 或 用户信息授权 后回调地址。授权链接中配置的 redirect_uri 的值必须与此值保持一致 (如:https://www.alipay.com) ,用户成功授权后将在该 url 后携带授权码等信息并跳转至该页。

重点:使用沙箱环境生成了支付的二维码必须用安卓手机下载支付宝沙箱环境来扫码!!!!

2.3 支持产品列表

就是指这个沙箱环境给你提供了各种产品支付能力,比如手机网站支付、获取会员信息、当面支付等。(企业环境这些是要签约的)

3、项目实现

首先插一嘴简单介绍一下什么是RAS加密

RAS(通常是指 RSA,Rivest-Shamir-Adleman)是一种非对称加密算法,它以其创始人的姓氏命名。RSA 加密算法是一种公钥加密系统,它使用一对密钥:公钥和私钥。以下是 RSA 加密的基本原理:

  1. 公钥和私钥: RSA 算法中,公钥用于加密数据,私钥用于解密数据。公钥是公开的,任何人都可以获得,而私钥必须保密。

  2. 加密过程: 当某人想要向另一人发送加密消息时,他们使用接收方的公钥对消息进行加密。只有持有私钥的接收方才能解密该消息。

  3. 解密过程: 接收方使用他们的私钥来解密收到的加密消息,以获得原始的明文数据。

RSA 加密广泛用于安全通信、数字签名、身份验证和数据加密等领域,它是计算机安全和加密通信中的重要工具。不过,需要注意的是,随着计算机性能的增强,需要更长的密钥长度来保持相同级别的安全性,因此在实际应用中,密钥长度会不断调整以应对不断演化的安全威胁。

3.1、项目代码地址

对接第三方支付宝支付接口 代码及sql

本人亲自运行测试过代码没问题,把代码先跑起来再看业务。

3.2、 代码层级

3.3、快速启动

3.3.1环境准备

设置为Maven项目

修改为jdk1.8

设置Maven 然后clean ->install

3.3.2 定义application.yml和application-dev.yml配置支付相关参数

根据代码注释修改核心参数

application.yml

spring:
  freemarker:
    suffix: .html
  profiles:
    active: pwd2,dev
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    locale: zh_CN
    # 解决json返回过程中long的精度丢失问题
    generator:
      write-numbers-as-strings: true
      write-bigdecimal-as-plain: true
    servlet:
      content-type: text/html
      multipart:
        max-file-size: 2MB
        max-request-size: 2MB
    mvc:
      servlet:
        load-on-startup: 1 #SpringBoot的接口第一次访问都很慢,通过日志可以发现,dispatcherServlet不是一开始就加载的,有访问才开始加载的,即懒加载。
    main:
      allow-bean-definition-overriding: true


# 日志管理
logging:
  level:
    root: info

# mybatis-plus配置
mybatis-plus:
  mapper-locations: classpath*:/mapper/*.xml
  type-aliases-package: com.kuangstudy.ksdalipay.entity

application-dev.yml

server:
  port: 8989

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.jdbc.Driver
    # 修改为自己创建的数据库
    url: jdbc:mysql://127.0.0.1:3306/alipay?serverTimezone=GMT%2b8&useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: 123
    hikari:
      connection-timeout: 60000
      validation-timeout: 3000
      idle-timeout: 60000
      login-timeout: 5
      max-lifetime: 60000
      maximum-pool-size: 400
      minimum-idle: 100
      read-only: false

# 支付宝支付参数配置 这些参数都是最开始从官网可以拿得到的
alipay:
  # 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
  app_id: 9021000128671380
  # 商户私钥,您的PKCS8格式RSA2私钥
  merchant_private_key: 
  # 支付宝公钥
  alipay_public_key: 
  # 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
  notify_url: https://www.kuangstudy.com/pay/alipay/notifyUr
  # 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
  # return_url: https://api.itbooking.net/admin/alipay/returnUrl
  return_url: https://www.kuangstudy.com/pay/alipay/notifyUr
  # 签名方式
  sign_type: RSA2
  # 字符编码格式
  charset: utf-8
  # 支付宝网关
  gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
  # 保存支付日志的地址
  log_path: d:/all_data/pay_log


3.3.3 创建配置文件对应的数据库

数据库在代码sql里面

3.4.4 启动测试

访问 http://localhost:8989/main

4、大致流程

首先项目运行起来后行问localhost:8989/main

这就是这个项目的主页面,

页面初始前端会调用后端的接口,生成列表第一个课程信息的订单预支付二维码,每个课程信息下面有个”点击支付“,点了之后会重新传课程id来刷新二维码。二维码是预支付订单信息,根据核心参数调用了支付宝的官方接口就会生成一个二维码,这里是二维码拼接了一个图片。

在扫描二维码之后就会触发支付回调,获取订单支付信息,然后修改订单状态,记得支付回调接口必须是公网可以访问的,可以使用域名或者内网穿透(记得修改配置文件,和沙箱环境的地址)。

内网穿透可以参考我的另一篇博客:

主页面,

页面初始前端会调用后端的接口,生成列表第一个课程信息的订单预支付二维码,每个课程信息下面有个”点击支付“,点了之后会重新传课程id来刷新二维码。二维码是预支付订单信息,根据核心参数调用了支付宝的官方接口就会生成一个二维码,这里是二维码拼接了一个图片。

在扫描二维码之后就会触发支付回调,获取订单支付信息,然后修改订单状态,记得支付回调接口必须是公网可以访问的,可以使用域名或者内网穿透(记得修改配置文件,和沙箱环境的地址)。

内网穿透可以参考我的另一篇博客:

如何使用内网穿透来联调接口

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

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

相关文章

【产品运营】如何提升B端产品的竞争力(上)

B端产品的核心竞争力不是只有产品功能丰富度、易用度这些维度,判断产品核心竞争力应该基于产品所定位解决的问题场景。 B端产品的成交因素很多,包括产品本身、公司品牌、客情关系、成功案例、产品定价、客户成熟度、需求匹配度等,本文只谈产品…

大数据(九):数据可视化(一)

专栏介绍 结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教…

网站整站优化-网站整站优化工具

您是否曾为您的网站在搜索引擎中的排名而感到焦虑?是否苦苦思考如何提高流量、吸引更多用户? 什么是整站优化。简而言之,它是一项用于提升网站在搜索引擎中排名的策略和技巧。通过对网站的内容、结构、速度等方面进行优化,可以使…

Acer宏碁暗影骑士5笔记本AN517-54原装出厂Win10系统工厂模式

宏基电脑原厂WINDOWS10系统自带所有硬件的驱动、NITROSENSE风扇键盘控制中心、Office办公软件、出厂主题壁纸LOGO、 Acer Care Center、Quick Access等预装程序 链接:https://pan.baidu.com/s/1Ovui_CvsUaF-TX0NbuhEVg?pwdcrmv 提取码:crmv 所需要工…

第1讲:前后端分离思想

什么是前端 前端其实是个很大的范畴。 简单点说,针对浏览器的开发,浏览器呈现出来的页面就是前端。它的实质是前端代码在浏览器端被编译、运行、渲染。前端代码主要由三个部分构成:HTML(超文本标记语言)、CSS&#xf…

[CISCN 2019 初赛]Love Math 通过进制转换执行命令

目录 hex2bin bin2hex base_convert 动态函数 第一种解法 通过get获取参数 绕过 第二种解法 读取请求头 getallheaders echo a,b 第三种解法 异或获得更多字符 这道题也是很有意思! 通过规定白名单和黑名单 指定了 函数为数学函数 并且参数也只能是规…

角度回归——角度编码方式

文章目录 1.为什么研究角度的编码方式?1.1 角度本身具有周期性1.2 深度学习的损失函数因为角度本身的周期性,在周期性的点上可能产生很大的Loss,造成训练不稳定1.3 那么如何处理边界问题呢:(以θ的边界问题为例&#x…

Bartender for Mac菜单栏图标自定义

Bartender 是一款可以帮助用户更好地管理和组织菜单栏图标的 macOS 软件。它允许用户隐藏和重新排列菜单栏图标,从而减少混乱和杂乱。 以下是 Bartender 的主要特点: 菜单栏图标隐藏:Bartender 允许用户隐藏菜单栏图标,只在需要时…

【Vue3 源码讲解】nextTick

nextTick 是 Vue 3 中用于异步执行回调函数的函数&#xff0c;它会将回调函数延迟到下一个微任务队列中执行。其中&#xff0c;Vue 更新 DOM 是异步的。下面是对 nextTick 函数的详细解释&#xff1a; export function nextTick<T void, R void>(this: T,fn?: (this:…

【已解决】ModuleNotFoundError: No module named ‘torchnet‘

问题描述 今天在复现Chinese-Chatbot-PyTorch-Implementation的时候出现了一些问题&#xff1a;包括且不限于ModuleNotFoundError: No module named torchnet&#xff0c;ModuleNotFoundError: No module named fire&#xff0c;ModuleNotFoundError: No module named jieba和E…

9.22 QT作业

widget.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QMessageBox> #include <QDebug> #include "second.h" //第二个界面头文件 #include "third.h" //注册界面头文件#include <QSqlDatabase&g…

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(一)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow环境方法一方法二 后端服务器Django环境配置微信小程序环境 相关其它博客工程源代码下载其它资料下载 前言 本项目专注于MovieLens数据集&#xff0c;并采用TensorFlow中的2D文本卷积网络模型。它结合…

软件设计师笔记系列(三)

&#x1f600;前言 随着计算机技术的日益发展&#xff0c;操作系统作为计算机系统的核心组件&#xff0c;其重要性不言而喻。操作系统不仅管理和控制计算机硬件和软件资源&#xff0c;还为用户和其他软件提供服务&#xff0c;使得复杂的计算机系统能够高效、安全和方便地运行。…

网络监控应用程序

在过去的几十年中&#xff0c;网络监控应用稳步发展&#xff0c;以适应不断变化的市场需求和期望。多年来&#xff0c;停机成本飙升&#xff0c;客户对停机的耐心比以往任何时候都低&#xff0c;不仅仅是正常运行时间&#xff0c;正常运行时间的质量也变得很重要。 另一个发展…

使用QLoRA对Llama 2进行微调的详细笔记

使用QLoRA对Llama 2进行微调是我们常用的一个方法&#xff0c;但是在微调时会遇到各种各样的问题&#xff0c;所以在本文中&#xff0c;将尝试以详细注释的方式给出一些常见问题的答案。这些问题是特定于代码的&#xff0c;大多数注释都是针对所涉及的开源库以及所使用的方法和…

Vue之vue-cli搭建SPA项目

目录 ​编辑 前言 一、vue-cli简介 1. 什么是vue-cli 2. vue-cli的重要性 3. vue-cli的应用场景 二、Vue-cli搭建SPA项目 1. 构建前提&#xff08;node.js安装完成&#xff09; 2. 安装vue-cli 3. 使用脚手架vue-cli(2.X版)来构建项目 4. 分析创建spa项目的八个问题 …

康耐视Visionpro-单ToolBlock工具规范与脚本测量规范案例分享

目录 项目要求:测试红框内的宽度显示效果第一步:建立变量第二步:建立命名空间第三步:初始化和关联工具第四步:业务逻辑和标签建立第五步:图层添加标签全部代码项目要求:测试红框内的宽度 显示效果 使用工具输入输出变量解析: 变量分析:变量Select1强制此ToolBLock输出…

2022年贵州省职业院校技能大赛中职组网络安全赛项规程

2022年贵州省职业院校技能大赛中职组 网络安全赛项规程 一、赛项名称 赛项名称&#xff1a;网络安全 赛项归属&#xff1a; 信息技术类 二、竞赛目的 为检验中职学校网络信息安全人才培养成效&#xff0c;促进网络信息安全专业教学改革&#xff0c;培养大批既满足国家网络…

Ubuntu上通过源码方式安装Redis

上一篇文章Ubuntu上安装、使用Redis的详细教程已经介绍了再Ubuntu操作系统上安装Redis的详细过程&#xff0c;但是因为安装的Redis只有最主要的配置文件和redis-server&#xff0c;为了更深入地学习Redis和进行更复杂的操作&#xff0c;需要安装一个完整的Redis服务。 这篇文章…

【Windows Server 2012 R2搭建FTP站点】

打开服务器管理器——添加角色和功能 下一步 下一步 下一步 选择FTP服务器&#xff0c;勾上FTP服务和FTP扩展&#xff0c;点击下一步 安装 安装完成关闭 打开我们的IIS服务器 在WIN-XXX主页可以看到我们的FTP相关菜单 右键WIN-XXXX主页&#xff0c;添加FTP站点 输入站点名称-FT…