服务器之家

服务器之家 > 正文

java实现支付宝退款功能

时间:2021-06-02 14:00     来源/作者:王啸tr1912

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

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

一、引入支付宝sdk

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

java实现支付宝退款功能

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

下载地址

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

二、找到需要的资源

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

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

三、编写请求代码 

java" id="highlighter_368808">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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);
 }
}

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

原文链接:https://blog.csdn.net/tr1912/article/details/80219745

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部