支付宝退款(JAVA版)


配置申请地址 https://open.alipay.com/platform/home.html(开发对接中需要以下参数)
//支付宝网关地址:https://openapi.alipay.com/gateway.do 
//支付宝申请的APPID
//商户应用私钥(与支付宝数据交互时,保证数据安全,防止数据被篡改)
//支付宝公钥(与支付宝数据交互时,保证数据安全,防止数据被篡改)
//签名算法类型(RSA2或者RSA,支付宝推荐使用RSA2)
//编码格式(utf-8,gb2312,gbk) 
详细接口或参数说明,以支付宝官方文档为准, 支付宝API网址( https://opendocs.alipay.com/apis)
 
一.支付宝退款
  1.导入支付宝提供的jar,此为Maven版
<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>4.9.124.ALL</version>
</dependency>

  2.关键代码

     //网关地址,APPID,商户应用私钥,数据格式,编码格式,支付宝公钥,签名算法类型
     AlipayClient alipayClient = new DefaultAlipayClient(aliPayGateway,appID,rsa_private_key,format,charset,alipayPublicKey,signType);
     //请求对象,调用支付宝 不同接口,需使用不同对象 AlipayTradeRefundRequest alipayTradeCloseRequest =new AlipayTradeRefundRequest();
     //请求参数集合对象,除了公共参数之外,所有参数都可通过此对象传递 AlipayTradeRefundModel alipayTradeRefundModel =new AlipayTradeRefundModel();
     //退款的订单号,传入生成支付订单时的订单号即可 alipayTradeRefundModel.setOutTradeNo(outTradeNo);
     //退款金额 alipayTradeRefundModel.setRefundAmount(refundAmount);
     //退款的原因 alipayTradeRefundModel.setRefundReason(refundReason); alipayTradeCloseRequest.setBizModel(alipayTradeRefundModel); AlipayTradeRefundResponse refundResponse= null; try { refundResponse = alipayClient.execute(alipayTradeCloseRequest); } catch (AlipayApiException e) { return ReturnUtils.returnVal(CommonConstants.appCode.UNKNOWNERROR.get(),refundResponse.getMsg()); }
     //退款的执行流程与支付不太一样,支付时成功之后,需要通知回调接口,而退款则不需要,只需判断响应参数 refundResponse.getFundChange().equals("Y") 判断是否发生了资金变化, equals("Y")表示资金发生了变化,退款成功 if (refundResponse.getFundChange().equals("Y")) { return ReturnUtils.returnVal(CommonConstants.appCode.SUCCESS.get(),refundResponse.getMsg()); }else { return ReturnUtils.returnVal(CommonConstants.appCode.UNKNOWNERROR.get(),refundResponse.getMsg()); }

 如文中存在错误,请联系WX指正,不胜感谢。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM