/**** @Description: 前往支付宝进行支付* @return* @throws Exception*/
@ResponseBody
@RequestMapping(value="/goAlipay")
public JSONResult goAlipay(String merchantOrderId, String merchantUserId) throws Exception{// 查询订单详情Orders waitPayOrder = paymentOrderService.queryOrderByStatus(merchantUserId, merchantOrderId, PaymentStatus.WAIT_PAY.type);//获得初始化的AlipayClientAlipayClient alipayClient = new DefaultAlipayClient(aliPayResource.getGatewayUrl(),aliPayResource.getAppId(),aliPayResource.getMerchantPrivateKey(),"json",aliPayResource.getCharset(),aliPayResource.getAlipayPublicKey(),aliPayResource.getSignType());//设置请求参数AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();alipayRequest.setReturnUrl(aliPayResource.getReturnUrl());alipayRequest.setNotifyUrl(aliPayResource.getNotifyUrl());// 商户订单号, 商户网站订单系统中唯一订单号, 必填String out_trade_no = merchantOrderId;// 付款金额, 必填 单位元String total_amount = CurrencyUtils.getFen2YuanWithPoint(waitPayOrder.getAmount());
//      String total_amount = "0.01";    // 测试用 1分钱// 订单名称, 必填String subject = "天天吃货-付款用户[" + merchantUserId + "]";// 商品描述, 可空, 目前先用订单名称String body = subject;// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。String timeout_express = "1d";alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","+ "\"total_amount\":\""+ total_amount +"\","+ "\"subject\":\""+ subject +"\","+ "\"body\":\""+ body +"\","+ "\"timeout_express\":\""+ timeout_express +"\","+ "\"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 alipayForm = "";try {alipayForm = alipayClient.pageExecute(alipayRequest).getBody();} catch (AlipayApiException e) {e.printStackTrace();}log.info("支付宝支付 - 前往支付页面, alipayForm: \n{}", alipayForm);return JSONResult.ok(alipayForm);
}
//@Configuration
@Component
@ConfigurationProperties(prefix="alipay")
@PropertySource("classpath:alipay.properties")
public class AliPayResource {private String appId;private String merchantPrivateKey;private String alipayPublicKey;private String notifyUrl;private String returnUrl;private String signType;private String charset;private String gatewayUrl;public String getAppId() {return appId;}public void setAppId(String appId) {this.appId = appId;}public String getMerchantPrivateKey() {return merchantPrivateKey;}public void setMerchantPrivateKey(String merchantPrivateKey) {this.merchantPrivateKey = merchantPrivateKey;}public String getAlipayPublicKey() {return alipayPublicKey;}public void setAlipayPublicKey(String alipayPublicKey) {this.alipayPublicKey = alipayPublicKey;}public String getNotifyUrl() {return notifyUrl;}public void setNotifyUrl(String notifyUrl) {this.notifyUrl = notifyUrl;}public String getReturnUrl() {return returnUrl;}public void setReturnUrl(String returnUrl) {this.returnUrl = returnUrl;}public String getSignType() {return signType;}public void setSignType(String signType) {this.signType = signType;}public String getCharset() {return charset;}public void setCharset(String charset) {this.charset = charset;}public String getGatewayUrl() {return gatewayUrl;}public void setGatewayUrl(String gatewayUrl) {this.gatewayUrl = gatewayUrl;}
}
# 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
alipay.appId=2109000001011231
# 商户私钥,您的PKCS8格式RSA2私钥       (这里我用的商户应用私钥,也就是支付宝RSA签名验签工具)
alipay.merchantPrivateKey=MIAt5jdP8Kk1mcM/QYyZnXXKO/C2pCNg/qIwhxQ4criC/cNWCaqQRKemL/Lgjh
# 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
alipay.alipayPublicKey=Bgkq164UdIS4/T3XamGmxPX/VUgxikfvLav6N/O+EA85Pm4Mb/ujg8IDAQAB# 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
#alipay.notifyUrl=http://2r49yp.natappfree.cc/payment/notice/alipay
alipay.notifyUrl=http://payment.t.xuexi.com/payment/payment/notice/alipay
# 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
alipay.returnUrl=http://payment.t.xuexi.com/payment/alipayResult
#alipay.returnUrl=http://shop.t.xuexi.com/payment# 签名方式
alipay.signType=RSA2
# 字符编码格式
alipay.charset=utf-8
# 支付宝网关
alipay.gatewayUrl=https://openapi.alipay.com/gateway.do

支付宝支付 - 构建支付表单填并提交相关推荐

  1. react hooks使用_我如何使用React Hooks在约100行代码中构建异步表单验证库

    react hooks使用 by Austin Malerba 奥斯汀·马勒巴(Austin Malerba) 我如何使用React Hooks在约100行代码中构建异步表单验证库 (How I bu ...

  2. 学习通构建Web表单

    1[单选题] <form>与</form>之间的表单控件是由用户自定义的.下列选项中,不属于表单标记<form>的常用属性的是(    ). A. action B ...

  3. 表单的重复提交问题解决方案

    1.在我们的web开发中,常常会遇到表单的重复提交问题,那么我们的解决方案有两种:①重定向:response.sendrediect(); ②token的使用,即做个标记 下面写一个token的例子: ...

  4. vue 表单验证并提交

    vue 表单验证并提交 一.常用验证方式 1.data 中验证 data 数据: 2.行内验证 3.引入外部定义的规则 二.表单提交时验证 1.表单的提交按钮 2.ethods 方法 一.常用验证方式 ...

  5. python表单防重复提交_防止表单重复提交的几种策略

    表单重复提交是在多用户Web应用中最常见.带来很多麻烦的一个问题.有很多的应用场景都会遇到重复提交问题,比如: 点击提交按钮两次. 点击刷新按钮. 使用浏览器后退按钮重复之前的操作,导致重复提交表单. ...

  6. php阻止form提交表单提交,防止表单提交时刷新页面-阻止form表单的默认提交行为...

    最近在写 ajax 提交的时候遇到一个问题,在执行 ajax 提交之后,浏览器页面自动刷新了,主要是没有 由于form 表单的默认提交行为.一下是几种阻止 form 表单默认提交行为的方式. 1.使用 ...

  7. 关于表单回车自动提交的讨论

    关于表单回车自动提交的讨论 在做超限查询时,为了用户操作的易用性,在用户输入车牌号码后,直接回车就进行查询的操作,而不是等用户用鼠标点击"查询"了才发送请求去查询.可能我们都以为很 ...

  8. Spring MVC表单防重复提交

    转载自 Spring MVC表单防重复提交 利用Spring MVC的过滤器及token传递验证来实现表单防重复提交. 创建注解 @Target(ElementType.METHOD) @Retent ...

  9. 如何阻止表单的默认提交事件

    表单一点击提交按钮(submit)必然跳转页面,如果表单的action为空也会跳转到自己的页面,即效果为刷新当前页. 如下,可以看到一点击提交按钮,浏览器的刷新按钮闪了一下: 如果想要阻止表单的默认提 ...

最新文章

  1. 腾讯,百度,网易游戏,华为笔面经验
  2. db first和code first
  3. const constexpr C++ 解释
  4. Html中如何让超链接a、图片img居中
  5. minicom 串口信息过长分行显示
  6. 隔离式BUCK之参数计算
  7. SQL OUTER JOIN概述和示例
  8. 华为交换机stp原理透析及实战
  9. Visual Studio 2013中因Browser Link引起的Javascript错误
  10. 基于深度学习的AI疲劳检测系统
  11. 仿真技术在控制系统中的应用 ---飞机姿态控制仿真( 俯仰角)
  12. 禁止在计算机上玩电子游戏,如何禁止孩子玩电脑游戏防止过度沉迷影响学习成绩...
  13. 计算机显卡驱动异常,解决显卡驱动无法正常安装的问题
  14. php的include once,php include_once的使用方法详解
  15. 计算机存储器与寄存器的区别,存储器与寄存器的区别
  16. C语言编程入门(绪论)
  17. HDU-4126(Genghis Khan the Conqueror)
  18. Spark stand a lone 模式
  19. 微信公众号开发之授权
  20. download sources报错: Cannot connect to the Maven process. Try again later. If the problem persists

热门文章

  1. [JS]手写动画最小时间间隔设置
  2. JavaScript:事件对象Event和冒泡
  3. python开发Day05(计算器代码)
  4. JavaScript:undefined And null差异
  5. Page,你是怎样处理回发事件的?
  6. 【大话设计模式】设计模式系统学习大合集
  7. 错误代码: 1054 Unknown column #39;t.createUsrId#39; in #39;group statement#39;
  8. 重写AgileEAS.NET SOA 中间件平台账号密码的加密算法
  9. 使用JavaStcript对数组元素去重的方法
  10. mysqlsla日志分析工具