×

新闻动态

调用支付宝接口实现付款功能

0x_www 0x_www 发表于2021-02-02 10:47:03 浏览393 评论0

抢沙发发表评论

调用支付宝接口实现付款功能

首先去沙箱创建一个开发者用户:
沙箱链接

进入以后左边栏是如下界面:
在这里插入图片描述
点击沙箱账号,进行虚拟money的设置(先充它一个亿再说~~哈哈哈)

然后接下来进行代码的实现:
Controller

package com.douzi.mall.controller;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;

@Controller
public class PayControllertest {
    private String APP_ID="2016100200644233";
    private String APP_PRIVATE_KEY="MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCAJiYKrkjyqJ6ceBkvcigOaccE1ssXfGEZFsTRisn+351hHIA8t9pP5erqCttXjV7SJGfaY9vRlvBjxcOIuMyp9O6Smlp4K4Ay86blTSxQvnkmnmxAqjwQfS1Wxbn9e1ogv78QjCCR0ayakKFuDsw79F27I5dDQMqzbinChFQu6zvKJatoKr2A1G/pdk+nfPfWgeh+tNDauHp9OjVeX12Bdrkt70XVL8hrbgf8lWVfpDI6q10EHOztTC4oJAK8H1M49w6rAzRkFUW2nfCvobiuJNAWfsaPyJFWhqEFvM+miOdlF1zJxX3ZI1D43fyC2rnazw/4mAyEB3XQg45utSWdAgMBAAECggEAYvAREtH4VBDHVHqMx0rVjjswgpXq+tj2hk5D6pvC1FqEwUMl5rrzfBhAxC1Zp0DoYknlPIE4Z5qnQgCftGEo8la+EsXE7152feALjKGGg1hrZNuPLGXCNeDPLl09+WxQ61PfCcGGK867+iGL4NLf77H848zYrf3KAbod16Ye8JFoUP6Vex9HLUGuM4p0PLuFPYF+zGix5ggMcJKqBZTeKcgW/t6Sl64L394d+F0/oOlWEnFIfewkfFL+aV/ZDjFrfJCv3QsIQmZfLB4NkGdAXY/rKOr4QiNy5/+JRFdbDf+YWC/PV1pX6ff8ti8L3YFGb/vyQInYxPexiulU6Cs8KQKBgQDE76kj9nzw1HFd+Mv4FZslaV2ahl85dO5E/mA017XqRPB27UaMrwcDi3BxkqHdxXk2rdDnbJamVzd64l2aTkquocRDQBhRA0s5tqjT8FvvvX9/kTOcDU9XG1G4NRQk51bkEEDOqddgA69w9AMO9KOxYnQej/5R+on7lTo3p1GRawKBgQCmlSgiaFXS19+/rT/cd2wWezvcKZNqssup6URrmpJRx6D1dwU5OUK5+i20QJa/s3Xg2OvEp82AStvoqyVIAfMnPJ9hEY1kctFs/3SXwEpda/lzPqmZu1qSYWdQ1roiqPXvVmAa1VWq8PyjxQvP/sXP6KdZpt9Hpvbh4yfoI/d/FwKBgEosqlwtPqnGmlx2lPx/xsu0f9jvu3X8oLHDzaCZjp8KEDf67pOWaOHg5x0fyW+qLRl3JjPEJonIV9Ek6XRxAJf9vdpGjeIVh4PZVIVfBoGpshfuLK4eJT/9vi3PcCLmL0f/BynPtpsnSDEW9v/vDKiHGI1aVsOxxb7IWgEUOBi5AoGAF8NtX0MtAw/ijlBjrMqoc6iOyIBx1CW/YfSx2vvI5bupnXqmFxyxBSDIRk90cdJi/XlUYNBjQ2rqZg2MGvKUQkOmpM1BM1Qhxf/HHSLEOQF/K06EGTcd24XjnCeVk/4wXz0eJpXKS8Fm+OHSJpC8nUUeIm7oqSsLSvwBpF8FHm8CgYAbbwQUIKNqdmFOojLJxxcGJOHUZORzbNv6LnRK0XrBabG8DB2abzcObhWlUY51KecvLU6Tn3gFXEz3hYnvI3EjC9P9HJJkU7nQu5vce6QMMUwDdYd0+dCCHf1TUkaupGISOiI/W/Du+19WETix/+uIYChcUosOU5FkwtP8ocy54w==";
    private String FORMAT="JSON";
    private String CHARSET="UTF-8";
    private  String ALIPAY_PUBLIC_KEY="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgCYmCq5I8qienHgZL3IoDmnHBNbLF3xhGRbE0YrJ/t+dYRyAPLfaT+Xq6grbV41e0iRn2mPb0ZbwY8XDiLjMqfTukppaeCuAMvOm5U0sUL55Jp5sQKo8EH0tVsW5/XtaIL+/EIwgkdGsmpChbg7MO/RduyOXQ0DKs24pwoRULus7yiWraCq9gNRv6XZPp3z31oHofrTQ2rh6fTo1Xl9dgXa5Le9F1S/Ia24H/JVlX6QyOqtdBBzs7UwuKCQCvB9TOPcOqwM0ZBVFtp3wr6G4riTQFn7Gj8iRVoahBbzPpojnZRdcycV92SNQ+N38gtq52s8P+JgMhAd10IOObrUlnQIDAQAB";
    private String SIGN_TYPE="RSA2";
    private String tradeno;
    private String cash="80";
    //tradeno商户订单号******cash金额
    
    @RequestMapping("/pay")
    public void pay(HttpServletRequest httpRequest,
                    HttpServletResponse httpResponse) throws ServletException, IOException {
        Date time=new Date();
        long no=time.getTime();
        System.out.println(no);
        tradeno=String.valueOf(no);
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do", APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE); //获得初始化的AlipayClient
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的request
        alipayRequest.setReturnUrl("http://localhost:8080/item_show");
        alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp");//在公共参数中设置回跳和通知地址
        alipayRequest.setBizContent("{" +
                "    \"out_trade_no\":\""+tradeno+"\"," +
                "    \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
                "    \"total_amount\":"+cash+"," +
                "    \"subject\":\"Iphone6 16G\"," +
                "    \"body\":\"Iphone6 16G\"," +
                "    \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
                "    \"extend_params\":{" +
                "    \"sys_service_provider_id\":\"2088511833207846\"" +
                "    }"+
                "  }");//填充业务参数
        String form="";
        try {
            form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        httpResponse.setContentType("text/html;charset=" + CHARSET);
        httpResponse.getWriter().write(form);//直接将完整的表单html输出到页面
        httpResponse.getWriter().flush();
        httpResponse.getWriter().close();
    }

    public class ServletException extends Exception {
    }
}12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364

Maven项目需要添加如下依赖:

<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <version>1.1.1</version>
</dependency>
  <dependency>
      <groupId>com.alipay.sdk</groupId>
      <artifactId>alipay-sdk-java</artifactId>
      <version>3.7.89.ALL</version>
  </dependency>12345678910

这样就好了,先进行测试:localhost:8080/pay,进入如下界面就成功了;