阿里云支付宝沙箱支付

项目文件是maven项目
第一步pom.xml引入jar包

<!--    沙箱支付依赖--><dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>4.20.0.ALL</version></dependency>

创建一个 AlipayConfig 类

package com.alipay.config;import java.io.FileWriter;
import java.io.IOException;
/* **类名:AlipayConfig*功能:基础配置类*详细:设置帐户有关信息及返回路径*修改日期:2017-04-05*说明:*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。*/public class AlipayConfig {//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号public static String app_id = "";// 商户私钥,您的PKCS8格式RSA2私钥public static String merchant_private_key = "";// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。public static String alipay_public_key = "";// 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问//支付成功后跳转的地址 改为自己修改订单状态的地址。// public static String return_url = "http://本机ip地址:8081/order/updateOrderStatus";public static String notify_url = "http://工程公网访问地址/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问public static String return_url = "http://工程公网访问地址/alipay.trade.page.pay-JAVA-UTF-8/return_url.jsp";// 签名方式public static String sign_type = "RSA2";// 字符编码格式public static String charset = "utf-8";// 支付宝网关public static String gatewayUrl = "https://openapi.alipay.com/gateway.do";// 支付宝网关public static String log_path = "C:\\";//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑/** * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)* @param sWord 要写入日志里的文本内容*/public static void logResult(String sWord) {FileWriter writer = null;try {writer = new FileWriter(log_path + "alipay_log_" + System.currentTimeMillis()+".txt");writer.write(sWord);} catch (Exception e) {e.printStackTrace();} finally {if (writer != null) {try {writer.close();} catch (IOException e) {e.printStackTrace();}}}}
}

购物车页面的提交按钮,当点击提交,页面跳转到ShopcarController类,沙箱支付页面去,付完钱到OrderController类中。

submit();function submit() {// 获取全部的商品信息进行提交到后台$.ajax({url: "/shopcar/shopCarBalance",data: {bookid: bookid,ids: ids,totalcount: total_count,totalprice: total_price,cname: addName,phone: addPhone,address: addAddrerss,express: express},dataType: "json",type: "post",success: function (addOrderObj) {if (addOrderObj.code == 1) {location.href="/shopcar/pay?orderno="+addOrderObj.data.ordernumber+"&money="+addOrderObj.data.totalprice;} else {layer.msg("提交订单失败!", {icon: 5})}}})}
}

ShopcarController类,沙箱支付页面

/*** 确认订单*/
@RestController
@RequestMapping("/shopcar")
public class ShopcarController {@Autowiredprivate ShopcarMapper shopcarMapper;@Autowiredprivate AddressMapper addressMapper;@Autowiredprivate BookMapper bookMapper;@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate Order_detailMapper orderDetailMapper;@Autowiredprivate BooktypeMapper bookTypeMapper;/*** 支付的时候添加到订单里面* @param order* @param session* @return
//     */
//    shopCarBalance@RequestMapping("shopCarBalance")public CommonResult shopCarBalance(Order order, HttpSession session, Integer bookid, String ids,String count, String price){User user = (User) session.getAttribute("user");order.setPname(user.getName()); //下单人的姓名order.setUid(user.getUid()); //下单人的编号long orderNo = new Date().getTime();order.setOrderNumber(orderNo+""+user.getUid()); //订单号order.setStatus(5); //订单状态 5 未支付order.setPdate(new Date()); //下单时间System.out.println(order);orderMapper.insert(order);System.out.println("~~~~~~~~~~~~bookid==========="+bookid);if (bookid !=null ){//添加一本书Book book = bookMapper.selectByPrimaryKey(bookid); //根据图书id查询图书信息Order_detail orderDetail = new Order_detail();orderDetail.setBookid(book.getBookid());orderDetail.setBookname(book.getBookname());orderDetail.setAuthor(book.getBookauthor());orderDetail.setPublisher(book.getBookpublisher());Integer count1 = Integer.valueOf(count);orderDetail.setCount(count1);orderDetail.setPrice(price);Booktype booktype = bookTypeMapper.selectByPrimaryKey(book.getTypeid());orderDetail.setBooktype(booktype.getBookType());orderDetail.setUrl(book.getUrl());orderDetail.setPid(order.getPid());orderDetail.setStatus(0);orderDetailMapper.insert(orderDetail);}//        添加多个System.out.println("~~~~~~~~~ids~~~~~"+ids);if (ids!=null && ids!=""){String[] split = ids.split(",");//多个bookidfor (String s:split){System.out.println(s);}System.out.println(split+"===========");for (String s:split){Integer ss = Integer.valueOf(s);Shopcar shopcar = shopcarMapper.selectByPrimaryKey(ss);Book book = bookMapper.selectByPrimaryKey(shopcar.getBookid());System.out.println(book);Order_detail orderDetail = new Order_detail();orderDetail.setBookid(book.getBookid());orderDetail.setBookname(book.getBookname());orderDetail.setAuthor(book.getBookauthor());orderDetail.setPublisher(book.getBookpublisher());orderDetail.setCount(shopcar.getCount());orderDetail.setPrice(shopcar.getPrice());Booktype booktype = bookTypeMapper.selectByPrimaryKey(book.getTypeid());orderDetail.setBooktype(booktype.getBookType());orderDetail.setUrl(book.getUrl());orderDetail.setPid(order.getPid());orderDetail.setStatus(0);orderDetailMapper.insert(orderDetail);}}return new CommonResult(1,"添加订单成功",order);}
/*沙箱*/@RequestMapping("pay")public String pay(String orderno, String money, HttpServletRequest request){try {//获得初始化的AlipayClientAlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);//设置请求参数AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setReturnUrl(AlipayConfig.return_url);alipayRequest.setNotifyUrl(AlipayConfig.notify_url);//商户订单号,商户网站订单系统中唯一订单号,必填String out_trade_no = new String(orderno.getBytes("ISO-8859-1"), "UTF-8");//付款金额,必填String total_amount = new String(money.getBytes("ISO-8859-1"), "UTF-8");//订单名称,必填String subject = new String("qy143图书管理".getBytes("ISO-8859-1"), "UTF-8");//商品描述,可空alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\","+ "\"total_amount\":\"" + total_amount + "\","+ "\"subject\":\"" + subject + "\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//若想给BizContent增加其他可选请求参数,以增加自定义超时时间参数timeout_express来举例说明//alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","//      + "\"total_amount\":\""+ total_amount +"\","//       + "\"subject\":\""+ subject +"\","//     + "\"body\":\""+ body +"\","//       + "\"timeout_express\":\"10m\","//       + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");//请求参数可查阅【电脑网站支付的API文档-alipay.trade.page.pay-请求参数】章节//请求String result = alipayClient.pageExecute(alipayRequest).getBody();return result;}catch (Exception e){e.printStackTrace();}return null;//输出}}

OrderController 用户支付成功跳转这个页面

@Controller
@RequestMapping("order")
public class OrderController {@AutowiredShopcarMapper shopcarMapper;@Autowiredprivate OrderMapper orderMapper;@AutowiredOrder_detailMapper order_detailMapper;@RequestMapping("updateOrderStatus")public String updateOrderStatus(String out_trade_no){System.out.println(out_trade_no);Order order=new Order();order.setOrderNumber(out_trade_no);order.setStatus(0);orderMapper.updateOrderStatus(order);return "redirect:/gereng.jsp";}
}

阿里云支付宝沙箱支付相关推荐

  1. 基于SpringBoot vue的电脑商城平台源码和论文含支付宝沙箱支付

    演示视频: 基于SpringBoot vue的电脑商城平台源码和论文含支付宝沙箱支付演示视频 支付宝沙箱: package com.java.controller;import java.util.* ...

  2. 【支付宝沙箱支付】麻瓜教程——申请----代码----修改测试----问题解决

    文章目录 支付宝沙箱环境 沙箱概述: 支付宝沙箱支付操作 `1.搜索进入支付宝开放平台` `2.登录,进入控制台` `3.进入沙箱` `4.进入支付宝开发助手下载所需的工具(度娘搜索就有)` `5.然 ...

  3. 一文叫你学会用JavaWeb开发共享图书馆系统(附加支付宝沙箱支付接入)

    前提: 学习书籍: 黑马程序员的<Java Web程序设计任务教程>: 如果没有本文的资源均可以评论留言,我可以免费发给你们学习. 下载安装Eclipse 2021.MySQL 5.5.T ...

  4. SpringBoot+Vue整合支付宝沙箱支付

    SpringBoot+Vue2整合实现支付宝沙箱支付 原创不易,转载请注明!!原创不易,转载请注明!!原创不易,转载请注明!!原创不易,转载请注明!!原创不易,转载请注明!! 在进行电脑网站开发时我们 ...

  5. 支付宝沙箱支付可能遇见的问题

    问题1:付款时显示订单已付款 原因: 向支付宝提交的订单号重复,且之前的订单号已支付过 解决办法: 换个订单号就行 问题2: 触发点击事件时界面显示404NotFound 原因1:支付宝网关填写有错误 ...

  6. Asp.Net支付宝沙箱支付(也可用手机扫描支付)详细教程

    要想完成支付宝沙箱支付就必须先完成这些设置后才能往后走 一.首先先注册 1.点击下面的网址,点击右上角的立即入驻,然后用支付宝账号扫码登陆.然后填写信息,登陆. 支付宝开放平台 然后进入平台找到沙箱后 ...

  7. 解决阿里云存在未支付订单请支付或作废后再下单

    阿里云服务器或其他云资源无法立即购买,提示"您选择的资源存在未支付订单,请支付或作废后再下单!"什么原因?这是由于你的阿里云账号之前已经创建了该订单,只是订单没有支付,所以无法再次 ...

  8. 基于SpringBoot vue的茶叶商城平台源码和论文含支付宝沙箱支付

    此项目是前后端分离的 后台项目:shop 前端项目:Vue-shop 后端项目启动步骤: 1.先把sql导入数据库 2.把后台项目导入编辑器 3.修改数据库配置 4.启动项目   前端项目启动步骤: ...

  9. springboot整合支付宝沙箱支付

    springboot整合支付宝沙箱支付 1.简介 支付宝开发平台地址:https://open.alipay.com/develop/sandbox/app 对于学生来说,目前网上确实没有比较统一而且 ...

最新文章

  1. Docker暴露端口服务器公网IP无法访问问题排查
  2. Linux 内核源代码分析 chap 2 存储管理 (5)
  3. 购物价值观(values of shopping)
  4. 从HarmonyOS应用到底是不是Android套壳?
  5. 表决器c语言课程设计,项目二:玩转RGB点阵屏——表情表决器
  6. html 答题一题一题展示,在线答题系统如何展示考试结果
  7. 2db多少功率_话筒的灵敏度:-58dB+(-)2dB表示什么意思,数字大的好,还是小的好呢?...
  8. windows系统上安装与使用Android NDK r8d(二)
  9. 国科微电子:芯片将是国内企业下一个发力点
  10. 服务器配置多个域名冲突
  11. linux一些基本知识
  12. spark根据key输出到多个目录
  13. SQL入门教程(一):基础知识
  14. Web项目 引入Editormd
  15. 谈谈自己对移动互联网的看法
  16. scheme 语言概述
  17. 前端实现对象数组的关键字搜索
  18. oracle检查表的级联关系,有条件的两个表关联查询为什么会出现 MERGE JOIN CARTESIAN操作...
  19. 度量学习DML之MoCO
  20. 28_RTC实时时钟BKP备份寄存器

热门文章

  1. 扫盲:SSL和TSL的区别【转】
  2. 便签待办功能使用方法 高手教你快捷使用待办功能
  3. error: expected ‘=‘, ‘,‘, ‘;‘, ‘asm‘ or ‘__attribute__‘ before ‘{‘ token 错误问题
  4. 【干货】java核心知识整理,阶段一:java基础之面向对象上
  5. 查看和终止 PostgreSQL 连接会话
  6. MySQL 查询 树结构
  7. axios,post请求传递数组
  8. DEFORMABLE DETR详解
  9. WFD连接过程代码分析(Sink端)
  10. MySql主从备份Slave