SpringBoot集成支付宝沙箱支付

https://open.alipay.com/

进入上边网站注册登录,找到沙箱

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

前端代码

//传入订单编号、订单名称、价格到后端
this.$http.post('/alipay/create?orderNo='+orderNo+'&orderName='+orderName+'&payPrice='+payPrice).then((response)=>{
  //返回的页面
  const div = document.createElement('div');
  div.innerHTML = response.data;
  document.body.appendChild(div);
  document.forms[document.forms.length-1].submit();
  }).catch((err)=>{loading.close();this.$msg.error(err)})

代码引入依赖

<!-- alipay-sdk-java 依赖 -->
<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>4.10.192.ALL</version>
</dependency>

controller层

//注解注入
@Autowired
private AlipayService alipayService;
//支付接口
@ResponseBody
@PostMapping(value = "/create", produces = "text/html;charset=utf-8")
public String create(@RequestParam("orderNo") String orderNo,
                     @RequestParam("orderName") String orderName,
                     @RequestParam("payPrice") String payPrice) {
    return alipayService.create(orderNo, orderName, payPrice);
}
//退款接口
//退款成功返回String类型
@ResponseBody
@RequestMapping(value = "/refund")
public String refund(@RequestParam("orderNo") String orderNo, 
                           @RequestParam("payPrice") String payPrice) {
        try {
            alipayService.refund(orderNo, payPrice);
        } catch (AlipayApiException e) {
            log.error("【支付宝支付】退款失败", e);
            return "退款失败";
        }
        return "退款成功";
    }

service层

public interface AlipayService {
    /**
     * 创建支付订单
     *
     * @param orderId   订单编号
     * @param orderName 订单名称
     * @param payPrice  支付金额
     * @return 支付表单
     */
    String create(String orderId, String orderName, String payPrice);

    /**
     * 订单退款
     *
     * @param orderId  订单编号
     * @param payPrice 退款金额
     * @throws AlipayApiException 支付异常
     */
    void refund(String orderId, String payPrice) throws AlipayApiException;
}

service实现类AlipayServiceImpl

@Slf4j
@Service
public class AlipayServiceImpl implements AlipayService {
    private static final String PRODUCTCODE = "FAST_INSTANT_TRADE_PAY";

    //支付接口
    @Override
    public String create(String orderId, String orderName, String payPrice) {
        AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID,
                AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT,
                AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY,
                AlipayConfig.SIGNTYPE);
        //电脑支付页面
        AlipayTradePagePayRequest payRequest = new AlipayTradePagePayRequest();
        //手机端支付接口
//        AlipayTradeWapPayRequest payRequest = new AlipayTradeWapPayRequest();
        AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
        model.setOutTradeNo(orderId);
        model.setSubject(orderName);
        model.setTotalAmount(payPrice);
        model.setProductCode(PRODUCTCODE);
        payRequest.setBizModel(model);
        payRequest.setReturnUrl(AlipayConfig.RETURN_URL);
        payRequest.setNotifyUrl(AlipayConfig.NOTIFY_URL);
        try {
            return client.pageExecute(payRequest).getBody();
        } catch (AlipayApiException e) {
            log.error("[支付宝] 支付失败", e);
        }
        return null;
    }
	//退款
    @Override
    public void refund(String orderId, String payPrice) throws AlipayApiException {
        AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID,
                AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET,
                AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGNTYPE);
        AlipayTradeRefundRequest payRequest = new AlipayTradeRefundRequest();
        AlipayTradeRefundModel model = new AlipayTradeRefundModel();
        model.setOutTradeNo(orderId);
        model.setRefundAmount(payPrice);
        payRequest.setBizModel(model);
        client.execute(payRequest).getBody();
    }
}

config配置类

@Data
@Component
public class AlipayConfig {
    //沙箱appId
    public static final String APPID = "";
    //应用私钥 pkcs8格式
    public static final String RSA_PRIVATE_KEY = "";
    //沙箱支付宝公钥
    public static final String ALIPAY_PUBLIC_KEY = "";
    //请求网关  固定
    public static final String URL = "https://openapi.alipaydev.com/gateway.do";
    //编码
    public static final String CHARSET = "UTF-8";
    //返回格式
    public static final String FORMAT = "json";
    //RSA2
    public static final String SIGNTYPE = "RSA2";
    //异步通知地址
    public static final String NOTIFY_URL = "http://localhost:8080/alipay/notify";
    //同步地址
    public static final String RETURN_URL = "http://localhost:8080/alipay/success";
    private AlipayConfig() {
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值