支付宝支付整合SpringBoot

导读:本篇文章讲解 支付宝支付整合SpringBoot,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

导入依赖:

<!-- 支付宝支付 -->
<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>3.0.0</version>
</dependency>
<!--        http请求-->
<dependency>
     <groupId>commons-httpclient</groupId>
     <artifactId>commons-httpclient</artifactId>
     <version>3.0</version>
</dependency>
<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.29</version>
</dependency>

支付宝支付配置类:AlipayConfig:

@Configuration
public class AlipayConfig {
    // 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号,开发时使用沙箱提供的APPID,生产环境改成自己的APPID

    public static String APP_ID = "2021000119614251";


    // 商户私钥,您的PKCS8格式RSA2私钥

    public static String APP_PRIVATE_KEY = "MIIEvgIBAD*****Q5gyFf9NgL";



    // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。

    public static String ALIPAY_PUBLIC_KEY = "MIIBIjAN****QIDAQAB";


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

    public static String return_url = "http://localhost:8080/index/returnUrl";


    public static String notify_url = "http://localhost:8080/index/notifyUrl";
    // 签名方式

    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 gatewayUrl = "https://openapi.alipaydev.com/gateway.do";

controller层:

 /**
     * web 订单支付
     */
    @GetMapping("getPagePay")
    public void getPagePay(HttpServletResponse httpResponse) throws Exception {
//        /** 模仿数据库,从后台调数据*/
//        AliPayBean biz_content=new AliPayBean();
//        String body = biz_content.getBody();
//        String out_trade_no = biz_content.getOut_trade_no();
//        String subject = biz_content.getSubject();
//        String total_amout = biz_content.getTotal_amout();
//        String product_code = biz_content.getProduct_code();
//        String timeout_express = biz_content.getTimeout_express();
        logger.info("商户订单号为{},订单名称为{},付款金额为{},商品描述{}", out_trade_no, subject, total_amout, body);
//
//        biz_content.setOut_trade_no(out_trade_no);
//        biz_content.setSubject(subject);
//        biz_content.setTotal_amout(total_amout);
//        biz_content.setProduct_code(product_code);
//        biz_content.setBody(body);
//        biz_content.setTimeout_express(timeout_express);
//        System.out.println(biz_content);

        alipayService.webPagePay(httpResponse);
//        System.out.println(pay);

//        Map<Object, Object> pays = new HashMap<>();
//        pays.put("pay", pay);


    }

service层:

@Override
public void webPagePay( HttpServletResponse httpResponse) throws Exception {
    
      /**
     * 调取支付宝接口 web端支付
     */
    DefaultAlipayClient alipayClient = new DefaultAlipayClient(
            AlipayConfig.gatewayUrl, AlipayConfig.APP_ID, AlipayConfig.APP_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 = "46341274627163538275";
    String total_amount="99.00";
    String subject = "冰敦敦";
    String body ="这是一个冬奥吉祥物";

    alipayRequest.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(alipayRequest).getBody(); //调用SDK生成表单
    } catch (AlipayApiException e) {
        e.printStackTrace();
    }
    httpResponse.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
    httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
    httpResponse.getWriter().flush();
    httpResponse.getWriter().close();
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/105114.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!