最新要闻
- 美国遭史上最严重禽流感疫情:鸡蛋价格创纪录 真吃不起节奏
- 每日短讯:剪映上线团队剪辑“神技”:异地多端一起剪视频成为可能
- 3299元起 vivo S16 Pro手机发布:首发双面柔光人像拍摄
- 环球信息:童年的味道 大白兔奶糖促销:1斤20元到手
- 环球聚焦:自拍绝了!vivo发布新机S16e:2099元起、行业首创“玉质玻璃”工艺
- 雷军宣布小米人事调整:总裁王翔退休 卢伟冰晋升
- 环球热消息:特斯拉北美大降价5.2万 超高折扣只为保住销量?
- vivo S16系列亮相:标准版搭载骁龙870 Pro版搭载天玑8200
- vivo S16系列出厂预装OriginOS 3 虚拟内存提升8G
- vivo S16系列7.36mm机身塞进4600mAh:苹果iPhone都没做到
- 【天天聚看点】男子开宝马专挑外地牌照车碰瓷 套路防不胜防:扔石头制造声响
- 迪士尼神话剧《美生中国人》新剧照:杨紫琼饰演观音 吴彦祖变身孙悟空
- 环球滚动:FIFA年终国家队排名:国足降至第80 美加墨世界杯出线希望增加
- 【报资讯】RTX 40系列移动显卡参数曝光:价格可不低
- 世界通讯!一加首款键盘曝光:全铝机身、自带USB-C/A接口
- 焦点热议:历史总是惊人地相似:复古主机Atari VCS宣告停产 一个时代终结
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
支付宝接入技术
(资料图片仅供参考)
准备工作:去支付宝开放平台准备好以下东西
// 沙箱应用私钥(private key) private String shaxiang_app_private_Key = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDX0zMqoLHjndDPohURqt/xbQasYcFgJaSyb/kE54eUK0CeDnf3UyYKzESrgCsw2lg6UKnOVMCgjRQvmu+wUJVvtxy9Sne9fro9K2fHH8tqSevGHTDeSOdZRDrk4JBQIAJ01qoTMVJtivyWXngFMrAGz+eTegWeCKzIIKUea55ebzR6ltYL1OCAxBOxowvVKUkczljFt9wNQ3D3usG5HdKIlrDCyUIjfAf/LhNAnicOlu0XrhJST6phOZI4zzlty8NSsBC9/x8eSMevLkOCJFc78eSGJLCLX7BGT6nCXvkOSoe/70jaha5v05TJa0nRRc9/j3v/DHi06690CUTrwSPZAgMBAAECggEBAMwXZm1LJK1QEaQna7EXW0ochZEBqDHZpxMuG9ftciJFfId6uytgr7rKS626OB2sfH44xTrenoG0p4AVDdA3g/juufiusOi7LDaoEy0T/fH3EUR5Wjr5yfx6Lw885HtAqdH/JTmdDIuWQSGZF//BU5Pe7pvxnBh1a3s31iRovZvjIaCo5B1p9gIhU0lVXwHOI0QSBuiNqqZQ8ny2MXRldgOCAs9JWSFoPVEH7J4rhqqukOC4FMXg4jMkncSKFoZ71C2+Gqop7ipRxqcocdBXnlR34LX1G55OcUJTuuIBCJ/fCPgECgYEA7bPigHafk/hI11XFO1R682AE/oFV2138Kn6vT90XmJ4FrCY5LbHy5bCrn7sXVDcFIXim9cNLnbQ8HIqSE8YTMDjm5PVZnp7Fsj7bX4yOUpPuXPftXKaMJ/RYcRc4xz/4kAWurfonEgBqGFH95o3J/yDnTNe5luqP0jtsb/JB6HkCgYEA6HAy1TgXIVJ1mQ9A/R7exO/5lM6HLcwmq8CHlgLbJ6wWfjcKpuV0s1QxcqP7TxLPUxjoJKryfOhs57Da8xYYxUCOhyFNYhca8vrSxcQrjXdbIOzLRWErbPuhKy7tFLsz3MYQ5gX7ulWo7Ph1DNuuMep3FzWmUpizoPMBq9Ug/mECgYEAoVq1iyx64I/uqjWvv7l2CJUKbtTOui1PSm1aheT36oKCKTx9HdaoomBN8AypJmJ+2hyzgSqDvtak417xD/kp91b47TzbDACNBJUEhxS7W7TNXlBx0K3BgDGug34W7bIwAVvKGpEvSln7quylZIalMslcGV5qvdYVsMjjsA4LzUkCgYEA35fGnmsVfP14mGMfDh7bBrEd8jJ1wO1oqcFL7FcVAGW/QWyrN370sukjo/bwcdFTVMlZzqQPHW7sDDiJdltkOqNuN7kmWlyFlQUJKisaBjyxkcuXgkcF4hFwqTy73TxzmEWDzfIlg8qQ9FvRJSxRtjyokNAQDdZMvV/l1Kjx0yECgYARUHHCBysvQLmPQQ3vNOxDtWbieWozaA6j1CWDn/JTU1Hj3hsR+ySFjwvBNh7xUJ2fGoYuEh0GVq0lVIAGFRSkVRG2vGF00ZjLRkwHpkCfJhaVlaRMxC3R1lksFSnY6I0x7fEj5ccztXbA8uL+f2ajwDkPskAk2pz1HgG7bwBm6w=="; // 沙箱应用公钥(public key) private String shaxiang_app_public_Key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA19MzKqCx453Qz6IVEarf8W0GrGHBYCWksm//Laknrxh0w3kjnWUQ65OCQUCACdNaqEzFSbYr8ll54BTKwBs/nk3oFngisyCClHmueXm80epbWC9TggMQTsaML1SlJHM5YxbfcDUNw97rBuR3SiJawwslCI3wH/y4TQJ4nDpbtF64SUk+qYTmSOM85bcvDUrAQvf8fHkjHry5DgiRXO/HkhiSwi1+wRk+pwl75DkqHv+9I2oWub9OUyWtJ0UXPf497/wx4tOuvdAlE68Ej2QIDAQAB"; // 沙箱支付宝公钥 private String shaxiang_alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNGvU4bQrIGPHWNQBXZgxWDiPcrbA66Lm3jhBvKR9tdICrDVYO1Me04cQkwmiQBLfohGTzQ3b9Vb220vhDSPvyXpWz+e/jowwWXXpx0TYmJkjzgLYNpXME8x6wtIj42pMMBhOa3TtmU9bCtaWeRtkUCmJtMbMhtbVWyAGEEAe52rUx0lb73opQyJWkf1K03mRAPAsThnR9vsR3yMs8xOgSsdv/yxOsa3XywuGQ3tydqsDDXA3KgBE7/8AknzeFHRTkJChe9kLyqHpiY2LdYCC9H9YYQ8wnmBwHTRuuoqk7porX7KtIB8M6byVoKc/jGVklTKyYLISnXl4slo052lDQIDAQAB"; // 沙箱APPID private String shaxiang_app_id = "2021000118636593"; // 沙箱应用名称 private String shaxiang_app_name = "sandbox应用:2088621956695242"; // 沙箱绑定的商家账号(PID) private String shaxiang_app_pid = "2088621956695242"; // 沙箱URL private String shaxiang_url = "https://openapi.alipaydev.com/gateway.do"; // 沙箱回调URL{同步} private String shaxiang_return_url = "http://localhost:10086/api/Alipay/alipayCallBackURl"; // 沙箱字符集 private String shaxiang_char_set = "UTF-8"; // 沙箱验签方式 private String shaxiang_sign_type = "RSA2";
注册AlipayClient到Spring容器
/** * Description: 沙箱测试支付宝接口 * * @author: GuoTong * @date: 2022-12-22 21:21:04 * @return:com.alipay.api.AlipayClient */ @Bean public AlipayClient getAlipayClientShaXiang() { AlipayConfig alipayConfig = new AlipayConfig(); // 支付宝网关(固定)https://openapi.alipay.com/gateway.do alipayConfig.setServerUrl(shaxiang_url); // APPID 即创建应用后生成 alipayConfig.setAppId(shaxiang_app_id); // 开发者私钥,由开发者自己生成。 alipayConfig.setPrivateKey(shaxiang_app_private_Key); // 参数返回格式,只支持 JSON(固定)。 alipayConfig.setFormat("json"); // 编码集,支持 GBK/UTF-8 alipayConfig.setCharset(shaxiang_char_set); // 支付宝公钥,由支付宝生成。 alipayConfig.setAlipayPublicKey(shaxiang_alipay_public_key); // 生成签名字符串所使用的签名算法类型,目前支持 RSA2。 alipayConfig.setSignType(shaxiang_sign_type); //构造client try { return new DefaultAlipayClient(alipayConfig); } catch (AlipayApiException e) { e.printStackTrace(); } return null; }
支付生成页面
@RequestMapping(value = "/getAlipayPage", method = RequestMethod.GET) @ApiOperation("获取支付页面") public void getPayPage(HttpServletResponse resp, HttpServletRequest req) { AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); // 支付宝异步通知路径,付款完毕后会异步调用本项目的方法,必须为公网地址 request.setNotifyUrl(""); // 支付宝同步通知路径,也就是当付款完毕后跳转本项目的页面,可以不是公网地址 request.setReturnUrl(alipayByAPPConfig.getShaxiang_return_url()); JSONObject bizContent = new JSONObject(); String out_trade_no = req.getParameter("out_trade_no"); // 东八区时间搓,精确到秒级别 long currentTime = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")); // 设置商家订单号 bizContent.put("out_trade_no", StringUtils.defaultIfEmpty(out_trade_no, String.valueOf(currentTime))); bizContent.put("total_amount", 200); bizContent.put("subject", "测试商品"); bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY"); request.setBizContent(bizContent.toString()); AlipayTradePagePayResponse response = null; try { response = alipayClient.pageExecute(request); resp.setHeader("Content-Type", "text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); String body = response.getBody(); out.print(body); } catch (AlipayApiException | IOException e) { e.printStackTrace(); } assert response != null; if (response.isSuccess()) { log.info("调用成功"); } else { log.error("调用失败==>{}", response); } }
支付成功回调地址
@RequestMapping(value = "/alipayCallBackURl", method = RequestMethod.GET) @ApiOperation("支付完成回调地址") public ModelAndView alipayCallBackURl(HttpServletRequest req) throws UnsupportedEncodingException, AlipayApiException { Map requestParams = req.getParameterMap(); // 获取支付宝GET过来反馈信息 Map params = new HashMap<>(); for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) { String name = iter.next(); String[] values = 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(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); params.put(name, valueStr); } log.info("支付宝回调参数。。。。。。{}", params); //验证签名(支付宝公钥) boolean signVerified = AlipaySignature.rsaCheckV1(params, alipayByAPPConfig.getShaxiang_alipay_public_key(), alipayByAPPConfig.getShaxiang_char_set(), alipayByAPPConfig.getShaxiang_sign_type()); // 调用SDK验证签名 ModelAndView modelAndView = new ModelAndView("/Alipay"); //验证签名通过 if (signVerified) { // 商户订单号 String out_trade_no = new String(req.getParameter("out_trade_no").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); // 支付宝交易流水号 String trade_no = new String(req.getParameter("trade_no").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8); // 付款金额 float money = Float.parseFloat(new String(req.getParameter("total_amount").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8)); modelAndView.addObject("tradeNo", trade_no); modelAndView.addObject("tradeStatus", "回调成功"); modelAndView.addObject("totalAmount", money); modelAndView.addObject("outTradeNo", out_trade_no); return modelAndView; } else { modelAndView.addObject("tradeNo", "验证签名未通过"); modelAndView.addObject("tradeStatus", "验证签名未通过"); modelAndView.addObject("totalAmount", "验证签名未通过"); modelAndView.addObject("outTradeNo", "验证签名未通过"); } return modelAndView; }
根据商户订单号查询支付结果
/** * Description: 商家订单号查看订单 * * @param out_trade_no * @author: GuoTong * @date: 2022-12-22 20:43:42 * @return:org.springframework.web.servlet.ModelAndView */ @RequestMapping(value = "/queryInfobyOutTradeNo", method = RequestMethod.GET) @ApiOperation("商家订单号查看订单") public ModelAndView queryAlipayInfo(@RequestParam("out_trade_no") String out_trade_no) { AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); JSONObject bizContent = new JSONObject(); bizContent.put("out_trade_no", out_trade_no); request.setBizContent(bizContent.toString()); AlipayTradeQueryResponse response = null; ModelAndView modelAndView = new ModelAndView("/Alipay"); try { response = alipayClient.execute(request); // 支付宝交易号 String tradeNo = response.getTradeNo(); // 交易状态:WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款) String tradeStatus = response.getTradeStatus(); //交易的订单金额 String totalAmount = response.getTotalAmount(); // 商家订单号 String outTradeNo = response.getOutTradeNo(); modelAndView.addObject("tradeNo", tradeNo); modelAndView.addObject("tradeStatus", tradeStatus); modelAndView.addObject("totalAmount", totalAmount); modelAndView.addObject("outTradeNo", outTradeNo); } catch (AlipayApiException e) { e.printStackTrace(); } assert response != null; if (response.isSuccess()) { System.out.println("调用成功"); } else { System.out.println("调用失败"); } return modelAndView; }
本地展示界面
<script th:src="@{/bootstrap-3.4.1-dist/js/bootstrap.js}"></script> 支付宝 支付宝交易号 交易状态 交易的订单金额 商家订单号 支付宝交易号 交易状态 交易的订单金额 商家订单号
支付反馈结果
其他操作请参考官方文档操作。。。
-
精彩看点:Codeforces 1654 G Snowy Mountain 题解 (重心分治)
题目链接假设现在起点已经确定,我们观察从这个起点开始能走的最长路径长什么样。把这条最长路径中所有...
来源: 支付宝接入技术
Python requests库指定IP请求,并使用HTTPS证书验证
世界今热点:MAUI新生4.5-字体图像集成Font&Image
精彩看点:Codeforces 1654 G Snowy Mountain 题解 (重心分治)
美国遭史上最严重禽流感疫情:鸡蛋价格创纪录 真吃不起节奏
环球速看:FreeSWITCH学习笔记:Lua脚本
每日短讯:剪映上线团队剪辑“神技”:异地多端一起剪视频成为可能
3299元起 vivo S16 Pro手机发布:首发双面柔光人像拍摄
环球信息:童年的味道 大白兔奶糖促销:1斤20元到手
环球聚焦:自拍绝了!vivo发布新机S16e:2099元起、行业首创“玉质玻璃”工艺
软链接和硬链接
世界热消息:渗透实录-02
雷军宣布小米人事调整:总裁王翔退休 卢伟冰晋升
环球热消息:特斯拉北美大降价5.2万 超高折扣只为保住销量?
vivo S16系列亮相:标准版搭载骁龙870 Pro版搭载天玑8200
vivo S16系列出厂预装OriginOS 3 虚拟内存提升8G
vivo S16系列7.36mm机身塞进4600mAh:苹果iPhone都没做到
快资讯:教你用JavaScript实现鼠标特效
【天天聚看点】男子开宝马专挑外地牌照车碰瓷 套路防不胜防:扔石头制造声响
迪士尼神话剧《美生中国人》新剧照:杨紫琼饰演观音 吴彦祖变身孙悟空
环球滚动:FIFA年终国家队排名:国足降至第80 美加墨世界杯出线希望增加
【报资讯】RTX 40系列移动显卡参数曝光:价格可不低
世界通讯!一加首款键盘曝光:全铝机身、自带USB-C/A接口
当前动态:基于Netty的IM聊天加密技术学习:一文理清常见的加密概念、术语等
JDK源码分析实战系列-PriorityBlockingQueue
资讯:Altium Designer v23.0.1.38图文详解
焦点热议:历史总是惊人地相似:复古主机Atari VCS宣告停产 一个时代终结
网友称考研民宿房费暴涨近20倍 店家:每年都一样
中国企业站稳全球LCD市场!李东生:TCL部分技术领先三星
消息!超可爱!《王者荣耀》梦奇赛年皮肤来了 特效贼棒
环球热讯:《王者荣耀》《合金弹头》联动:联名首发新英雄莱西奥
【世界播资讯】高能吸水 洁丽雅纯棉毛巾:15.9元/3条
今日报丨Intel显卡事业部突然解散!掌门人Raja回归首席架构师
全球新消息丨国内油价要止步“三连跌”!元旦后或迎新一轮价格上调
世界微头条丨比iPhone 14 Pro Max还轻 OPPO Find N2明天首销:7999元
Go 快速入门指南 - 环境安装
环球快看:什么是 HTML?
热讯:基础可视化图表之堆叠条形图
环球新动态:window系统增强优化工具
世界今热点:智创万物,数赢未来——如何助推数智时代的发展浪潮
每日时讯!入口脆甜 林家铺子乌龙茶蜜桃罐头19.9元四罐
今日讯!5年了 网易云音乐终于撕下了“网抑云”标签
全球热资讯!羊被冻死牧羊犬贴身供暖试图唤醒 网友:边牧聪明又有情
每日速读!山东一地120和119到路口秒变绿灯 网友:建议全国推广
天天看点:腾讯智能车技术花样用 数万人疯狂点赞转发
世界消息!(笔记)PID算法讲解
低代码:让企业“活”起来,赋能企业数字转型
今日要闻!大四上 | 计算机综合课设答辩经验帖
一、【Java】多线程与高并发
世界热资讯!小米史上最强!雷军确认小米13 Pro支持Wi-Fi 7:国内认证后开放
全球最资讯丨今天突然发现谷歌翻译用不了,发现是谷歌域名解析问题,现提供以下方法解决
快报:高帧畅玩《巫师3》!满血3060游戏本华硕天选3双旦入手7599 性价比超高
天天热头条丨豆瓣评分跌至6.3!《三体》动画播放量破2亿
东西生锈了是什么原因?东西生锈了怎么去除?
cbz是什么文件格式?cbz文件格式怎么打开?
快讯:创元集团的数智化实践 这次选择了和火山引擎 VeDI 搭档
大喜之日是什么意思?大喜之日祝福语
碳化硅是什么材料?碳化硅的用途有哪些?
越南十二生肖是哪些动物?越南十二生肖和中国的区别
newjeans为什么叫吴晓梅?newjeans女团成员个人资料
省略号的快捷键是什么?省略号的快捷输入方式
皮卡全面解禁再下一城!广西南宁:明年起进城无需办通行证
登陆火星4年电量即将耗尽:探测器洞察号发文告别
【新要闻】中国汽车流通协会:建议全面取消汽车限购 买车可抵税
世界百事通!如何在Word表格中拆分或合并单元格?
当前速讯:Kubernetes监控手册02-宿主监控概述
【全球新要闻】STM32 SPI DMA 源码解析及总结
全球快看点丨MySQL-带你上官网看索引
天天简讯:图算法、图数据库在风控场景的应用
热头条丨Redmi K20 Pro钉子户三年多不换机:就等卢伟冰发K60
最强性能旗舰!一加11配置公布:二代骁龙8、直接12GB+256GB起步
速读:QQ音乐iOS版12.0版发布:新增“臻品母带” 无损音质升级
“灵魂”没了!育碧确认《刺客信条:英灵殿》Steam版将无成就系统
天天观速讯丨美版《西游记》剧照公布:吴彦祖悟空、杨紫琼观音亮相
赛尔号动画片的结局是什么?赛尔号动画片精灵实力排名
流浪地球小说结局是什么?流浪地球小说经典语录
二极管如何判断正负极?二极管工作原理
世界快消息!Visual Studio Code 安装教程
Redis集群的三种方式详解(附优缺点及原理区别)
全球即时:echarts设置单位的偏移
每日速看!网约车司机一路刷抖音吓坏女乘客 司机:投诉去吧 无所谓的
天天快资讯:因收购动视暴雪 微软被美国十名玩家集体诉讼
天天视讯!气场百万 比亚迪仰望高端越野车预告:L形尾灯头次见
【独家】OPPO部分旗舰能升级到Android 17:国产手机独此一家
TCP套接字
全球即时:认证管理(锐捷无线篇)
热资讯!基于 Dubbo-Admin 实现根据请求条件路由
最新快讯!教你用Java实现动态调色板
4090也秒怂!东北网友晒NV RTX 3070显卡温度:这效果我服!
大众ID.Xtreme概念车曝光:旗下最野性的电动车
当前快讯:员工漏打卡11次被辞 法院判决:公司赔大发了
“兔圆圆”!2023年总台春晚标识和吉祥物官宣 附春晚节目单
每日速讯:网易MOBA游戏《无尽战区》宣布复活!曾于两年前停运
世界快看点丨Spring Cloud 2022 正式发布!我的天,OpenFeign 要退出历史舞台了?!
焦点快播:君子不玩物丧志,亦常以借物调心,网站集成二次元网页小组件(widget)石蒜模拟器,聊以赏玩
天天播报:让人诧异!浙江台州天上突然飘落大量羽毛:宛如鹅毛大雪
环球热文:美国动物园将归还大熊猫丫丫和乐乐 结束20年租期:曾被质疑虐待国宝
除了蔚来:大多数车企都给黑客赎金了
全球看热讯:韩国刷新世界最低生育率纪录 上学人减半:日本欧洲更慌了
天天速看:性能超RX7900 XTX!RTX 4070/4070 Ti确定:这售价给老黄买单?