版权声明:本文为博主原创文章,未经博主允许不得转载
通过https://open.alipay.com/platform/home.htm登录蚂蚁金服开放平台
在顶部的开发者中心中选择研发服务

在左侧菜单沙箱环境中选择沙箱应用,并创建一个应用

创建好应用后可以看到如下页面

接下来下载密匙生成工具http://p.tb.cn/rmsportal_6680_secret_key_tools_RSA_win.zip?spm=a219a.7629140.0.0.738d4b70QQwrbx&file=rmsportal_6680_secret_key_tools_RSA_win.zip

解压后执行文件夹中的:RSA签名验签工具
点击生成秘钥,可以得到商户应用私钥与商户应用公钥


点击RSA2(SHA256)秘钥中的设置应用公钥(查看应用公钥)

将之前生成的应用公钥赋值进去

保存后可以得到支付宝公钥

接下来创建Java项目,在我们的pom文件中添加支付宝提供的支付相关坐标

<dependency><groupId>com.alipay.sdk</groupId><artifactId>alipay-sdk-java</artifactId><version>3.3.49.ALL</version>
</dependency>

创建支付Controller,并准备支付所需参数

@Controller
public class PayController {private final String APP_ID = "应用的APPID";private final String APP_PRIVATE_KEY = "生成的应用私钥";private final String CHARSET = "UTF-8";private final String ALIPAY_PUBLIC_KEY = "支付宝公钥";//这是沙箱接口路径,正式路径为https://openapi.alipay.com/gateway.doprivate final String GATEWAY_URL ="https://openapi.alipaydev.com/gateway.do";private final String FORMAT = "JSON";//签名方式private final String SIGN_TYPE = "RSA2";//支付宝异步通知路径,付款完毕后会异步调用本项目的方法,必须为公网地址private final String NOTIFY_URL = "http://公网地址/notifyUrl";//支付宝同步通知路径,也就是当付款完毕后跳转本项目的页面,可以不是公网地址private final String RETURN_URL = "http://公网地址/returnUrl";}

创建调用支付宝支付的方法

@RequestMapping("alipay")
public void alipay(Integer orderId,HttpServletResponse httpResponse) throws IOException {//实例化客户端,填入所需参数AlipayClient alipayClient = new DefaultAlipayClient(GATEWAY_URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();//在公共参数中设置回跳和通知地址request.setReturnUrl(RETURN_URL);request.setNotifyUrl(NOTIFY_URL);//根据订单编号,查询订单相关信息Order order = payService.selectById(orderId);//商户订单号,商户网站订单系统中唯一订单号,必填String out_trade_no = order.getOrderId().toString();//付款金额,必填String total_amount = order.getOrderPrice().toString();//订单名称,必填String subject = order.getOrderName();//商品描述,可空String body = "";request.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","+ "\"total_amount\":\""+ total_amount +"\","+ "\"subject\":\""+ subject +"\","+ "\"body\":\""+ body +"\","+ "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");String form = "";try {form = alipayClient.pageExecute(request).getBody(); // 调用SDK生成表单} catch (AlipayApiException e) {e.printStackTrace();}httpResponse.setContentType("text/html;charset=" + CHARSET);httpResponse.getWriter().write(form);// 直接将完整的表单html输出到页面httpResponse.getWriter().flush();httpResponse.getWriter().close();
}

当访问上面方法后就会跳到如下界面

这里我们需要用沙箱专用支付宝进行扫码付款,可以扫面下面二维码安装,限安卓手机

然后在下图中找到账号密码等进行登录,并对账号进行充值,保证测试的余额充足

在付款成功后,浏览器会跳转到我们定义的同步回调页面,来验证是否付款成功等操作

@RequestMapping(value = "/returnUrl", method = RequestMethod.GET)
public String returnUrl(HttpServletRequest request, HttpServletResponse response)throws IOException, AlipayApiException {System.out.println("=================================同步回调=====================================");// 获取支付宝GET过来反馈信息Map<String, String> params = new HashMap<String, String>();Map<String, String[]> requestParams = request.getParameterMap();for (Iterator<String> 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] + ",";}// 乱码解决,这段代码在出现乱码时使用valueStr = new String(valueStr.getBytes("utf-8"), "utf-8");params.put(name, valueStr);}System.out.println(params);//查看参数都有哪些boolean signVerified = AlipaySignature.rsaCheckV1(params, ALIPAY_PUBLIC_KEY, CHARSET, SIGN_TYPE); // 调用SDK验证签名//验证签名通过if(signVerified){// 商户订单号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 total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"), "UTF-8");System.out.println("商户订单号="+out_trade_no);System.out.println("支付宝交易号="+trade_no);System.out.println("付款金额="+total_amount);//支付成功,修复支付状态payService.updateById(Integer.valueOf(out_trade_no));return "ok";//跳转付款成功页面}else{return "no";//跳转付款失败页面}}

上面为支付宝同步调用处理,但是官方建议应在异步调用方法中处理付款成功后的操作,但因异步调用的路径必须为公网地址,支付宝才可以发送请求给我们,故这里不写异步调用的方法了,需要注意的是,异步调用为post请求,且传递来的参数会多一些,但基本与同步调用的操作一致,下面为支付宝官方调用图解

JAVA支付宝蚂蚁金服开放平台沙箱相关推荐

  1. 支付宝(蚂蚁金服开放平台)-支付结果异步通知-验签

    问题描述: 按文档https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.rIlDQO&treeId=204&ar ...

  2. 筑巢引凤、珠联璧合、潜龙出海,蚂蚁金服开放平台如何将“开放”做好?

    本文主要从蚂蚁开放平台.蚂蚁开放技术方案.开放服务与保障.蚂蚁金融云四个方面进行了介绍,主要介绍了筑巢引凤.珠联璧合.潜龙出海三种开放方式,同时分享了沙箱.云验收.压测.健康度.云监控五种技术工具. ...

  3. 如何免费开通蚂蚁金服开放平台系统服务商ISV查看PID

    免费开通蚂蚁金服开放平台系统服务商ISV,获取合作身份PID,只需要简单的3步,对支付宝账号无任何影响 登录蚂蚁金服开放平台(https://open.alipay.com). 填写手机号.邮箱,并选 ...

  4. 蚂蚁金服开放平台-支付宝新版接口的参数设置

    [需要的参数] 1.APPID 2.商户私钥(原始格式RSA私钥) 3.支付宝公钥 查看地址:https://openhome.alipay.com/platform/keyManage.htm 说明 ...

  5. C#支付宝当面付扫码支付开发,包括demo代码的修改和蚂蚁金服开发平台的配置

    支付宝开发前配置: 第一步登陆蚂蚁金服开放平台服:支付宝扫码登陆 登录之后看到一下界面,找到自主研发选项,点击开始入驻 配置自己的个人信息: 到此为止我们所有应该做的配置基本上就完成了,但是我们要注意 ...

  6. 蚂蚁金服数据分析平台演进及数据分析方法应用.pdf(附PPT下载链接)

    今天给大家带来蚂蚁金服数据平台部杨军先生所做的分享<蚂蚁金服数据分析平台演进及数据分析方法应用.pdf>,本次分享PPT共48页,包含如下四大部分: 1.蚂蚁金服数据平台部简介: 2.数据 ...

  7. 蚂蚁金服数据分析平台 附下载

    今天给大家带来蚂蚁金服数据平台部杨军先生所做的分享<蚂蚁金服数据分析平台演进及数据分析方法应用.pdf>包含如下四大部分: 关注公众号:[互联互通社区],回复[蚂蚁金服数据分析平台]获取全 ...

  8. 蚂蚁金服开放计算架构:下一代金融级计算架构

    当前互联网技术早已进入了大数据.人工智能的阶段,各种计算模式,计算引擎层出不穷.从10年前的MapReduce分布式计算开始,几乎每三年就会出现一次新的计算引擎更迭,从开山鼻祖的Hadoop,到后来流 ...

  9. JAVA工程师-蚂蚁金服电话面试

    今天5点半接到一个杭州的电话,是蚂蚁金服打来的,当时心里一阵发慌,由于还在上班,就和面试官约定6点下班之后再来.挂完电话,心里忐忑的不行,感觉自己这也没准备好,那也没准备好.剩下半个小时完全没有心思再 ...

  10. 支付宝蚂蚁金服是怎么把前端性能监控做到极致的?

    本文来自蚂蚁金服前端技术专家杨森在 ArchSummit 北京 2018 的分享,他将分享如何通过 Performance 相关的 API 准确的采集用户性能数据,并如何通过大数据计算加工最终产出用户 ...

最新文章

  1. MySQL 优化之 index merge(索引合并)
  2. wpf 带复选框的treeview_WPF:带复选框CheckBox的树TreeView
  3. 评估数据源是否回溯_IAI Trade:蒙特卡洛模拟在回溯检验中的应用
  4. java 3des 32位密钥_3des,java_java 中32位秘钥长度的 3des加密方法?,3des,java - phpStudy...
  5. apache mesos_试用Apache Mesos HTTP API获得乐趣和收益
  6. 个人笔记本电脑属于专用计算机吗,计算机选择题
  7. MySQL锁等待分析【2】
  8. linux操作命令 mongo_Linux系统下MongoDB的简单安装与基本操作(完美)
  9. 物流的趋势和计算机科技,计算机仿真技术在物流领域的前景分析
  10. 人工智能顶会顶刊以及SCI,IF,核心,分区
  11. 炒股50问——走向职业操盘的简单问答!
  12. .NET 语音转文字 文字转语音
  13. 【模板】单峰函数求极值
  14. 帮师妹写的裁判文书内容提取程序:可做进一步提取模板
  15. 产品实习之竞品分析报告篇
  16. 大数据未来发展趋势,主要取决于这八个要素
  17. 虚拟电脑服务器玩梦幻西游卡吗,vmware虚拟机 玩梦幻西游很卡有什么解决方法...
  18. git 命令行配置及配置文件 解决clone报错 LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
  19. 迅为4412开发板网络-最小局域网的配置方法
  20. Hough变换与Radon变换的联系与区别

热门文章

  1. 第一台计算机英语句子,20个虚拟语气句子带翻译
  2. 基于人脸识别的门禁系统设计PPT汇报
  3. 笔记本无法打开摄像头
  4. RecyclerView 实现横向滚动效果
  5. 怎样修改一篇简历 简历怎么写
  6. 怎么为小数据集划分训练集和测试集
  7. 计算机 word 节是什么,Word中的分节符是什么,如何使用?
  8. .Net框架搭建之1、SQL Server EF MVC简单三层框架
  9. java 词典 分词_java分词中 用户自定义词典有什么要求
  10. 计算机word排版素材,WORD基础排版素材