好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

java实现支付宝退款功能

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

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

一、引入支付宝sdk

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

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

下载 地址

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

二、找到需要的资源

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

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

三、编写请求代码 

?

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

查看更多关于java实现支付宝退款功能的详细内容...

  阅读:33次