首页 > 其他分享 >mall-alipay支付环境搭建

mall-alipay支付环境搭建

时间:2023-07-29 23:23:01浏览次数:36  
标签:alipay 支付宝 String pay mall private amount 搭建

 

  1. 导入依赖

             <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
             <!--        导入支付宝的SDK-->
             <dependency>
                 <groupId>com.alipay.sdk</groupId>
                 <artifactId>alipay-sdk-java</artifactId>
                 <version>4.9.28.ALL</version>
             </dependency>

     

  2. 编写整合成一个类(AlipayTemplate.java)

     @ConfigurationProperties(prefix = "alipay")
     @Component
     @Data
     public class AlipayTemplate {
     ​
         //在支付宝创建的应用的id
         private   String app_id = "YOUR-APPLICATION-ID";
     ​
         // 商户私钥,您的PKCS8格式RSA2私钥
         private  String merchant_private_key = "YOUR-PRIVIATE-KEY";
         // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
         private  String alipay_public_key = "YOUR-PUBLIC-KEY";
         // 服务器[异步通知]页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
         // 支付宝会悄悄的给我们发送一个请求,告诉我们支付成功的信息
         private  String notify_url;
     ​
         // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
         //同步通知,支付成功,一般跳转到成功页
         private  String return_url = "YOUR-URL";
     ​
         // 签名方式
         private  String sign_type = "RSA2";
     ​
         // 字符编码格式
         private  String charset = "utf-8";
     ​
         // 支付宝网关; https://openapi.alipaydev.com/gateway.do
     //    private  String gatewayUrl = "https://openapi.alipaydev.com/gateway.do"; 可上沙箱环境查看
         private  String gatewayUrl = "GATEWAY-URL";
     ​
         public  String pay(PayVo vo) throws AlipayApiException {
     ​
             
             //1、根据支付宝的配置生成一个支付客户端
             AlipayClient alipayClient = new DefaultAlipayClient(gatewayUrl,
                     app_id, merchant_private_key, "json",
                     charset, alipay_public_key, sign_type);
     ​
             //2、创建一个支付请求 //设置请求参数
             AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
             alipayRequest.setReturnUrl(return_url);
             alipayRequest.setNotifyUrl(notify_url);
     ​
             //商户订单号,商户网站订单系统中唯一订单号,必填
             String out_trade_no = vo.getOut_trade_no();
             //付款金额,必填
             String total_amount = vo.getTotal_amount();
             //订单名称,必填
             String subject = vo.getSubject();
             //商品描述,可空
             String body = vo.getBody();
     ​
             alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
                     + "\"total_amount\":\""+ total_amount +"\","
                     + "\"subject\":\""+ subject +"\","
                     + "\"body\":\""+ body +"\","
                     + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
     ​
             String result = alipayClient.pageExecute(alipayRequest).getBody();
     ​
             //会收到支付宝的响应,响应的是一个页面,只要浏览器显示这个页面,就会自动来到支付宝的收银台页面
             System.out.println("支付宝的响应:"+result);
             return result;
         }
     }
     ​

     

  3. 编写接口,调用整合好的类

     @Controller
     public class PayWebController {
     ​
         @Resource
         AlipayTemplate alipayTemplate;
     ​
     ​
         @ResponseBody
         @GetMapping(value = "/payOrder",produces = "text/html")
         public String payOrder(@RequestParam(value = "subject") String subject,
                                @RequestParam(value = "body") String body,
                                @RequestParam(value = "total_amount") String total_amount){
     ​
             PayVo payVo = new PayVo();
     ​
             payVo.setTotal_amount(total_amount);
             payVo.setSubject(subject);
             payVo.setBody(body);
             payVo.setOut_trade_no(UUID.randomUUID().toString());
     ​
             String pay = null;
             try {
                 pay = alipayTemplate.pay(payVo);
             } catch (AlipayApiException e) {
                 e.printStackTrace();
             }
             System.out.println("pay");
             System.out.println(pay);
             return pay;
         }
     }

    此处搭配自己编写的页面输入相关数据进行测试

     <!DOCTYPE html>
     <html xmlns:th="http://www.thymeleaf.org">
     <html lang="en">
     ​
     <head>
         <meta charset="UTF-8">
         <meta name="viewport" content="width=device-width, initial-scale=1.0">
         <title>Document</title>
         <style type="text/css">
             * {
                 padding: 0px;
                 margin: 0px;
             }
     ​
             #box {
     ​
                 display: flex;
                 align-items: center;
                 justify-content: center;
                 width: 100%;
                 height: 100vh;
                 background-color: blue;
             }
     ​
             #innerbox {
                 display: flex;
                 align-items: center;
                 justify-content: center;
                 width: 400px;
                 height: 300px;
                 background-color: red;
             }
     ​
             input {
                 float: right;
                 width: 195px;
                 height: 25px;
                 font-size: 19px;
                 outline: none;
                 border: none;
                 padding-left: 10px;
                 margin-right: 10px;
     ​
             }
     ​
             span {
                 display: inline-block;
                 margin-left: 10px;
                 font-weight: 500;
     ​
             }
     ​
             button {
                 margin-top: 12px;
                 width: 310.9px;
                 height: 30px;
     ​
             }
     ​
             #logtitle {
                 display: inline-block;
             }
             form{
                 height:auto;
                 width: auto;
     ​
             }
         </style>
     </head>
     ​
     <body>
     <div id="box">
         <div id="innerbox">
     ​
     ​
             <div style="width: 90px;height: 129px;background-color: yellow;text-align: center;line-height: 129px;">
                 WELCOME
     ​
             </div>
             <div style="display: block;">
                 <form action="/payOrder " method="get">
                     <div>
                         <span>订单名称:</span><input type="text" name="subject" maxlength="10" autofocus /><br>
                     </div>
     ​
                     <div style="margin-top: 10px;">
                         <span>订单主题:</span><input type="text" name="body" maxlength="20" /><br>
                     </div>
                     <div style="margin-top: 10px;">
                         <span>订单金额:</span><input type="text" name="total_amount" maxlength="10" /><br>
                     </div>
     ​
                     <button type="submit">submit</button>
                 </form>
             </div>
     ​
         </div>
     </div>
     ​
     </body>
     ​
     </html>
     ​

标签:alipay,支付宝,String,pay,mall,private,amount,搭建
From: https://www.cnblogs.com/huoziqi/p/17590763.html

相关文章

  • 群晖docker nastools搭建家庭影音中心
    1.所需镜像nastools(2.9.0),nastools2.9.1版本之后,只能够使用PT下载,对于没有PT只能够用BT的小伙伴,选这个版本nastools作用主要是对下载的电影电视剧等进行整理,方便后边的jellyfin更好的识别。同时,能够做硬链接,方便PT的小伙伴保种,对于不需要保种的,可以使用移动的方式qbittore......
  • 从零玩转系列之微信支付实战PC端支付微信回调接口搭建
    一、前言halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序进行关联,至此微信支付Native支付完成.此篇文章过长我将分几个阶段的文章发布(项目源码都有,小程序和PC端)在此之前已经更新了微信支付开篇、微信支付安全......
  • pikachu靶场搭建
    资源下载官方下载地址:https://github.com/zhuifengshaonianhanlu/pikachu环境搭建创建一个新的数据库,库名用户和密码自定义需要修改两个文件,第一个:,第二个在配置好后如果有这个在url搜索install.php点击安装/初始化即可......
  • DVWA靶场搭建
    环境下载环境搭建将压缩包解压到www目录下,再将文件更改成方便自己的名字将config文件夹的config.inc.php.dist的.dist后缀去掉然后在configure/configure.inc.php中修改数据库的用户名和密码不知道用户名和密码的可以去小皮面板的数据库查询,一般是root/root在浏览器输......
  • Python-Django-环境搭建和基础知识
    Python-Django学习目录:环境搭建和基础知识:包括安装Python和Django、了解Python基础语法、掌握Django框架的基本概念和工作原理等。模型和数据库:包括创建模型、定义字段、使用DjangoORM进行数据库操作等。视图和URL:包括定义视图函数、URL路由配置、模板渲染等。表单和验证:包括表单......
  • mybatis源码研究、搭建mybatis源码运行的环境
    文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、有兴趣的可以关注一手。前提研究源码、对我们的技术提高还是很有帮助的。简单的源码建议从mybatis入手。涉及到的设计模式不是很多。需要下载mybatis的源码和父工程依赖。注意下载的mybatis中的父工程依赖版本要对应。这里......
  • 使用APP源码搭建直播网站难不难
    过去,微博、微信、QQ等是互联网主要的引流渠道,而如今直播作为新兴的社交方式,是各行各业最热门的营销工具,现在各行各业都或多或少渗入到了网络直播,很多人问,搭建一个直播网站到底难不难,今天我们就来探讨下这个问题。1.确定网站需求:例如,确定开发者要提供哪些类型的直播内容,是Tob,还是T......
  • centos7.9 ftp 搭建
    脚本使用介绍:执行脚本根据提示输入ftp密码即可默认目录/data/ftp,如需更改修改脚本第三行:ftp_dir='/data/ftp' 将/data/ftp替换默认用户名ftpuser如需更改,修改脚本第四行部署完成配置文件默认设置为只能ftp用户访问ftp服务,只允许访问ftp目录不能访问其他路径。需要......
  • 手把手搭建K3cloud插件开发环境
    最近几天在配置K3cloud开发环境,发现不论是产品论坛还是百度出来的结果,都不够满意,很多大咖给提供的环境搭建手册都是那个云山雾罩的PPT也就是这个open.kingdee.com/K3Cloud/WenKu/DocumentView.aspx?docId=109261博主表示看完了只是理解了概念,但是如何打开K3cloud开发的第一扇门,还是......
  • 使用Cloud Studio&Flutter完成全平台博客网站的搭建
    前言本文我将使用CloudStudio以及Flutter完成自己的一个博客平台的搭建。并且会将该项目作为模版,供大家使用。先来看一下效果一.CloudStudioCloudStudio是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用CloudStudio时无需安装,随时随......