SpringBoot集成支付宝支付支付宝退款

本文详细介绍了如何在Spring Boot应用中整合支付宝支付,包括统一下单、支付回调处理以及退款操作。涉及配置、接口实现和关键代码片段,适合支付宝支付初学者和开发者参考。

支付宝支付

阅官方文档 https://opendocs.alipay.com/open/02e7gq

个人支付案例git地址[微信支付/支付宝支付/华为支付/苹果支付/小米支付]:https://gitee.com/wazk2008/demo-pay

前置:引入支付宝官方的jar

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

yml配置

alipay:
  app_id: 自己的appid
  private_key: 商户应用私钥
  app_cert_path: 商户应用公钥地址
  alipay_cert_path: 支付宝公钥地址
  alipay_root_cert_path: 支付宝根证书地址
  notify_url: www.baidu.com
  return_url: www.baidu.com
  alipay_gateway_url: https://openapi.alipaydev.com/gateway.do
  charset: UTF-8
  format: json
  sign_type: RSA2

配置类

@Component
@Slf4j
@Data
public class AlipayConfig {
   
   

    @Value("${alipay.app_id}")
    private String appId;

    // 商户应用私钥
    @Value("${alipay.private_key}")
    private String appPrivateKey;

    // 商户应用公钥证书地址
     @Value("${alipay.app_cert_path}")
    private String appPublicCertPath;

    // 支付宝公钥证书地址
     @Value("${alipay.alipay_cert_path}")
    private String alipayPublicCertPath;

    // 支付宝根证书地址
     @Value("${alipay.alipay_root_cert_path}")
    private String alipayRootCertPath;

    @Value("${alipay.notify_url}")
    private String notifyUrl;

    @Value("${alipay.return_url}")
    private String returnUrl;

    @Value("${alipay.alipay_gateway_url}")
    private String alipayGatewayUrl;

    @Value("${alipay.charset}")
    private String charset;

    @Value("${alipay.format}")
    private String format;

    @Value("${alipay.sign_type}")
    private String signType;


    /**
     * 设置支付宝客户端
     * @return
     */
    @Bean
    public AlipayClient getAlipayClient() {
   
   
        //构造client
        CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
        //设置网关地址
        certAlipayRequest.setServerUrl(alipayGatewayUrl);
        //设置应用Id
        certAlipayRequest.setAppId(appId);
        //设置应用私钥
        certAlipayRequest.setPrivateKey(appPrivateKey);
        //设置请求格式,固定值json
        certAlipayRequest.setFormat(format);
        //设置字符集
        certAlipayRequest.setCharset(charset);
        //设置签名类型
        certAlipayRequest.setSignType(signType);
        //设置应用公钥证书路径
        certAlipayRequest.setCertPath(appPublicCertPath);
        //设置支付宝公钥证书路径
        certAlipayRequest.setAlipayPublicCertPath(alipayPublicCertPath);
        //设置支付宝根证书路径
        certAlipayRequest.setRootCertPath(alipayRootCertPath);
        //构造client
        try {
   
   
            return new DefaultAlipayClient(certAlipayRequest);
        } catch (AlipayApiException e) {
   
   
            log.error("构建AlipayClient对象失败");
            e.printStackTrace();
            return null;
        }
    }

}

1.下单支付(跳转支付宝app进行支付)

接口名称: 统一下单

接口地址: https://opendocs.alipay.com/open/02e7gq?scene=20

个人支付代码demo

@RestController
@RequestMapping(value = "/pay")
@Slf4j
public class PayController {
   
   

    @Autowired
    private AliPayService aliPayService;
  
    @PostMapping(value = "/ali")
    public Result<String> payAli (@RequestBody PayAliRequest payAliRequest) {
   
   
        try {
   
   
            log.info("支付宝支付接口开始执行,请求参数:{}", JSON.toJSONString(payAliRequest));
            String payAliResponse = aliPayService.pay(payAliRequest);
            log.info("支付宝付接口执行成功,请求参数:{},响应参数:{}", JSON.toJSONString(payAliRequest), JSON.toJSON(payAliResponse));
            return Result.getSuccess(payAliResponse);
        } catch (ResponseException e) {
   
   
            log.error("支付宝支付接口执行失败1,请求参数:{},异常原因:{}", JSON.toJSONString(payAliRequest), e.getMessage());
            e.printStackTrace();
            return Result.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

难过的风景

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值