微信公众号调用沙箱支付

沙箱支付

登录支付宝开放平台,选择底部沙箱支付
在这里插入图片描述下载密钥生成工具
在这里插入图片描述生成应用私钥与公钥,上传沙箱支付,获得支付宝公钥
在这里插入图片描述在这里插入图片描述

配置支付通知与支付回调地址
在这里插入图片描述

SpringBoot配置

yml文件

在这里插入图片描述这里的地址必须与沙箱配置的一样
controller

package com.zq.wx.controller;import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.zq.wx.entity.DonaEntity;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;//调用支付宝支付
@Controller
public class AlipayController {@Value("${alipay.appId}")private String appId;@Value("${alipay.appPrivateKey}")private String appPrivateKey;@Value("${alipay.charSet}")private String charSet;@Value("${alipay.alipayPublicKey}")private String alipayPublicKey;@Value("${alipay.signType}")private String signType;@Value("${alipay.getewayUrl}")private String getewayUrl;@Value("${alipay.notifyUrl}")private String notifyUrl;@Value("${alipay.returnUrl}")private String returnUrl;@Value("${alipay.format}")private String format;@ResponseBody@PostMapping("/alipay/pay")public String alipay(HttpSession session,@RequestBody DonaEntity donaEntity) throws AlipayApiException {//把dona_id项目id 放在session中session.setAttribute("dona_id",donaEntity.getDonaId());//生成订单号(支付宝的要求?)String time = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());String user = UUID.randomUUID().toString().replace("-","").toUpperCase();String OrderNum = time+user;//调用封装好的方法(给支付宝接口发送请求)return sendRequestToAlipay(OrderNum,donaEntity.getDonaMoney(),"测试商品");}/*参数1:订单号参数2:订单金额参数3:订单名称*///支付宝官方提供的接口private String sendRequestToAlipay(String outTradeNo, Float totalAmount, String subject) throws AlipayApiException {//获得初始化的AlipayClientAlipayClient alipayClient = new DefaultAlipayClient(getewayUrl,appId,appPrivateKey,format,charSet,alipayPublicKey,signType);//设置请求参数AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//支付成功异步地址alipayRequest.setNotifyUrl(notifyUrl);alipayRequest.setReturnUrl(returnUrl);//商品描述(可空)String body="";alipayRequest.setBizContent("{\"out_trade_no\":\"" + outTradeNo + "\","+ "\"total_amount\":\"" + totalAmount + "\","+ "\"subject\":\"" + subject + "\","+ "\"body\":\"" + body + "\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//请求String result = alipayClient.pageExecute(alipayRequest).getBody();return result;}//异步通知地址@RequestMapping("/alipay/notifyUrl")public String notifyUrl(){return "alipay/notify";}//回调地址@RequestMapping("/alipay/returnUrl")public String returnUrl(){return "alipay/return";}

前端html ajax 请求

// 发送 AJAX 请求$.ajax({url: '/alipay/pay', // 后端接收数据的接口地址type: 'POST', // 请求类型,通常是 POSTcontentType: 'application/json', // 告诉后端你发送的是 JSON 格式的数据data: JSON.stringify({ // 将 JavaScript 对象转换为 JSON 字符串donaId: 1008111,donaMoney: 100.00,}),success: function(response) {// 请求成功时的回调函数,沙箱返回html代码,这里要跳转新页面const div = document.createElement('divform');div.innerHTML = response;document.body.appendChild(div);document.forms['punchout_form'].setAttribute('target', '_blank')document.forms['punchout_form'].submit()},error: function(xhr, status, error) {// 请求失败时的回调函数console.error('Error:', error);}});

ajax发送请求,页面跳转
在这里插入图片描述
输入沙箱买家测试号
在这里插入图片描述支付成功,等待几秒,跳转自己的回调页面
在这里插入图片描述

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

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

相关文章

植物病害识别:YOLO水稻病害识别数据集(11000多张,yolo标注)

YOLO水稻病害识别数据集,包含叶斑病,褐斑病,细菌性枯萎病,东格鲁病毒病4个常见病害类别,共11000多张图像,yolo标注完整,可直接训练。 适用于CV项目,毕设,科研&#xff0c…

第十五届蓝桥杯-UART接收不定长指令的处理

学习初衷: 不仅仅为了比赛! 目录 一、问题引入 二、UART常用的三种工作模式 1.UART工作在中断模式 2.UART工作在DMA模式下 3.uart工作在接收转空闲的模式下 三、获取指令中需要的数据 四、printf函数的实现 一、问题引入 问题引入:请…

【Java】仓库管理系统 SpringBoot+LayUI+DTree(源码)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

深度学习Top10算法

自2006年深度学习概念被提出以来,20年快过去了,深度学习作为人工智能领域的一场革命,已经催生了许多具有影响力的算法。以下是深度学习top10算法,它们在创新性、应用价值和影响力方面都具有重要的地位。 1、深度神经网络&#xf…

鸿蒙开发(四)-低代码开发

鸿蒙开发(四)-低代码开发 本文主要介绍下鸿蒙下的低代码开发。 鸿蒙低代码是指在鸿蒙操作系统进行应用开发时,采用简化开发流程和减少编码量的方式来提高开发效率。 1:开启低代码开发 首先我们打开DevEco Studio .然后创建工程。 如图所示&#xff…

定制红酒:如何根据客户需求调整红酒口感与风格

在云仓酒庄洒派,云仓酒庄洒派深知不同消费者对于红酒的口感与风格有着不同的喜好和需求。因此,云仓酒庄洒派根据消费者的具体要求,灵活调整红酒的口感与风格,以满足他们的期望。 首先,云仓酒庄洒派会与消费者进行深入的…

AHU 汇编 实验三

实验名称:实验三 串操作指令 二、实验内容: 在数据段定义缓冲区,从键盘接收两串字符到两个缓冲区,将第二串中与第一串字符不一致的字符显示在屏幕。 实验过程: 源代码: data segmentmess1 db 16,?,16…

数据分析-Pandas如何画图验证数据随机性

数据分析-Pandas如何画图验证数据随机性 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表…

【字典合集】SecLists-更全面的渗透测试字典 v2024.1

下路路径 SecLists-更全面的渗透测试字典 v2024.1 简介 SecLists 是一个致力于收集各种安全字典的开源项目。这些字典包括但不限于:密码字典、用户名字典、网络扫描结果、漏洞利用载荷、web shells、可用于渗透测试的Payloads、以及其他各种安全相关的字典。 这…

Docker初体验之安装部署和镜像加速(openeuler版)

安装部署: 本人使用的为openeuler版本,无法使用二进制进行安装(使用二进制安装时,无法使用docker中的补全命令,需要重新进行配置)在此使用yum直接进行安装。 [rootlocalhost ~]# yum install docker 镜像…

在VMvare中虚拟机安装centos7和初始设置

下载镜像 阿里云的镜像站:https://mirrors.aliyun.com/centos/7/isos/x86_64/ 创建虚拟机过程 虚拟机创建过程比较简单,以下在VMvare16中进行安装 点击左上角,文件-新建虚拟机: 选择典型 选择刚刚下载好的镜像 输入虚拟机…

如何判断DNS解析故障?

DNS解析负责将域名解析到对应的IP地址,从而实现用户通过域名访问站点的效果。因此DNS解析是整个互联网中非常关键和基础的一个环节,但也是众多网站运营者和管理者经常忽视的一个环节。所以在出现DNS解析错误时,很多人都会感到手足无措&#x…

【Echarts】曲线图上方显示数字以及自定义值,标题和副标题居中,鼠标上显示信息以及自定义信息

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《前端》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握…

第七次作业

IPSEC VPPN实验配置 目标:在FW5和FW3之间建立一条IPSEC通道,保证10.0.2.0/24网段可以正常访问到192.168.1.0/24 1.FW1和FW2进行双机热备(之前实验没保存,可看上个实验) 还有一些配置前面实验有。 2.场景选择点对点…

探究精酿啤酒的秘密:原料中的天然酵母与纯净水质

在啤酒的世界中,Fendi Club精酿啤酒以其与众不同的口感和深远的余味吸引了全球的啤酒爱好者。而这一切,都归功于其选用的上好原料,特别是天然酵母和纯净水质。 天然酵母是啤酒的灵魂。与工业生产的啤酒酵母不同,天然酵母富含丰富的…

分布式之Ribbon使用以及原理

Ribbon使用以及原理 1、负载均衡的两种方式 服务器端负载均衡 传统的方式前端发送请求会到我们的的nginx上去,nginx作为反向代理,然后路由给后端的服务器,由于负载均衡算法是nginx提供的,而nginx是部署到服务器端的,所…

20240310-1-Java后端开发知识体系

Java 基础 知识体系 Questions 1. HashMap 1.8与1.7的区别 1.71.8底层结构数组链表数组链表/红黑树插入方式头插法尾插法计算hash值4次位运算5次异或运算1次位运算1次异或运算扩容、插入先扩容再插入先插入再扩容扩容后位置计算重新hash原位置或原位置旧容量 (1) 扩容因子…

论文笔记:Evaluating the Performance of Large Language Models on GAOKAO Benchmark

1 论文思路 采用zero-shot prompting的方式,将试题转化为ChatGPT的输入 对于数学题,将公式转化为latex输入 主观题由专业教师打分 2 数据 2010~2022年,一共13年间的全国A卷和全国B卷 3 结论 3.1 不同模型的zeroshot 高考总分 3.2 各科主…

掘根宝典之C++类型别名,关键字typedef,auto,decltype

类型别名 在C中,我们可以使用typedef关键字或using关键字来创建类型别名。下面是两种方式的示例: 使用typedef关键字创建类型别名: typedef int myInt; typedef float myFloat;myInt a;//等价int a; myFloat b;//等价float b; 使用using关…

javase day03笔记

第三天课堂笔记 idea的使用★★★ 创建空工程创建模块创建包:package创建类idea的设置 file -> settings 快捷键 shift + 回车 : 光标切换到下一行psvm回车: main方法main回车:main方法sout回车:输…