Java怎么实现支付宝PC支付功能
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"Java怎么实现支付宝PC支付功能"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一:
千家信息网最后更新 2026年11月02日Java怎么实现支付宝PC支付功能
本篇内容介绍了"Java怎么实现支付宝PC支付功能"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一:准备工作
1:如没有账号的请先去 支付宝商户平台 注册商户号
2:开发前需要导入支付宝SDK 支付宝SDK下载链接 Maven依赖也在里面
3:生成支付宝密钥、公钥,需要用到支付宝密钥生成工具 密钥生成工具下载链接 ,密钥用于签名使用
4:电脑网站支付结果异步通知(关于支付结果异步通知后续会专门写一个博客,需要重点注意)
注意:请先详细查看官方文档按步骤开发,一切以官方文档为主 支付宝官方开发文档,如使用老接口请移步 老版即时到账文档
5:测试的时候一定要使用内网穿透软件,否则会报错
二:开发代码
这里使用的是沙箱环境,正式上线时请将环境改为正式环境
AlipayConfig:
public class AlipayConfig { public static String APPID = ""; //用支付宝密钥生成工具生成的私钥 public static String RSA_PRIVATE_KEY = ""; //电脑网站支付结果异步通知,可以参考异步文档,一定要是外网能访问的 public static String notify_url = ""; //电脑网站支付结果同步通知,用于转跳到用户自己的页面,一定要是外网能访问的 public static String return_url = ""; //沙箱接口,正式上线时请改用正式支付接口 public static String URL = "https://openapi.alipaydev.com/gateway.do"; public static String CHARSET = "UTF-8"; public static String FORMAT = "json"; //用支付宝密钥生成工具生成的公钥 public static String ALIPAY_PUBLIC_KEY = ""; public static String log_path = "/log"; public static String SIGNTYPE = "RSA2"; public AlipayConfig() { }}AlipayService:
public interface AlipayService { public String toAlipay(Map sourceMap) throws IOException;} AlipayServiceImpl:
@Servicepublic class AlipayServiceImpl implements AlipayService { @Override public String toAlipay(Map sourceMap) throws IOException { AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.URL,AlipayConfig.APPID,AlipayConfig.RSA_PRIVATE_KEY,AlipayConfig.FORMAT,AlipayConfig.CHARSET,AlipayConfig.ALIPAY_PUBLIC_KEY,AlipayConfig.SIGNTYPE); AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); alipayRequest.setReturnUrl(AlipayConfig.return_url); alipayRequest.setNotifyUrl(AlipayConfig.notify_url); AlipayTradeWapPayModel alipayTradeWapPayModel = new AlipayTradeWapPayModel(); alipayTradeWapPayModel.setOutTradeNo(sourceMap.get("out_trade_no")); alipayTradeWapPayModel.setProductCode("FAST_INSTANT_TRADE_PAY"); alipayTradeWapPayModel.setTotalAmount(sourceMap.get("total_amount")); alipayTradeWapPayModel.setSubject("Alipay"); alipayTradeWapPayModel.setBody(sourceMap.get("body")); alipayRequest.setBizModel(alipayTradeWapPayModel); String form=""; try { form = alipayClient.pageExecute(alipayRequest).getBody(); } catch (AlipayApiException e) { e.printStackTrace(); } return form; } } AlipayController:
@Controllerpublic class AlipayController { @Autowired public AlipayService alipayService; @RequestMapping("pay") public void toAlipay(HttpServletRequest httpRequest , HttpServletResponse httpResponse, String payId, String totalFee, String body) throws IOException { //生成一笔支付记录,支付完成时将支付状态改为成功 Map sourceMap = new HashMap<>(); sourceMap.put("out_trade_no",payId); sourceMap.put("total_amount",totalFee); sourceMap.put("body",getUTF8XMLString(body)); String form = alipayService.toAlipay(sourceMap); httpResponse.setContentType("text/html;charset=" + AlipayConfig.CHARSET); httpResponse.getWriter().write(form); httpResponse.getWriter().flush(); httpResponse.getWriter().close(); } //注意异步返回结果通知是以post请求形式返回的 @RequestMapping("notifyUrl") public String notify_url(HttpServletRequest request){ Map paramsMap = convertRequestParamsToMap(request); String out_trade_no= paramsMap.get("out_trade_no"); try { boolean signVerified = AlipaySignature.rsaCheckV1(paramsMap, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGNTYPE); //无论同步异步都要验证签名 if(signVerified){ if(trade_status.equals("TRADE_FINISHED") || trade_status.equals("TRADE_SUCCESS")){ //处理自己系统的业务逻辑,如:将支付记录状态改为成功,需要返回一个字符串success告知支付宝服务器 return "success"; } else { //支付失败不处理业务逻辑 return "failure"; } }else { //签名验证失败不处理业务逻辑 return "failure"; } } catch (AlipayApiException e) { e.printStackTrace(); return "failure"; } } //注意同步返回结果是以get请求形式返回的 @RequestMapping("returnUrl") public String return_url(HttpServletRequest request){ Map paramsMap = convertRequestParamsToMap(request); try { boolean signVerified = AlipaySignature.rsaCheckV1(paramsMap, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGNTYPE); if(signVerified){ //跳转支付成功界面 return "支付成功页面"; }else { //跳转支付失败界面 return "failure"; } } catch (AlipayApiException e) { e.printStackTrace(); } return "success"; } //将请求中的参数转换为Map public static Map convertRequestParamsToMap(HttpServletRequest request) { Map retMap = new HashMap(); Set> entrySet = request.getParameterMap().entrySet(); Iterator var3 = entrySet.iterator(); while(true) { while(var3.hasNext()) { Entry entry = (Entry)var3.next(); String name = (String)entry.getKey(); String[] values = (String[])entry.getValue(); int valLen = values.length; if(valLen == 1) { retMap.put(name, values[0]); } else if(valLen <= 1) { retMap.put(name, ""); } else { StringBuilder sb = new StringBuilder(); String[] var9 = values; int var10 = values.length; for(int var11 = 0; var11 < var10; ++var11) { String val = var9[var11]; sb.append(",").append(val); } retMap.put(name, sb.toString().substring(1)); } } return retMap; } } //将字符串转换为UTF-8编码以防出现乱码错误 public static String getUTF8XMLString(String xml) { StringBuffer sb = new StringBuffer(); sb.append(xml); String xmString = ""; String xmlUTF8=""; try { xmString = new String(sb.toString().getBytes("UTF-8")); xmlUTF8 = URLEncoder.encode(xmString, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return xmlUTF8; }} 至此代码已经完成!!!
三:演示结果
注意:扫码或者登陆账户时如果用的是沙箱开发环境请使用沙盒支付宝APP扫码,或者使用沙盒账户支付,否则会弹出码已失效错误
支付宝沙箱

支付成功页面是从支付结果同步通知controller中跳转的,后续会更新最详细最完整的微信Navicat支付跟PayPal支付
"Java怎么实现支付宝PC支付功能"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
支付
结果
生成
密钥
成功
文档
开发
工具
沙箱
环境
网站
UTF-8
同步
业务
官方
接口
电脑
逻辑
页面
处理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技产业
北京路客互联网科技有限公司
智能科技公司是互联网公司吗
天下捷融互联网科技
猫创互联网科技
互联网金融 科技创新
上海亿帐通互联网科技
华脉科技工业互联网产品
银川新华互联网科技学校地址
深圳前海聚择互联网科技有限公司
互联网新科技动漫ppt素材
浙南科技城互联网大厦建设工程
乌鲁木齐新华智原互联网科技学校
深圳艾果互联网通讯科技
下一代互联网重大应用科技园
全球科技与互联网公司市值变化
吉林省码上互联网科技电话
湖北辰鑫科技互联网
互联网的科技体现在哪里
互联网高科技绘画
互联网与未来科技
互联网金融科技创新
上海万想互联网科技
汉立互联网科技有限公司联系电话
汽车互联网创新科技园
宁夏科技产业互联网案例
乌苏新华互联网科技做什么的
山东蛋芒互联网科技有限公司
广东猫王互联网科技有限公司电话
网互联网络科技