注册沙箱的教程就省略了

这里直接贴代码,让你们的代码跑起来快步如飞;

没有公网也能测试,就是接收不到支付宝的回调;

这里我是用的内网转发工具

沙箱里面把私匙和公匙填好;

这是我的项目目录

这里贴一下我的配置代码(单独的配置类,没有放到配置文件里)

支付宝回调代码

@Controller
public class AlipayResponseController {@RequestMapping("/notify_url")public String notify_url(HttpServletRequest request, HttpServletResponse response)throws IOException, AlipayApiException {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] + ",";}// 乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化// valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk");params.put(name, valueStr);}// 商户订单号String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"), "UTF-8");// 支付宝交易号String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"), "UTF-8");// 交易状态String trade_status = new String(request.getParameter("trade_status").getBytes("ISO-8859-1"), "UTF-8");// 获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以上仅供参考)//// 计算得出通知验证结果// boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String// publicKey, String charset, String sign_type)boolean verify_result = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET,"RSA2");PrintWriter pw = response.getWriter();if (verify_result) {// 验证成功//// ——请根据您的业务逻辑来编写程序(以下代码仅作参考)——if (trade_status.equals("TRADE_FINISHED")) {// 判断该笔订单是否在商户网站中已经做过处理// 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序// 请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的// 如果有做过处理,不执行商户的业务程序System.out.println("交易完成");// 注意:// 如果签约的是可退款协议,退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知// 如果没有签约可退款协议,那么付款完成后,支付宝系统发送该交易状态通知。} else if (trade_status.equals("TRADE_SUCCESS")) {System.out.println("交易成功");// 判断该笔订单是否在商户网站中已经做过处理// 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序// 请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的// 如果有做过处理,不执行商户的业务程序// 注意:// 如果签约的是可退款协议,那么付款完成后,支付宝系统发送该交易状态通知。}else if (trade_status.equals("WAIT_BUYER_PAY")) {System.out.println("交易创建,等待付款");}// ——请根据您的业务逻辑来编写程序(以上代码仅作参考)——pw.println("success");} else {// 验证失败pw.println("fail");}return null;}@RequestMapping("/return_url")public String return_url(HttpServletRequest request, HttpServletResponse response) {return "return";}
}

这个是一个写的一个工具类

 /*** 统一收单交易支付接口 @备注:* * @param model* @return* @throws AlipayApiException*/public static String AlipaPay(AlipayTradeWapPayModel model) throws AlipayApiException {AlipayTradePayRequest request = new AlipayTradePayRequest();request.setBizModel(model);request.setNotifyUrl(AlipayConfig.notify_url);request.setReturnUrl(AlipayConfig.return_url);AlipayTradePayResponse response = alipayClient.execute(request);if (response.isSuccess()) {return response.getBody();} else {return null;}}

下面这个是直接访问就能发起支付了(用手机测试哦)

第一个方法

手机网页支付

第二个方法

支付宝App支付

@Controller
public class MobileAlipayController {@RequestMapping("/MobileAlipay")public String MobileAlipay(HttpServletRequest request, HttpServletResponse response) {// 超时时间 可空String timeout_express = "2m";// 销售产品码 必填String product_code = "QUICK_WAP_WAY";AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();model.setOutTradeNo(new ToolAll().PlyId);model.setBody("");model.setSubject("移动支付");model.setTotalAmount("1.01");model.setTimeoutExpress(timeout_express);model.setProductCode(product_code);JSONObject content = new JSONObject();content.put("trans_in_type", "userId");content.put("trans_in", "2088102176185663");content.put("amount", "1.01");String[] SettleDetailInfo = new String[] { content.toString() };JSONObject settle_detail_infos = new JSONObject();settle_detail_infos.put("settle_detail_infos", SettleDetailInfo);JSONObject settle_info = new JSONObject();settle_info.put("settle_info", settle_detail_infos);try {String form = AlipayUtil.MobileWebAlipay(model);if (form != null) {response.setContentType("text/html;charset=" + AlipayConfig.CHARSET);try {response.getWriter().write(form);response.getWriter().flush();response.getWriter().close();} catch (IOException e) {System.out.println("表单输出错误");e.printStackTrace();}}} catch (AlipayApiException e) {System.out.println("支付出错");e.printStackTrace();}return null;}@RequestMapping("/AppAlipay")@ResponseBodypublic String AppAlipay(HttpServletRequest request, HttpServletResponse response) {// 超时时间 可空String timeout_express = "2m";// 销售产品码 必填String product_code = "QUICK_MSECURITY_PAY";AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();model.setOutTradeNo(new ToolAll().PlyId);model.setBody("在线支付有你有我!");model.setSubject("移动支付");model.setTotalAmount("1.01");model.setTimeoutExpress(timeout_express);model.setProductCode(product_code);JSONObject content = new JSONObject();content.put("trans_in_type", "userId");content.put("trans_in", "2088102176185663");content.put("amount", "1.01");String[] SettleDetailInfo = new String[] { content.toString() };JSONObject settle_detail_infos = new JSONObject();settle_detail_infos.put("settle_detail_infos", SettleDetailInfo);JSONObject settle_info = new JSONObject();settle_info.put("settle_info", settle_detail_infos);try {String form = AlipayUtil.MobileWebAlipay(model);return form;} catch (AlipayApiException e) {System.out.println("支付出错");e.printStackTrace();}return null;}
}

代码就到这里;文中代码有不够严谨的地方大神勿喷;如果有什么不明白的地方可以留言;

后面会出C#支付宝支付以及微信支付

觉得帮助此文章帮助到你的话可以打赏个咖啡钱,谢谢

JAVA 支付宝支付_史诗级简单教程(SpringBoot)相关推荐

  1. 支付宝支付沙漏环境测试教程,秒懂

    ,一看就懂支付宝支付沙箱环境测试教程 解决方法: 1.下载demo(JAVA版),导入到eclipse或myeclipse或idea运行 https://docs.open.alipay.com/27 ...

  2. java基础案例教程第二章_第2章Java编程基础_补充案例教程.doc

    第2章Java编程基础_补充案例教程 博学谷--让IT教学更简单,让IT学习更有效博学谷--让IT教学更简单,让IT学习更有效 PAGE \* MERGEFORMAT34PAGE \* MERGEFO ...

  3. Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝支付)

    最近一直在接触第三方,刚接入完支付宝的API做一下总结,个人能力薄弱有不对的地方望指教.  做的是一个小型电商项目,所以会接入第三方的支付和登入功能, 第一次接入第三方撸了很多官方文档. 进入主题, ...

  4. java商户平台微信支付宝支付_微信支付/支付宝支付/银联支付,对比加总结(Java服务端)...

    今天来讲讲支付. 工作到现在,接入过好几个项目的支付,其中涉及到了微信支付.支付宝支付.银联支付. 三种支付的对接感受其实整体上大同小异.都遵循同一个流程: 1).商户APP向商户服务器请求生成订单 ...

  5. java app支付_【支付宝支付】Java实现支付宝APP支付流程

    前言 官方文档 开放能力文档: APP支付接口API 开发准备工作 后端代码实现 参数配置 application.yml # 支付宝相关 ALIPAY: # 应用ID APP_ID: # 应用私钥 ...

  6. Java与lua互相调用简单教程

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  7. Java支付宝支付(Alipay),支付接口,同步异步通知

    做这个测试必须先注册成为支付宝开发者,最好要有一定的Java基础.注意同步异步通知这个必须要让支付宝可以访问你的项目,也就是说必须让支付宝可以访问你的项目中的方法,所以要把项目放在公网上,如果只是简单 ...

  8. Java 支付宝支付 Alipay

    相关官方文档位置:https://docs.open.alipay.com/api_1 阿里的文档还是比较清晰明了的,Java部分的代码更是做了非常棒的封装,引用jar包中的方法,支付宝的流程都类似, ...

  9. Java - 支付宝支付

    一. APP支付 APP支付适用于商家在 App 应用中集成支付宝支付功能. 商家APP调用支付宝提供的 SDK,SDK 再调用支付宝APP内的支付模块.如果用户已安装支付宝 APP,商家 APP 会 ...

最新文章

  1. Docker容器对CPU资源隔离的几种方式
  2. Android 简单记事本
  3. 全球及中国乳酸异辛酯行业发展趋势及投资前景规划报告2022-2027年
  4. 年轻人对于“绰号”的认识
  5. WCF六大步的前三步
  6. 服务器环境~某个页面无法访问的处理
  7. 【Java】while和do-while循环比较测试案例
  8. Nagios飞信linux系统免费短信报警配置
  9. 用极大化思想解决最大子矩形问题
  10. MySql中,复制旧表结构到新表
  11. Java多线程(五)——多线程的多线程池
  12. 数学建模——商人过河(Matlab)
  13. bulk insert
  14. 肿瘤免疫浸润资源汇总
  15. 服务器mt核心bug修复,RHSA-2020:0374-重要: 内核 安全和BUG修复更新
  16. UCOS操作系统——任务管理(二)
  17. 教师计算机西沃培训心得,希沃电子白板学习心得体会
  18. UE4_Stereo Panoramic Movie Capture_合并左右眼为一张图片
  19. 【SDOI2008】Sandy的卡片 DP
  20. 音频处理相关内容学习——自动编码器——变分自动编码器——频谱图

热门文章

  1. 浏览器支持的视频和音频格式
  2. 航空模型手工制作_小学生的简易航空模型地制作
  3. 互联网中的视频/音频服务
  4. 服务器安全加固三件套
  5. 组合式升降压PFC的分析方法
  6. 查看linux是多少位
  7. adb连接雷电模拟器失败
  8. ZCMU - 1931: wjw的剪纸
  9. 微信公众号申请+新浪SAE申请
  10. 如何开发⼀款移动端 Libra 钱包