java实现支付宝退款功能

 更新时间:2018年09月29日 10:41:10   作者:王啸tr1912  
这篇文章主要为大家详细 介绍了java实现支付宝退款功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近完成的差不多的项目突然需要加退款的流程需求了,所以来小小的实现以下。

其实对比其他的支付和退款来说,支付宝算是特别专业,也是特别简单的一个了。

一、引入支付宝SDK

在这里说一下,其实每种支付都会有一个官方带的SDK,我们可以把这个sdk引入到我们的项目中去,然后我们就可以调用里面的方法和对象,给里面传值,进行我们相应的请求的访问和介入。    

首先引入如上图所示的jar包,然后我们就算是成功了一半了。

下载地址

然后我们需要把这个jar包引入到所需要的地方,这里不做过多的描述。

二、找到需要的资源

做支付,最最基本的还是各种appid,还有公钥,私钥,以及请求的网关等等内容,支付宝需要的包括:

  • APP_ID:开放平台账号申请的appid
  • requestUrl:实现功能所需要请求的网关地址
  • APP_PRIVATE_KEY:用户自己生成的私钥
  • ALIPAY_PUBLIC_KEY:支付宝生成的公钥
  • CHARSET:我们需要的字符编码,一般为utf-8的

三、编写请求代码 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradeRefundModel;
import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.response.AlipayTradeRefundResponse;
 
public class AlipayUtil {
 
 private static final Logger LOGGER = LoggerFactory.getLogger(AlipayUtil.class); 
 private static String APP_ID = "234789720984098";
 
 //支付宝退款请求的网关
 private static String requestUrl = "https://openapi.alipay.com/gateway.do";
 //用户自己生成的私钥
 private static String APP_PRIVATE_KEY = "随机字符,见文档";
 //支付宝公钥
 private static String ALIPAY_PUBLIC_KEY = "从支付宝中获得";
 
 //编码级别
 private static String CHARSET = "UTF-8";
 
 public static String refundOrder(AliRefundTO aliRefundTO){
 System.out.println("开始调用支付宝加密******************************************************");
 //实例化客户端
  AlipayClient alipayClient = new DefaultAlipayClient(requestUrl, APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
  //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
  AlipayTradeRefundModel refundModel = new AlipayTradeRefundModel();
  refundModel.setTradeNo(aliRefundTO.getTrade_no());
  refundModel.setRefundAmount(aliRefundTO.getRefund_amount());
  refundModel.setRefundReason("商品退款");
  //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
  AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
  request.setBizModel(refundModel);
  try{
  AlipayTradeRefundResponse response = alipayClient.execute(request);
  System.out.println(response.getMsg()+"\n");
  System.out.println(response.getBody());
  }catch(Exception e){
  e.printStackTrace();
  LOGGER.error("支付宝退款错误!",e.getMessage());  
  } 
  return "";  
 }
 
 public static void main(String[] arg){
 AliRefundTO aliRefundTO=new AliRefundTO();
 aliRefundTO.setRefund_amount("0.01");
 aliRefundTO.setTrade_no("2018050421001004310518105890");
 String res=refundOrder(aliRefundTO);
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 解析Java内存分配和回收策略以及MinorGC、MajorGC、FullGC

    解析Java内存分配和回收策略以及MinorGC、MajorGC、FullGC

    本节将会介绍一下:对象的内存分配与回收策略;对象何时进入新生代、老年代;MinorGC、MajorGC、FullGC的定义区别和触发条件;还有通过图示展示了GC的过程。
    2021-09-09
  • String类型转localDate,date转localDate的实现代码

    String类型转localDate,date转localDate的实现代码

    这篇文章主要介绍了String类型转localDate,date转localDate的实现代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java实现商城订单超时取消功能

    Java实现商城订单超时取消功能

    大多数的B2C商城项目都会有限时活动,当用户下单后都会有支付超时时间,当订单超时后订单的状态就会自动变成已取消 ,这个功能的实现有很多种方法,本文的实现方法适合大多数比较小的商城使用。具体实现方式可以跟随小编一起看看吧
    2019-12-12
  • 基于ArrayList初始化长度的作用及影响

    基于ArrayList初始化长度的作用及影响

    这篇文章主要介绍了基于ArrayList初始化长度的作用及影响,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • springboot使用单元测试实战

    springboot使用单元测试实战

    这篇文章主要介绍了springboot使用单元测试实战,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Java mongodb连接配置实践

    Java mongodb连接配置实践

    这篇文章主要介绍了Java mongodb连接配置实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • Springboot启动报错Input length = 2的问题解决

    Springboot启动报错Input length = 2的问题解决

    最近使用Springboot启动报错,报错内容java.nio.charset.MalformedInputException: Input length = 2,下面就来介绍一下解决方法,感兴趣的可以了解一下
    2024-08-08
  • Spring Boot集成JavaMailSender发送邮件功能的实现

    Spring Boot集成JavaMailSender发送邮件功能的实现

    spring提供了发送邮件的接口JavaMailSender,通过JavaMailSender可以实现后端发送邮件,下面这篇文章主要给大家介绍了关于Spring Boot集成JavaMailSender发送邮件功能的相关资料,需要的朋友可以参考下
    2022-05-05
  • java线程的中断和同步问题的实现

    java线程的中断和同步问题的实现

    本文主要介绍了java线程的中断和同步问题的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • java使用正则表达式判断手机号的方法示例

    java使用正则表达式判断手机号的方法示例

    这篇文章主要介绍了java使用正则表达式判断手机号的方法,分析了手机号码段的原理及java使用正则表达式针对手机号的匹配操作实现技巧,需要的朋友可以参考下
    2017-06-06

最新评论