蚂蚁金服支付平台代码配置

1.添加依赖

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

2.进行配置基本的支付信息
package com.bookstore.utils;

import java.io.FileWriter;
import java.io.IOException;

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 notify_url = "http://localhost:xxxx/alipay.trade.page.pay-JAVA-UTF-8/notify_url.jsp";

    // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
    //扫码成功之后跳到哪个处理器方法
    public static String return_url = "http://localhost:xxxx/xx/xx.do";

    // 签名方式
    public static String sign_type = "RSA2";

    // 字符编码格式
    public static String charset = "utf-8";

    // 支付宝网关
    public static String gatewayUrl ="https://openapi.alipaydev.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();
                }
            }
        }
    }
}

3.提交的.do方法

@RequestMapping("/pay.do")
    public void pay(String id, String  money, String name, HttpServletResponse response) throws Exception {
        AlipayClient 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 = id;
        //付款金额,必填
        String total_amount = money;
        //订单名称,必填
        String subject = name;
        //商品描述,可空
        String body = "";

        alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
                + "\"total_amount\":\""+ total_amount +"\","
                + "\"subject\":\""+ subject +"\","
                + "\"body\":\""+ body +"\","
                + "\"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();
        response.setContentType("text/html;charset=UTF-8");
        //输出
        response.getWriter().println(result);
    }

4.支付成功之后,跳转到商城首页

 @RequestMapping("/paysuccess.do")
    public String paysuccess(HttpServletRequest request) throws Exception {
        //获取支付宝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("ISO-8859-1"), "utf-8");
            params.put(name, valueStr);
        }

        boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.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");

            productService.paysuccess(out_trade_no);
            return "redirect:/client/paysuccess.jsp";
            //out.println("trade_no:"+trade_no+"<br/>out_trade_no:"+out_trade_no+"<br/>total_amount:"+total_amount);
        }else {
            return "/client/fail.jsp";
            //out.println("验签失败");
        }
    }

原文地址:https://www.cnblogs.com/liuna369-4369/p/10969990.html

时间: 2024-10-08 15:23:15

蚂蚁金服支付平台代码配置的相关文章

蚂蚁金服数据质量治理架构与实践

摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办.金融智能专场分论坛上,蚂蚁金服数据平台部高级数据技术专家李俊华做了主题为<蚂蚁金服数据治理之数据质量治理实践>的精彩分享. 演讲中,李俊华介绍了蚂蚁金服数据架构体系的免疫系统--数据质量治理体系,此外还着重介绍了数据质量实施的相关内容,以及蚂蚁的数据质量治理实践与所面对的实际挑战.李俊华 蚂蚁金服数据平台部高级数据技

蚂蚁金服十年自研分布式中间件,成就世界级新金融科技平台

中间件,是与操作系统和数据库并列的传统基础软件三驾马车之一,也是难度极高的软件工程.传统中间件的概念,诞生于上一个"分布式"计算的年代,也就是小规模局域网中的服务器/客户端计算模式,在操作系统之上.应用软件之下的"中间层"软件.早期中间件的出现,是为了解决日益复杂的PC服务器.网络甚至不同地理位置机房之间等异构硬件环境中,支撑应用软件的挑战.与操作系统和数据库不同,中间件并没有一个明确的定义,通常来说包括消息.数据.远程过程调用.对象请求代理.事务.构件等几个部分.

天下代码一大抄,整个案例的搬是什么鬼!蚂蚁金服?你大爷

写在开始 上班前的第一件事,就是码云看看有什么消息,回复下网友的问题.如果看到喜欢的项目会点进去瞅瞅,然后就开始一天的工作. 然而,这一天的工作并不开心,一个今日热门项目让自己很恼火,一开始感觉并没有什么,直到深入进去,才发现,居然这么赤裸裸的搬挪替换,这都不能算是抄袭! 前情回顾 事情要从一年前说起,闲来无事也给自己充充电,不都说人生苦短,要学 Python 嘛!于是乎就在码云拉了个项目,叫<从零学Python>,关注小柒公众号的朋友们肯定是知道的. 陆陆续续的也更新了不少学习案例,也为大家

蚂蚁金服互联网IT运维体系实践

摘要: 本文来自蚂蚁金服首席技术架构师,基础技术部负责人胡喜.从2010年支撑双十一最高交易峰值2万笔/分钟到2015年双十一的8.59万笔/秒,蚂蚁金服的技术架构和运维体系一直都在不断摸索和实践.本文就"互联网IT运维体系"这一主题,和朋友们分享蚂蚁金服在该领域的实践经验. 8月30-31日20:00-21:30,一场别开生面的技术大会-- "蚂蚁金服&阿里云在线金融技术峰会"将在线举办.本次将聚焦数据库.应用架构.移动开发.机器学习等热门领域,帮助金融业

蚂蚁金服智能推荐引擎解决方案与实践

摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办.金融智能专场分论坛上,蚂蚁金服人工智能部高级技术专家王志勇做了主题为<蚂蚁金服智能推荐引擎>的精彩分享. 演讲中,王志勇代表蚂蚁金服首次向公众介绍了蚂蚁金服智能推荐引擎,分享了蚂蚁金服利用人工智能和大数据能力在推荐引擎上沉淀的大量经验,并介绍了结合蚂蚁自身优势打造的.能够灵活适配各种业务场景的智能推荐引擎解决方案(A

厉害了,蚂蚁金服!创造了中国自己的数据库OceanBase

2008年,王坚从微软亚洲研究院常务副院长的位置上离职后,于当年9月加入了阿里巴巴集团担任首席架构师一职,负责集团技术架构以及基础技术平台建设.加入阿里没多久后,王坚就提出了"去IOE"的想法,即摆脱过去IT系统中对IBM小型机.Oracle数据库以及EMC存储的过度依赖. 2009年开始,阿里举全公司之力投入到云计算的研发和使用中,这可视为取代IOE之举.2010年,阳振坤加入了阿里,这位在1999年就成为北京大学首批长江学者.曾获得国家科技进步一等奖.先后担任北京大学计算机科学技术

蚂蚁金服 Service Mesh 实践探索

SOFAMesh是蚂蚁金服在ServiceMesh方向上的探索,下面是它高级技术专家敖小剑在QCon上海2018上的演讲. Service Mesh 是一个 基础设施层,用于处理服务间通讯.现代云原生应用有着复杂的服务拓扑,服务网格负责在这些拓扑中 实现请求的可靠传递. 在实践中,服务网格通常实现为一组 轻量级网络代理,它们与应用程序部署在一起,而 对应用程序透明. 加粗部分是重点: 基础设施层:这是 Service Mesh 的定位,今天内容的最后一个部分我会和大家详细展开这个话题: 服务间通

蚂蚁金服未来智慧城市:打造新空间_?_新治理_?_新生活

在2017云栖大会-南京峰会上,蚂蚁金服城市服务总经理林光宇做了题为<未来城市 · 智慧生活--新空间 · 新治理 · 新生活>的分享.蚂蚁金服城市服务的故事起源于支付,但是不止于支付.目前支付宝是移动端最大的政务服务聚合平台,蚂蚁金服通过信用重构社会关系是商业文明重要一步,建立社会关系链的新基石,而蚂蚁小贷专注服务小微企业,力作小微企业CFO.同时支付宝也是全球最大的个人碳账户体系,将定义低碳治理新社会.在未来,蚂蚁金服将成为中国新型智慧城市建设新引擎.蚂蚁金服城市服务"新三观&q

蚂蚁金服若IPO 信贷业务或将得到长远发展

专注服务小微企业及消费者的蚂蚁金服近期又有大动作了,据最新融资推介材料显示,蚂蚁金服首轮融资正在紧锣密鼓地进行,估值预计最高可达2500亿元人民币.IPO的节奏似乎已经越来越近,让人忍不住大开脑洞展开预测,蚂蚁金服上市将对旗下哪块业务的影响最为深远呢? 作为阿里的亲儿子,蚂蚁金服有云计算.大数据和信用体系等底层平台做强大支撑,伴随阿里电商平台的扩展,在移动互联网和大数据的推动下,蚂蚁金服逐渐构建成一条完整的金融链条:从支付出发推出了支付宝钱包获得1.9亿活跃用户,日常交易超4500万笔;随后为用