html扫码支付,WEB端第三方支付接入 - 支付宝 - 扫码支付
需要接入支付宝支付了
支付宝支付相对于微信支付接入更麻烦一些,要配置密钥啥的
需要支付宝开放平台账号,并开通网站支付相关权限,具体查看官方网站
上代码:
1 - 引入依赖
com.alipay.sdk
alipay-sdk-java
4.10.0.ALL
2 - 配置,具体参数自行设置
importcom.alipay.api.AlipayApiException;importcom.alipay.api.AlipayClient;importcom.alipay.api.DefaultAlipayClient;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;
@Configurationpublic classAlipayConfig {
@Value("${***}")privateString appId;
@Value("${***}")privateString gateway;
@Value("${***}")privateString privateKey;
@Value("${***}")privateString alipayPublicKey;
@Value("${***}")privateString charset;
@Value("${***}")privateString signType;
@Beanpublic AlipayClient alipayClient() throwsAlipayApiException {return new DefaultAlipayClient(gateway, appId, privateKey, "json", charset, alipayPublicKey, signType);
}
}
3 - 支付,参数自行写入,返回的是一个链接,前端直接打开就可以了,接口就不写了
public String aliPagePay(AlipayPara para) throwsAlipayApiException {
AlipayTradePagePayRequest alipayRequest= newAlipayTradePagePayRequest();
alipayRequest.setNotifyUrl(aliNotifyUrl);
JSONObject job= newJSONObject();job.put("out_trade_no", uuid());
job.put("product_code", para.getProductCode());
job.put("total_amount", para.getTotalAmount().toString());
job.put("subject", para.getSubject());
alipayRequest.setBizContent(job.toJSONString());
// 记录支付单相关操作,代码省略AlipayResponse response= alipayClient.pageExecute(alipayRequest, "GET");returnresponse.getBody();
}
4 - 异步通知,验签,同步没用到,就不写了
public void aliPagePayNotifyMethod(HttpServletRequest request) throwsAlipayApiException, SQLException {
// 验签if (!aliPagePayRsaCheck(request)) {throw new AlipayApiException("AliPagePay notify Rsa Check Failed");
}
String outTradeNo= getParameter(request, "out_trade_no");
// 由于我支付时创建了支付单,这里查询支付单if (order == null) {throw newSQLException();
}
String tradeStatus= getParameter(request, "trade_status");
// 支付成功,可能回调多次if ("TRADE_FINISHED".equals(tradeStatus) || "TRADE_SUCCESS".equals(tradeStatus)) {//查订单,已支付就不处理了
if (order.isPay()) {return;
}
String totalAmount= getParameter(request, "total_amount");
// 判断金额是否一致if (order.getAmount().compareTo(new BigDecimal(totalAmount)) != 0) {throw newAlipayApiException();
}
String tradeNo= getParameter(request, "trade_no");
// 记录交易号
}else{throw newAlipayApiException();
}
}
5 - 验签方法
private boolean aliPagePayRsaCheck(HttpServletRequest request) throwsAlipayApiException {
Map maps = new HashMap<>();
Map requestParams =request.getParameterMap();for(String name : requestParams.keySet()) {
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] + ",";
}
maps.put(name, valueStr);
}returnAlipaySignature.rsaCheckV1(maps, alipayPublicKey, charset, signType);
}
6 - 获取参数方法 - 处理乱码问题 - 有可能 - 没具体测试,参考网上代码加的
privateString getParameter(HttpServletRequest request, String paramName) {returnhandleEncodeingError(request.getParameter(paramName));
}privateString handleEncodeingError(String str) {return newString(str.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
}
7 - 异步接口
// 注入
@RequestMapping(value = "***")public void aliPayNotify(HttpServletRequest request, HttpServletResponse response) throwsIOException {try{
payService.aliPagePayNotifyMethod(request);
response.getWriter().println("success");
}catch(Exception e) {
// 记录下日志
response.getWriter().println("fail");
}
}
至此支付宝支付接入完成,经过测试,注意参数配置.
原文:https://www.cnblogs.com/SamNicole1809/p/13564101.html
html扫码支付,WEB端第三方支付接入 - 支付宝 - 扫码支付相关推荐
- JAVA毕业设计Web端校园报修系统计算机源码+lw文档+系统+调试部署+数据库
JAVA毕业设计Web端校园报修系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计Web端校园报修系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 ...
- android扫码支付宝ofo,ofo等六大单车接入支付宝扫码
喜大普奔!面对停在街边五颜六色的共享单车,用户终于不用再一一下载各类APP.注册并绑卡了.4月29日开始,只要打开支付宝扫一扫,就可解锁骑走. 6家共享单车接入支付宝 支付宝今日宣布:两日后上线&qu ...
- PHP 支付PC端扫码支付、APP接口调起支付宝支付、微信公众号接入支付宝支付
第一:第三方支付原理 第二:支付接口申请流程 地址:https://docs.open.alipay.com/270/105899/ : 参考地址:https://blog.csdn.net/nove ...
- Java接入支付宝扫码支付
一.适用场景:pc端拉起付款二维码 用户扫码付款(非证书模式下单) 二.接入准备 1:支付宝-appId 2:支付宝公钥-appPublicKey (是支付宝公钥,不是应用公钥,拿错会无法拉起支付) ...
- SpringBoot接入支付宝沙箱返回支付二维码
支付宝开放平台 扫码登录支付宝开放平台 沙箱环境 沙箱环境介绍 沙箱控制台 应用网关:该地址用于接收开放平台的异步通知.目前沙箱环境不需要配置此参数: 授权回调地址:第三方应用授权或获取用户信息中用于 ...
- python头像变二维码_Python 图像处理库 pillow,提取支付宝和微信支付图片二维码...
下面就是微信支付的收款二维码: 有时候我们仅仅只想要图片中间的方形二维码部分,为了提取出中间部分,我们可以使用图片处理软件,但图片处理软件不利于批处理,且学习也需要一定成本.本文将教你使用 Pytho ...
- web端第三方微信登录
最近接触了下微信登录,抽出空写下这次做微信登录的整个过程吧(包括自己遇到的坑),当做笔记记录下 我所做的是第三方网站的微信登录,(也就是呢,用户通过扫描我们系统登录页面的微信二维码授权后登录到我们系统 ...
- 山东大学项目实训(四)—— 微信小程序扫描web端二维码实现web端登录
效果 点击登录后,显示二维码→打开"探古"(本项目)微信小程序,扫描二维码确认登录→web端登录成功 主要流程 因为本人主要负责web前端的开发,所以本文仅介绍web前端的实现方法 ...
- 支付宝wap端支付php对接_PHP接入支付宝手机网站支付、移动支付接口
前面已经说完了 PHP接入支付宝 即时到帐接口 回调接口也已经完成.这篇主要讲 手机网站支付 . 移动支付 接口的调用.调用方式与即时到帐 基本一样. 关于代码部分的详细解释,请 参看 PHP接入支付 ...
最新文章
- C语言初学者简单语法综合练习
- asp网络编程:用ASP打开远端MDB文件的方法
- yum mysql mariadb 目录_CentOS用yum安装、配置MariaDB
- 工作随笔——Intellij_idea-14官方快捷键中文版
- 《移动应用开发》实验报告——仿饿了么商家页面
- boost::rethrow_exception相关的测试程序
- C#使用事件方式Winform窗体之间传值
- c# 标准正太分布函数_机器学习中常见的几种概率分布
- 配置防火墙打开 80 端口
- 易天40G QSFP+光模块的规格参数
- 实现全排列的另一种方法(续)
- 网络工程交换技术之hsrp
- python创建excel重复写入_Python小练习:创建并写入Excel
- php jpgraph 中文,JPGraph 4.0(for PHP7)中文字体设置
- 爬虫京东Apple12部分销量数据可视化操作
- 集成 push kit 签名配置报6003/收不到华为推送
- SpringBoot打通微信公众号模板消息通知
- eq linux_Pr音频效果参考:滤波器与EQ
- 漫谈“中间件”与国产化【转】
- Android 使用MediaRecorder录音调用stop()方法的时候报错
热门文章
- 猎人抓兔子 - (广度优先算法)
- Python爬取豆瓣高分图书TOP100存入Excel
- 【二叉树:3】线索二叉树
- android相对控件居中对齐,相对布局(RelativeLayout)常用属性
- thinkphp 打开速度缓慢,大多由于数据库读取问题!解决方法
- ZZULIOJ:1016: 银行利率
- 升级 MacOS 到最新版本 macOS Ventura 13.0 后,Parallels Desktop 不可用
- 北京汉正天成科技有限公司大家听说过没?这家公司怎么样?
- 【Benewake(北醒) 】中距 TF02-i 40m工业版本CAN/485介绍以及资料整理
- 网易邮箱添加html,在网易邮箱中实行添加标签窗口的详细步骤