java 支付宝退款_java 支付宝退款

package com.framework.loippi.plugins.aliapppay.reFund;

import com.alipay.api.response.AlipayTradeRefundResponse;

import com.framework.loippi.cache.ConfigCache;

import com.framework.loippi.plugins.aliapppay.reFund.entity.AliPayRefund;

import com.framework.loippi.plugins.aliapppay.reFund.entity.AlipaySubmit;

public class AlipayRefundUtil {

/**

* 支付宝退款

*

* @param aliPayRefund

* @return

*/

public static AlipayTradeRefundResponse toRefund(AliPayRefund aliPayRefund) {

//建立请求

AlipayTradeRefundResponse sHtmlText = AlipaySubmit.buildRequest(aliPayRefund.getTradeNo(), aliPayRefund.getRefundAmount(),

aliPayRefund.getRRefundReason(), ConfigCache.getConfig("alipay.user.appid"), ConfigCache.getConfig("alipay.user.privateKey"), ConfigCache.getConfig("alipay.user.alipayPublicKey"));

return sHtmlText;

}

}

-------------------------------------------------------------------

package com.framework.loippi.plugins.aliapppay.reFund.entity;

import com.alipay.api.AlipayApiException;

import com.alipay.api.AlipayClient;

import com.alipay.api.DefaultAlipayClient;

import com.alipay.api.request.AlipayTradeRefundRequest;

import com.alipay.api.response.AlipayTradeRefundResponse;

import java.math.BigDecimal;

import java.math.RoundingMode;

import java.text.SimpleDateFormat;

import java.util.Date;

/* *

*类名:AlipaySubmit

*功能:支付宝各接口请求提交类

*详细:构造支付宝各接口表单HTML文本,获取远程HTTP数据

*版本:3.3

*日期:2012-08-13

*说明:

*以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己网站的需要,按照技术文档编写,并非一定要使用该代码。

*该代码仅供学习和研究支付宝接口使用,只是提供一个参考。

*/

public class AlipaySubmit {

/**

* 支付宝提供给商户的服务接入网关URL(新)

*/

private static final String ALIPAY_GATEWAY_NEW = "https://mapi.alipay.com/gateway.do?";

/**

* 建立请求,以表单HTML形式构造(默认)

*

* @return 提交表单HTML文本

*/

public static AlipayTradeRefundResponse buildRequest(String outTradeNo, BigDecimal amount, String reason, String appId, String privateRsa, String publicRsa) {

AlipayClient alipayClient = new DefaultAlipayClient(ALIPAY_GATEWAY_NEW, appId, privateRsa, "json", "utf-8", publicRsa, "RSA2");

AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();

request.setBizContent("{" +

"\"out_trade_no\":\"" + outTradeNo + "\"," +

"\"out_request_no\":\"" +"TK"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + "\"," +

"\"refund_amount\":" + amount.setScale(2, RoundingMode.HALF_UP).toString() + "}");

//"\"refund_reason\":\"" + reason + "\"" + "}");

AlipayTradeRefundResponse response = null;

try {

response = alipayClient.execute(request);

} catch (AlipayApiException e) {

e.printStackTrace();

}

return response;

}

/**

* 建立错误的跳转请求,以表单HTML形式构造(默认)

*

* @param orderSn 订单号

* @param errorMsg 错误信息

* @return 提交表单HTML文本

*/

public static String errorRedirect(String orderSn, String errorMsg, String payResult) {

StringBuffer sbHtml = new StringBuffer();

sbHtml.append(""-//W3C//DTD HTML 4.01 Transitional//EN\">"

+ "

"

+ "

支付失败/title>");

//页面加载完后自动跳转

sbHtml.append("");

sbHtml.append("");

return sbHtml.toString();

}

}

--------------------------------------

package com.framework.loippi.plugins.aliapppay.reFund.entity;

import lombok.Data;

import lombok.ToString;

import java.io.Serializable;

import java.math.BigDecimal;

/**

* 支付宝退款所需实体

*

* @类名称:AliPayRefund

* @类描述:

* @修改备注:

*/

@Data

@ToString

public class AliPayRefund implements Serializable {

/**

* 交易号(如2015102821001004900005578936)

*/

private String tradeNo;

/**

* 退款金额

*/

private BigDecimal refundAmount;

/**

* 退款理由 “退款理由”长度不能大于256字节,“退款理由”中不能有“^”、“|”、“$”、“#”等影响detail_data格式的特殊字符;

*/

private String rRefundReason;

/**

* 退款当天日期 格式 2007-10-01 13:13:13

*/

private String refundDate;

/**

* 退款笔数 最大支持1000笔

*/

private Integer refundAmountNum;

/**

* 批次号 退款日期(8位)+流水号(3~24位)不可重复 如(201511130002)

*/

private String batchNumber;

/**

* 单笔数据集 单条数据

* 原付款支付宝交易号^退款总金额^退款理由

* 格式为:第一笔交易退款数据集#第二笔交易退款数据集#第三笔交易退款数据集…#第N笔交易退款数据集

* 2015102821001004900005578936^0.01^协商退款#2015101621001004650091502622^0.01^协商退款

*/

private String detaildata;

public void setDetaildata(String tradeNo, BigDecimal refundAmount, String rRefundReason) {

if ("".equals(rRefundReason)) {

rRefundReason = "协商退款";

}

this.detaildata = tradeNo + "^" + refundAmount + "^" + rRefundReason;

}

public String getDetaildata() {

return detaildata;

}

/**

* 退款成功后回调路径

*/

private String notifyurl;

/**

* 批次号

*/

private String batchNo;

// public static void main(String[] args) {

// String str="2010031906272929^80^SUCCESS$jax_chuanhang@alipay.com^2088101003147483^0.01^SUCCESS";

// System.out.println("hahh"+str.substring(0, str.indexOf("^")));

//

// }

public AliPayRefund() {

}

public AliPayRefund(String tradeNo, BigDecimal refundAmount, String rRefundReason) {

this.tradeNo = tradeNo;

this.refundAmount = refundAmount;

this.rRefundReason = rRefundReason;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值