支付宝支付接口沙箱环境demo

支付宝签名方式选择:普通公钥、公钥证书
下面介绍公钥证书方式的接入:

1、生成RSA秘钥,官方参考文档:

https://docs.open.alipay.com/291/105971/
在这里插入图片描述

这里我选择第一种,不需要下载直接在线生成密钥。
在这里插入图片描述
此时生成了应用公钥,应用私钥。

点击生成csr按钮
在这里插入图片描述
说明:

组织/公司 名称一定要和开发者中心门户账号信息的公司名称保持一致,否则会导致后续步骤中上传 CSR 证书文件校验失败。

沙箱环境下 组织/公司 名称应填写为 沙箱环境。

2、控制台配置:

登录开发者中心控制台 >研发服务>沙箱应用:
在这里插入图片描述
点击设置:
在这里插入图片描述

加签模式选择公钥证书 ,上传证书文选择上传 CSR 文件在线生成证书或者上传已申请证书,即可完成公钥证书的设置。上传证书文件。即可完成公钥证书的设置。
选择上传CS 文件在线生成证书并点击上传 CSR 文件在线生成证书
在这里插入图片描述

选择 上传已申请证书,点击,选择上一步骤生成的 .csr 文件上传。上传完成证书后,系统会自动识别证书的加密方式。

3、编码:
pom依赖

 <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
        <dependency>
            <groupId>com.alipay.sdk</groupId>
            <artifactId>alipay-sdk-java</artifactId>
            <version>3.0.0</version>
        </dependency>

一、支付接口

控制层:

    /**
     * 支付
     * @param response
     * @throws IOException
     * @throws AlipayApiException
     */
    @ResponseBody
    @GetMapping("/toPay")
    public CommonResult toPay(Order order, HttpServletResponse response) throws IOException, AlipayApiException {
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.APP_ID, AlipayConfig.APP_PRIVATE_KEY, "json",
                AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.sign_type);
        // 保存订单
        Boolean flag = orderService.save(order);
        flag = goodsService.saveBatch(order.getGoods());
        if (flag){
            //设置请求参数
            AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
            alipayRequest.setReturnUrl(AlipayConfig.return_url);
            alipayRequest.setNotifyUrl(AlipayConfig.notify_url);

            //商户订单号,商户网站订单系统中唯一订单号,必填
            alipayRequest.setBizContent("{\"out_trade_no\":\""+ order.getOrderId() +"\","
                    //付款金额,必填
                    + "\"total_amount\":\""+ order.getTotalPrice() +"\","
                    //订单名称,必填
                    + "\"subject\":\""+ order.getOrderName() +"\","
                    //商品描述,可空
                    + "\"body\":\""+ order.getRemarks() +"\","
                    + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

            //请求
            String form="";
            try {
                form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
            } catch (AlipayApiException e) {
                e.printStackTrace();
            }
            response.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
            response.getWriter().write(form);//直接将完整的表单html输出到页面
            response.getWriter().flush();
            response.getWriter().close();
            return CommonResult.ok();
        }else{
            return CommonResult.fail();
        }
    }

配置类:

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

public class AlipayConfig {
    // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号,开发时使用沙箱提供的APPID,生产环境改成自己的APPID
//    public static String APP_ID = "2021000117629172";
//
//    // 商户私钥,您的PKCS8格式RSA2私钥
//    public static String APP_PRIVATE_KEY = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCzlxgJf4PVN1PTXK/p62/WyfHu4NlnLpgwvRzpbA09+5FPR8QgYR6OJOozGnN32YcwQ6LkRN4smkxejwNtCY5S7vSrWA9aJ2b3juMfHToOEM13/j+M5eKowK54A49R2Tr3PPvGx4I0tBkcWGrEkbyUYnwpWQDZTK8lBD/GmoWJQx4UR6a0i+7K+xKbxCcdd91R0AY3JYyRum13nUhM0RfSMjaLLHSk8Hg131orWyuHcQ/B4B70MRBQyY0MNfdrSnd/qOEhjh9mSCBoNc36fXstcxnX6TxeLyoWCrMmpcp2MTx7Ji7lv1SKEpInLqG2IpgxYBFyBQhrAGk70m4tVj+3AgMBAAECggEATGFJjtiV2DvkwfMcui8w7LgM1lz4+aJehfQYdMpIw4DX51ENf/vuQ+Q9Wyi3zVRN4+AQSmdj2rJxIpJOkbRLvMf2dV1Jgj1Z1JYH0Lbcdxj8WjlfC+zFvqHcUhypetUZ+AcOyhcWMJYcS+rq1dlpy+4rAmbhLoonv2WUPkJ/4sVbVghS96PO3/5vmqBTLNPGe7Ugu8/CC5hCKRJG+WSEV9KP6MuAbXtKCngCdwtkgQ4AL29s4nPqdRk8JTxwRUGxQdo9CMpcez0fbVzowh6hpHtvl0zUXiG3nOhUQZSvWXsztoQerVNi4hbpyyFpslE5+wI6AV/dw94Dlh+fXYE1yQKBgQDgTMC0sy6ATqohxpPgdBt/4zc89TmV9t0ieYgqIk+kxHhzDhzutdwwFXCBBKOFM3FSHsRg1nDPgWLLovreZzTHfAXDOyggtXMYEf5wt9zL4WxRccyEhBJDboMpuEqrgA+SzxRh0RqCLWJBlSH2jHu+EdDfmbDZcbUWyF6laB9zOwKBgQDM+LtQwMzFTwPp9lFZ7eVnfmqHZVngLqsE5wZ8ijs6H/eKiDT1DF8J9XxZn63DG7iH8MIByfGxuXZgSid+SYd4RLR1TLEhg07i+D8UA3P3sDOHcsrJQcvN119C4F+AqjBY14EwapB8PAfMXkGQVlNx2WyrhBby9JgCNGFbCrLltQKBgQCAxzBgzvtkyUVezP88AA2F2HNveS/NzQVbdMFbx4VIiVDKZhDwcNNxe+2y9XHY2Rc32dhP7O6qBJQvbGxyYnjoC2nXlFBOrz7cVABswPNwzwT8ocSVVKqTspB11IxyeLz4QhJmssJweRQPqUrtneyxzNLKfhgOT/1zjijg+K4N3wKBgEMPtilrixObEIrBnkgv/3hm8e+uh0NDwYxvEb45c7tGrjTS75ClJYsamD6ycaV+Mle3u6HeMoeVSFekq1s0L3B3+hrOpr1yOqMj2W9w2cZWDeXo9tP2BPop1u8IffaYuAy5JXlzxCYBdgO1avoQZGjBXD6ZjvCaeglundOtom5pAoGBAKVtdxlnfGYtMKzbrq6tmRcR29B2pol1fLRLVNPIc/lMfaGWHOHaFf9yH1PC8WcfCCARvS0nsiUMZBARg1uj/txQpABvyx6yux+1chuzHMW+fgQbKnpn9ni0ewkvFA6TlV7dVf62HJIWpDsTqmcfdMntUUKQy2vYAoMrjl0Zrqcf";
//
//    // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
//    public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnvecwFXRgdDes5uqtS0VnP1KKhfjzfpy0U+HEFvxJQBlykbt3QQrTqBpZgI3lhbG1hf1oQ9tg+utKfFyKt/n5KPlBWuBqFrljlRx0K8PhUxnahRgWpcI2QtB+f6qN7qcuh1+0AmEvMeOqE/v067fMM61O+I8QpRVqSrUHBhWiVJ45gZ6jFYm/c3s7NNL2Hh7w8KZ7acYxPI6GHsff/xAR5X+FO+BcD3PelXLvOMLUuATrFBeEdqTTzGBymZGOgikZndhegTkMyfrpIBaG+6kzYveajgiDaEtsBmZwmRdM7YCV14NP6VRrTdQKWyzxLYJnINmINS//FlHapLTIdpBiwIDAQAB";

    public static String APP_ID = "2021000117629172";//在后台获取(必须配置)

    //私钥直接使用工具的私钥
    public static String APP_PRIVATE_KEY = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCNniucv7WVTDk4Cr5b/fz8VgtfqFIfqCpAdvKX6qEDVQyDtfCoB4O2Ixj0FIA/HfaRPBXjccWKYNPbB7YUsU7jItAIvi8RY35JsBfLASfK3VVWGpRGmsRYj8K+l7dFu+Y5cXLKeHFkaQ500uZ6epaTjZebYL5Ee5x1ENgghO2vx9vamEW1WLdBz1i+Og8RY3PVwyFk19hsv98otc/yfFcu1QHj0QndneXo8NrLBcT66iGXLRrP+enTjEWt3i09x//Sj21ksDSeo/6ycLFNIFHUl7au5Wz+beYjP9vKxfVJcGOGa+fskBvma9kOGliONV03tWhvhRSc49j/sYFSkwInAgMBAAECggEARa8m1qKevzAal7DxqmJ4MdJFFnTEtD8TS1U8WfRh9jnLRqQoHwZTkTQD+1Z7JJOh2CUwwBIjmcu7c3N/7P6ySqG+rA6pKm1Cnw+/JW0UH4Z5jzzU6UkOhGV49j/BNtcWmf1w9p/9a+Ml8eY08t+PaFur1hDsjtYkTpZTQu0l5/A3nTY5BiuZBm07jLjn97HVPSEp6U7HdwROL1HrrENE32ZaKOpB5KgX70f1q+ajeRhKfs15ILm/KCWG3ckIbbSemPqR9BGYpqG6y5qYbpRjBm+ot4lXxqBC4esrKi5DesVzyGHDZHhyh4GFERAKpz63ju0ytwq78b/r4VrZBmsNgQKBgQDv6nFW6mXQD+oYb7D9+TpAjWm8YAkwWZ7ynNdveiut3ThD+BEzQrbpJwU2G57F2QORXebhS4vluPp/+DvJUEFTsFvZNzvEIdjsr6n5DgZVjOb93sTHIQU62Jm7vJLeYcmSykU1i/CDlEicTPJb1XLLBEuLBqwbHOtFUlukOpGg/wKBgQCXHLAv6rrEwfHv4+8WK5R9Rwc5HYGdjMeXOgGZk/MKt/YVwg2c8thH1CXndvkiEFe0rzVlSdpMO89yO+QCEoLT6JczBXrxeFQsIju7iiEmLDvPjiBmOvSg2+giC5Wb0YsjL2/0cIiMswS3nyOTXi/gptU+WjKPeEGArZl7BxR22QKBgDZTaAa+XP+YGvIdmH5qCP7FBsRZGruQD6XwTfg4OdvM1AjQC1UILlLtOwjdiD5UvbIVCUrKyIrkMBT6KM+VFLXWoXW2RBpNb8lonZx/yH9mwIeMAhL1LzH8ChOwx7EDg5lxo+pUHcotsaNy6Q5SbwP5nQGGKUKaccvoskel24QRAoGAQ3IPhWOMNvOli3+9n7SV0xCXvbtYtbw2/V1rh2OMj9Up5e416z5MoEqlHFlyuux2aPPmri23XF05qu/mRbKDaBehHKmuhQZC82vYI010nDgT/gCen2Ji+0ULp95pySFOq8apfn2XxMzGJzrFQyo/zlJITUsu0/BFtCxHm6y+SokCgYBHBCPG9U4RT4wRnituL8s6Uh9uKzco1fwJhlpvJcBVilPM8oY0LjUViOgXcPTe/e5qxQ3eUYFtnBCrV/Zv3a6erxsPdTrJLdLR4w1erx0syVjEClJcCb+dutsAtslSJv4veC5hF0buh9UeRmDEH2LuYmrziJPct5d+8aueCaHv4A==";
    //公钥需要先配置到支付宝平台。从平台获取
    public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnvecwFXRgdDes5uqtS0VnP1KKhfjzfpy0U+HEFvxJQBlykbt3QQrTqBpZgI3lhbG1hf1oQ9tg+utKfFyKt/n5KPlBWuBqFrljlRx0K8PhUxnahRgWpcI2QtB+f6qN7qcuh1+0AmEvMeOqE/v067fMM61O+I8QpRVqSrUHBhWiVJ45gZ6jFYm/c3s7NNL2Hh7w8KZ7acYxPI6GHsff/xAR5X+FO+BcD3PelXLvOMLUuATrFBeEdqTTzGBymZGOgikZndhegTkMyfrpIBaG+6kzYveajgiDaEtsBmZwmRdM7YCV14NP6VRrTdQKWyzxLYJnINmINS//FlHapLTIdpBiwIDAQAB";
    // 服务器异步通知页面路径  需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
    public static String notify_url = "http://www.baidu.com";

    // 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问(其实就是支付成功后返回的页面)
    public static String return_url = "http://www.baidu.com";

    // 签名方式
    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:\\";

    /**
     * 商户订单号,商户网站订单系统中唯一订单号,必填
     */
    public static String outTradeNo = "5110";

    /**
     * 付款金额,必填
     */
    public static String totalAmount = "666";

    /**
     * 订单名称,必填
     */
    public static String subject ="下饭操作";

    /**
     * 商品描述,可空
     */
    public static String body ="这波能五杀";


//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

    /**
     * 写日志,方便测试(看网站需求,也可以改成把记录存入数据库)
     * @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();
                }
            }
        }
    }
}

二、退款接口

控制层:

    /**
     * 退款
     * @return
     * @throws AlipayApiException
     */
    @ResponseBody
    @GetMapping("/toRefund")
    public CommonResult toRefund(HttpServletResponse response, HttpSession session) throws AlipayApiException {
        response.setContentType("text/html;charset=utf-8");
        //获得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.APP_ID, AlipayConfig.APP_PRIVATE_KEY,
                "json", AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.sign_type);
        //设置请求参数
        AlipayTradeRefundRequest alipayRequest = new AlipayTradeRefundRequest();
        //商户订单号,必填
        String out_trade_no = new String(AlipayConfig.outTradeNo);
        //需要退款的金额,该金额不能大于订单金额,必填
        String refund_amount = new String("500");
        //标识一次退款请求,同一笔交易多次退款需要保证唯一。如需部分退款,则此参数必传;不传该参数则代表全额退款
        String out_request_no = new String(UUID.randomUUID().toString());
        // 字符转义很重要
        alipayRequest.setBizContent("{\"out_trade_no\":\""+ out_trade_no +"\","
                + "\"refund_amount\":\""+ refund_amount +"\","
                + "\"out_request_no\":\""+ out_request_no +"\"}");
        //请求
        String result = alipayClient.execute(alipayRequest).getBody();
        //输出
        return CommonResult.ok().setResult("返回结果:"+result);
    }

配置类:
同上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值