java实现支付宝退款功能
程序员文章站
2024-02-26 08:26:28
最近完成的差不多的项目突然需要加退款的流程需求了,所以来小小的实现以下。
其实对比其他的支付和退款来说,支付宝算是特别专业,也是特别简单的一个了。
一、引入支付宝sdk...
最近完成的差不多的项目突然需要加退款的流程需求了,所以来小小的实现以下。
其实对比其他的支付和退款来说,支付宝算是特别专业,也是特别简单的一个了。
一、引入支付宝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); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: Android控件拖动实例详解