JAVA支付宝蚂蚁金服开放平台沙箱
版权声明:本文为博主原创文章,未经博主允许不得转载
通过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支付宝蚂蚁金服开放平台沙箱相关推荐
- 支付宝(蚂蚁金服开放平台)-支付结果异步通知-验签
问题描述: 按文档https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.rIlDQO&treeId=204&ar ...
- 筑巢引凤、珠联璧合、潜龙出海,蚂蚁金服开放平台如何将“开放”做好?
本文主要从蚂蚁开放平台.蚂蚁开放技术方案.开放服务与保障.蚂蚁金融云四个方面进行了介绍,主要介绍了筑巢引凤.珠联璧合.潜龙出海三种开放方式,同时分享了沙箱.云验收.压测.健康度.云监控五种技术工具. ...
- 如何免费开通蚂蚁金服开放平台系统服务商ISV查看PID
免费开通蚂蚁金服开放平台系统服务商ISV,获取合作身份PID,只需要简单的3步,对支付宝账号无任何影响 登录蚂蚁金服开放平台(https://open.alipay.com). 填写手机号.邮箱,并选 ...
- 蚂蚁金服开放平台-支付宝新版接口的参数设置
[需要的参数] 1.APPID 2.商户私钥(原始格式RSA私钥) 3.支付宝公钥 查看地址:https://openhome.alipay.com/platform/keyManage.htm 说明 ...
- C#支付宝当面付扫码支付开发,包括demo代码的修改和蚂蚁金服开发平台的配置
支付宝开发前配置: 第一步登陆蚂蚁金服开放平台服:支付宝扫码登陆 登录之后看到一下界面,找到自主研发选项,点击开始入驻 配置自己的个人信息: 到此为止我们所有应该做的配置基本上就完成了,但是我们要注意 ...
- 蚂蚁金服数据分析平台演进及数据分析方法应用.pdf(附PPT下载链接)
今天给大家带来蚂蚁金服数据平台部杨军先生所做的分享<蚂蚁金服数据分析平台演进及数据分析方法应用.pdf>,本次分享PPT共48页,包含如下四大部分: 1.蚂蚁金服数据平台部简介: 2.数据 ...
- 蚂蚁金服数据分析平台 附下载
今天给大家带来蚂蚁金服数据平台部杨军先生所做的分享<蚂蚁金服数据分析平台演进及数据分析方法应用.pdf>包含如下四大部分: 关注公众号:[互联互通社区],回复[蚂蚁金服数据分析平台]获取全 ...
- 蚂蚁金服开放计算架构:下一代金融级计算架构
当前互联网技术早已进入了大数据.人工智能的阶段,各种计算模式,计算引擎层出不穷.从10年前的MapReduce分布式计算开始,几乎每三年就会出现一次新的计算引擎更迭,从开山鼻祖的Hadoop,到后来流 ...
- JAVA工程师-蚂蚁金服电话面试
今天5点半接到一个杭州的电话,是蚂蚁金服打来的,当时心里一阵发慌,由于还在上班,就和面试官约定6点下班之后再来.挂完电话,心里忐忑的不行,感觉自己这也没准备好,那也没准备好.剩下半个小时完全没有心思再 ...
- 支付宝蚂蚁金服是怎么把前端性能监控做到极致的?
本文来自蚂蚁金服前端技术专家杨森在 ArchSummit 北京 2018 的分享,他将分享如何通过 Performance 相关的 API 准确的采集用户性能数据,并如何通过大数据计算加工最终产出用户 ...
最新文章
- MySQL 优化之 index merge(索引合并)
- wpf 带复选框的treeview_WPF:带复选框CheckBox的树TreeView
- 评估数据源是否回溯_IAI Trade:蒙特卡洛模拟在回溯检验中的应用
- java 3des 32位密钥_3des,java_java 中32位秘钥长度的 3des加密方法?,3des,java - phpStudy...
- apache mesos_试用Apache Mesos HTTP API获得乐趣和收益
- 个人笔记本电脑属于专用计算机吗,计算机选择题
- MySQL锁等待分析【2】
- linux操作命令 mongo_Linux系统下MongoDB的简单安装与基本操作(完美)
- 物流的趋势和计算机科技,计算机仿真技术在物流领域的前景分析
- 人工智能顶会顶刊以及SCI,IF,核心,分区
- 炒股50问——走向职业操盘的简单问答!
- .NET 语音转文字 文字转语音
- 【模板】单峰函数求极值
- 帮师妹写的裁判文书内容提取程序:可做进一步提取模板
- 产品实习之竞品分析报告篇
- 大数据未来发展趋势,主要取决于这八个要素
- 虚拟电脑服务器玩梦幻西游卡吗,vmware虚拟机 玩梦幻西游很卡有什么解决方法...
- git 命令行配置及配置文件 解决clone报错 LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
- 迅为4412开发板网络-最小局域网的配置方法
- Hough变换与Radon变换的联系与区别