支付宝支付功能的实现

article/2025/10/5 4:37:10

支付宝支付功能实现

一.环境准备

在这里插入图片描述

二.配置沙箱环境

1.浏览器搜索 支付宝开放平台
在这里插入图片描述
2.找到开发服务,选择沙箱
在这里插入图片描述
3.根据文档提示,一步步配置

在这里插入图片描述
4.配置完成后的样子

在这里插入图片描述
5.下载好支付宝手机开放平台助手,可以获取应用私钥
在这里插入图片描述
**注意:**应用公钥不是直接获取下那个,它是先复制应用公钥是,再到沙箱环境中获取

在这里插入图片描述
首先进入沙箱
在这里插入图片描述
把你从支付宝开发平台开发助手上复制的 应用公钥,粘贴上去

在这里插入图片描述
最后保存设置,就会出现这个界面,得到的就是,我们想要的公钥,是不是很简单呢
在这里插入图片描述

三,代码部分

1.新建项目,我用的是SpringBoot项目

导入支付需要的依赖

   <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java --><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>3.7.110.ALL</version></dependency>

2.编写控制器AlipayController

package com.ytzl.trade2020828.controller;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.AlipayTradeAppPayRequest;
import com.alipay.api.response.AlipayTradeAppPayResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@RestController
@RequestMapping("/pay/ali")
public class AliPayController{/*** 沙箱应用APP_ID应用id*/public final static String APP_ID="2021000118695484";/*** 应用私匙*/public final static String APP_PRIVATE_KEY="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxm7nUK2aLPGrm3qNY0e8NJUBWXz4Ba92wDaqSd9Epk3rVdMJa4gOa/UG1lL/Ex/7IModX8oPCZGDydsUh+ldRPkLsxWoyo3Wtb9jLtv7AM4Fdmmhz0kAGEYlUTPBmsrr++SNDMk/IYyn8Sb456zYiFotp4WPOsjDT7D2JAMc17PApDen9oqBiJhXjqqJE5DuQlLGLQ2ECs7HyfuKZgGyunxj39W58EIs+CADeEmR5AOnpiJc6Ry0bHpqXll5WQ+28NP9eSEYE3szIh2D1IcTzI7f/6W7CyzCkinYgfHhxo+aKXljWTwUnqal9iPdAZRh5fCcUrPtZkgIKQO/0fnLrAgMBAAECggEBAJH6tvBGg9ApZow/re7RDjS1y32yZppweBO+B9a/GHGdwDY185ETd3cqdZmzmzM4VpdhwJBuyhE6w9xF9p2Iz7/89rD5SeI5K/3TklNOI3ECZG/0+6lGxEy4mTFq06T1fnEXgP44Gg9QQjAUxH+CbknyUcBC+u/m0e89mw5CT3pn1t8XudaB2EHOlKpt/kisen2LPQYdIxyNecPqiV6oBgP6KyUVdUBPjei4l5PqIOhzbIC5fnNStZrug0r+Klyw4PJTjCOw8jX9jqNb8i+2eXqwgCXYZvnrV7/qkYuQeYnQXvBsTE+sg3+SagJ96dJ5dLNrCdTpN8UolCsB8M5FCJECgYEA6IJyr++R+sRRf3EIUDr6ohU/GsJrO29/yjGWQz3aS0G0S6rNMPHoy2mUAlUv3SodGA+2NjiP2ZdV3FQfwLf6hCWj22R3klmsc3dVWswnTBIhnGej7BAADIwnzumUb9swXTQJr9Q7Tw/rxh+OeC1Cb8CbP8HeS81DFMpcEMNd0R0CgYEAw41UXLC3nmw/fStEUkrMyyyWDLeNyGX3INzmUO9+YI7gv/DZwWUjgk/RJutZaf3lSdoFe2rbDSaFFcdvLSGaVx+jHzU57GP57u6dlegmlFywMtohKMT5pp9TyjFHf0keVsan3TNY6/BEgqrw/9QcV5UwMF7CfztmRj9ceZnJ3acCgYBpXlSjLqq1PirA2nSuB0x2D7LdaaY29TywYPB74JgA6vHOKMV8nOSm6l3NANYEIIW21cf5ooBuV4rtoqIRME8ze+taDZmylTj1yuq/jy1v5/ebbcx3uniLNykDOA+w8WBlnKOXL1MBbXGoA70I8VneUycIKc+YApmX3m0Cm8b0cQKBgC7cel/v9UCgniJHsQqrZCI4IAkSH4brcGpOpV611aob8x3sALLIotbCe9OAyJ+OuViWR4QI2k9vcKsEbM7643qHWVbMMYJFfwpT4i2fQUeCYrL89L9JXK4iNjkY0BJfmkafOnDWsjNwE2rgvfoAgX43gSHGQ4Or31lsK6P0R5y3AoGAQeW5Xo9uIO4K1BF4ppiCf22lar7Kj/+cCy/Q+zJwIX8eEPJq5NCchGP5zkDKLV4xXNw3+ftdOCfeKEtjcMbOJ4092TeB6qWUeKzkcbxKOepJO3NJfBTqi5btxixbgT8fJIFN6qqjOiHBIINOvSWY0AgWI52W7gXCp/Mc1V1O+qM=";/*** 编码*/public final static String CHARSET="UTF-8";/*** 支付宝公钥*/public final static String ALIPAY_PUBLIC_KEY="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp09reAC0u4oUuvcptaWSqLw6YMUHyIKW7i1pW+4bsYHHivDK2yEIGozfbYA+AB14V3gRPwPd2IEmTUGBGL2KdITMGy65kF0O53cN8Soyi8z0zjn/A0pvQ/aexrJJP1w0IXKsG1xXa6ckS9JDtD5aaUNc829igMhrXPs8LQUN0lsmSwgUqaOzkIXwncHEEf1hiU/9UPaA7S7IOZ8wSQazXMkMRkWeCLMfvGNzTDpKRGoZdKCtfv6/7kLHGl9rfGX8HTDRj479bieiCgxeeXv4MC7HFAwx/TRZbOUeQTri/GbqWZ7oXQLp/T2/QROKN1J3tCKZSRi/Z9lZrlNjWgk3+QIDAQAB";/*** 签名类型*/public final static String STRING="RSA2";/*** 沙箱网关*/public final static String GAIEWAY_URL="https://openapi.alipaydev.com/gateway.do";public final static String FORMT="json";/*** 获取订单信息* @param orderId* @return*/@GetMapping("/getOrderInfo")public String showOrderInfo(String orderId){//实例化客户端AlipayClient alipayClient = new DefaultAlipayClient(GAIEWAY_URL, APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.payAlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();model.setBody("我是测试数据");model.setSubject("大白兔奶糖");model.setOutTradeNo("3号");model.setTimeoutExpress("30m");model.setTotalAmount("10000");model.setProductCode("QUICK_MSECURITY_PAY");request.setBizModel(model);//异步回调的地址request.setNotifyUrl("http://3v3n846184.qicp.vip/pay/ali/notity_url");try {//这里和普通的接口调用不同,使用的是sdkExecuteAlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。} catch (AlipayApiException e) {e.printStackTrace();}return null;
}@RequestMapping("/notity_url")public String notify_url(HttpServletRequest request){//获取支付宝POST过来反馈信息Map<String,String> params = new HashMap<String,String>();Map requestParams = request.getParameterMap();for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {String name = (String) iter.next();String[] values = (String[]) requestParams.get(name);String valueStr = "";for (int i = 0; i < values.length; i++) {valueStr = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + ",";}//乱码解决,这段代码在出现乱码时使用。//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");params.put(name, valueStr);}//切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。//boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)try {//如果验签失败boolean flag = AlipaySignature.rsaCheckV1(params, ALIPAY_PUBLIC_KEY,  CHARSET,STRING);if(!flag){return "fail";}System.out.println("修改订单成功!");return "success";} catch (AlipayApiException e) {e.printStackTrace();return "fail";}}public static void main(String[] args) {AliPayController aliPayController=new AliPayController();aliPayController.showOrderInfo(null);}}

3.测试,手机上下载 客户端调试工具

1.下载手机客户端

在这里插入图片描述

2.将服务器签名好的字符串复制进去

在这里插入图片描述

在这里插入图片描述

这样支付成功啦,是不是神奇呢
在这里插入图片描述


http://chatgpt.dhexx.cn/article/qtXpRmUD.shtml

相关文章

针对Spring/Gradle启动失败的一些通用解决方案

文章目录 0 前言1 更改Gradle JVM的Java JDK1.1 执行JUnit测试时&#xff0c;Gradle报错 0 前言 当你对Spring/Gradle启动失败的错误信息一筹莫展时&#xff0c;不妨试试以下这些通用的解决方案 1 更改Gradle JVM的Java JDK Settings -> Build, Execution, Deployment -&…

13123

111 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不…

编译JSqlparser

这个东西是用来解析sql的。既然要编译源码&#xff0c;第一步当然要下载源码了。 要下源码当然是到世界最大同志网站了: https://github.com/JSQLParser/JSqlParser 项目导入idea&#xff0c;缺少源码&#xff0c;原来需要javacc来生成代码。 自然我们需要安装javacc这个东西&…

jsqlparser:修改语法定义(JSqlParserCC.jjt)实现UPSERT支持Phoenix语法ON DUPLICATE KEY IGNORE

最近在用jsqlparser4.5解析SQL时遇到了一个问题&#xff0c; 如下是apache phoenix的UPSERT语句 UPSERT INTO TEST (ID, COUNTER) VALUES (123, 0) ON DUPLICATE KEY IGNOREON DUPLICATE KEY IGNORE即为当主键重复时忽略&#xff0c;这与MySQL的IGNORE语法不同&#xff1a; …

jsqlparser mysql_java sql解析器比较druid sql parser vs jsqlparser vs fdb-sql-parser

先上结论。 功能上&#xff1a;druid sql parser(支持分区、WITH、DUAL等。使用mysql语法解析时&#xff0c;已知oracle的一些操作符会被转为mysql&#xff0c;如|| 转为OR。使用oracle解析器时&#xff0c;union all里面的括号会被移到外面&#xff0c;从而导致可能执行出错) …

JSqlParser4.3版本无法解析mysql中JSON_OBJECT函数抛出ParseException异常

2022年3月31日&#xff0c;找了一下午的bug bug 已经提交issues&#xff0c;详情请看GitHub&#xff0c;地址&#xff1a;https://github.com/JSQLParser/JSqlParser/issues/1504 使用JSqlparser4.3版作者提供的补丁版后解决&#xff0c;下载地址&#xff1a;https://download.…

JSqlparser 使用攻略(高效的SQL解析工具)

JSqlparser github地址 目录 Maven 引用远程仓库依赖包 SQL解析获取SQL中的信息创建Select的方式创建Select&#xff08;非SQL String 创建&#xff09; Insert 插入字段和值where条件中字段替换解析SQL例子获取所有tableNames自动生成别名SQL函数单表where条件拼装JOIN 拼装 校…

jsqlparser 简介、中文文档、中英对照文档 下载

jsqlparser 文档 下载链接&#xff08;含jar包、源码、pom&#xff09; 组件名称中文-文档-下载链接中英对照-文档-下载链接jsqlparser-0.9.5.jarjsqlparser-0.9.5-API文档-中文版.zipjsqlparser-0.9.5-API文档-中英对照版.zipjsqlparser-1.0.jarjsqlparser-1.0-API文档-中文版…

java使用jsqlparser实现自定义转换

jsqlparser描述&#xff1a; JSqlParser 解析 SQL 语句并将其转换为 Java 类的层次结构。基本上的sql关键字和函数都可以被jsqlparser解析成对象层层包装。 实现的功能&#xff1a; 基础sql查询&#xff0c;条件查询&#xff0c;字段和表得别名&#xff0c;排序&#xff0c;…

JSQLParser碰到的问题

JSQLParser是github上一个开源的项目&#xff0c;专门解析SQL&#xff0c;可以轻松地得到一条SQL的列、表、条件等对象&#xff0c; P.S. https://github.com/JSQLParser/JSqlParser 最近在做一个功能开发的时候&#xff0c;被他困扰了下&#xff0c;从需求来讲&#xff0c;就是…

JSqlParser-SQL解析处理

一、介绍 JSqlParse是一款很精简的sql解析工具&#xff0c;将sql语句转成Java对象。 官网&#xff1a;JSqlParser - Home 用法&#xff1a;可以用于数据权限处理&#xff0c;拦截sql解析改写sql等等。 二、版本 <dependency><groupId>com.github.jsqlparser&l…

JSQLParser 解析复杂SQL 2.0

前言 这段时间&#xff0c;为了开发数据中台项目&#xff0c;我去研究学习了JSQLParser&#xff08;Java中解析SQL语句的工具&#xff09;&#xff0c;并且结合网上资料&#xff0c;写了一个初步的SQL解析工具类... 正文 时隔三天&#xff0c;我又回来了&#xff0c; 因为之前J…

JSqlParser入门系列(1)-JSqlParser简介及入门案例

简介 JSqlParser是一个SQL语句解析器。它将SQL转换为Java类的可遍历层次结构。 支持Oracle&#xff0c;SqlServer&#xff0c;MySQL&#xff0c;PostgreSQL等常用数据库。但各种数据库系统的SQL语法都在动态变化&#xff0c;可以解析某些&#xff08;不是全部&#xff09;。 …

JSqlParser

JSqlParser 关于SqlParser引言&#xff1a; Java 生态中较为流行的 SQL Parser 有以下几种&#xff1a; fdb-sql-parser 是 FoundationDB 在被 Apple 收购前开源的 SQL Parser&#xff08;不支持很复杂的SQL&#xff09;&#xff0c;目前已无人维护。jsqlparser 是基于 Java…

Sql解析转换之JSqlParse完整介绍

1、 jsqlparse介绍 JSqlParse是一款很精简的sql解析工具&#xff0c;它可以将常用的sql文本解析成具有层级结构的“语法树”&#xff0c;我们可以针对解析后的“树节点&#xff08;也即官网里说的有层次结构的java类&#xff09;”进行处理进而生成符合我们要求的sql形式。 官…

相机内参模型Kannala-Brandt/fisheye/pinhole+equi详解

文章目录 1. 论文总述2. pinholeradtan无法建模鱼眼相机3. 内参模型3.1 Radially Symmetric Model3.2 Full Model3.3 affine transformation3.4 Backward Model 4. 标定4.1 ORIFL190-3 lens 可以被标定 5. 内参结果验证参考文献 本博客主要从fisheye论文角度&#xff0c;详细介…

python-opencv实现pinhole相机图像转fisheye相机图像

根据鱼眼相机公式rff*θ&#xff0c;其中θatan(rc/f)&#xff0c;即可实现从pinhole相机模型到fisheye相机模型的像素映射。可自行设置焦距&#xff0c;我使用如下代码完成了将cityscape数据集转换为鱼眼视角。 import numpy as np import cv2 import osclass ConvertFisheye…

jiraconfluencefisheye用户同步

分别安装好jira和confluence&#xff0c;fisheye之后&#xff0c;先在jira中将confluence和fisheye的应用程序连接配置好。如下 配置好后&#xff0c;在jira中的用户服务器中可以已经允许对应的程序使用jira的用户了。 此时&#xff0c;分别去confluence或者fisheye的user-d…

Atlassian家族 JIRA Confluence Fisheye 在 Linux (CentOS 7.6 )安装部署教程

安装包 atlassian-agent-v1.2.2.tar.gz # 破解工具atlassian-fisheye-4.8.3.zipatlassian-confluence-7.4.1-lts-x64.binatlassian-jira-software-8.5.5-lts-x64.bin 部署环境 Linux版本&#xff1a;CentOS 7.6VMware 16Confluence 6.3.1Jira 8.5.5MySQL 5.6JDK 1.8…

【图像】【OpenCV鱼眼矫正】二、fisheye::initUndistortRectifyMap()源码分析

目录 一、fisheye::initUndistortRectifyMap() 之 功能介绍二、fisheye::initUndistortRectifyMap() 之 源码分析1. 源码分析2. 更进一步3. 如何由 (j, i) 算出 (u, v) &#xff1f; 一、fisheye::initUndistortRectifyMap() 之 功能介绍 在上一篇文章的第 2. 部分中&#xff…