Commit 1a708810 authored by jiaorz's avatar jiaorz

支付宝支付转为预授权

parent 42e71f4e
...@@ -4,10 +4,6 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -4,10 +4,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
/** /**
...@@ -69,5 +65,8 @@ public class OrderPayVo{ ...@@ -69,5 +65,8 @@ public class OrderPayVo{
private String tradeNo; private String tradeNo;
//支付接口返回的流水号
@Column(name = "serial_number")
@ApiModelProperty(value = "支付接口返回的流水号")
private String serialNumber;
} }
...@@ -354,7 +354,7 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> { ...@@ -354,7 +354,7 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> {
model.setAuthNo(orderPayVo.getTradeNo()); // 支付宝资金授权订单号,在授权冻结成功时返回需要入库保存 model.setAuthNo(orderPayVo.getTradeNo()); // 支付宝资金授权订单号,在授权冻结成功时返回需要入库保存
model.setOutRequestNo(orderPayVo.getOrderNo());//同一商户每次不同的资金操作请求,商户请求流水号不能重复,且与冻结流水号不同 model.setOutRequestNo(orderPayVo.getOrderNo());//同一商户每次不同的资金操作请求,商户请求流水号不能重复,且与冻结流水号不同
model.setAmount(realAmount.toString()); // 本次操作解冻的金额,单位为:元(人民币),精确到小数点后两位 model.setAmount(realAmount.toString()); // 本次操作解冻的金额,单位为:元(人民币),精确到小数点后两位
model.setRemark("预授权解冻"); // 商户对本次解冻操作的附言描述,长度不超过100个字母或50个汉字 model.setRemark(orderPayVo.getBody()); // 商户对本次解冻操作的附言描述,长度不超过100个字母或50个汉字
//选填字段,信用授权订单,针对信用全免订单,传入该值完结信用订单,形成芝麻履约记录 //选填字段,信用授权订单,针对信用全免订单,传入该值完结信用订单,形成芝麻履约记录
// model.setExtraParam("{\"unfreezeBizInfo\":\"{\\\"bizComplete\\\":\\\"true\\\"}\"}"); // model.setExtraParam("{\"unfreezeBizInfo\":\"{\\\"bizComplete\\\":\\\"true\\\"}\"}");
request.setBizModel(model); request.setBizModel(model);
...@@ -376,11 +376,11 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> { ...@@ -376,11 +376,11 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> {
AlipayClient alipayClient = getAlipayClient(); AlipayClient alipayClient = getAlipayClient();
AlipayFundAuthOperationCancelRequest request = new AlipayFundAuthOperationCancelRequest(); AlipayFundAuthOperationCancelRequest request = new AlipayFundAuthOperationCancelRequest();
AlipayFundAuthOperationCancelModel model = new AlipayFundAuthOperationCancelModel(); AlipayFundAuthOperationCancelModel model = new AlipayFundAuthOperationCancelModel();
//model.setAuthNo("2017120110002001390206804295"); // 支付宝资金授权订单号,在授权冻结成功时返回参数中获得 model.setAuthNo(orderPayVo.getSerialNumber()); // 支付宝资金授权订单号,在授权冻结成功时返回参数中获得
model.setOutOrderNo(orderPayVo.getOrderNo()); //商户的授权资金订单号,与支付宝的授权资金订单号不能同时为空 model.setOutOrderNo(orderPayVo.getOrderNo()); //商户的授权资金订单号,与支付宝的授权资金订单号不能同时为空
//model.setOperationId("20171201317348823902"); //支付宝的授权资金操作流水号 //model.setOperationId("20171201317348823902"); //支付宝的授权资金操作流水号
model.setOutRequestNo(orderPayVo.getTradeNo());//与支付宝的授权资金操作流水号不能同时为空,与冻结流水号相同 model.setOutRequestNo(orderPayVo.getTradeNo());//与支付宝的授权资金操作流水号不能同时为空,与冻结流水号相同
model.setRemark("预授权撤销"); // 商户对本次撤销操作的附言描述,长度不超过100个字母或50个汉字 model.setRemark(orderPayVo.getBody()); // 商户对本次撤销操作的附言描述,长度不超过100个字母或50个汉字
request.setBizModel(model); request.setBizModel(model);
request.setNotifyUrl(notifyUrl);//异步通知地址,必填,该接口只通过该参数进行异步通知 request.setNotifyUrl(notifyUrl);//异步通知地址,必填,该接口只通过该参数进行异步通知
...@@ -424,27 +424,6 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> { ...@@ -424,27 +424,6 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> {
} }
} }
//退款
public void testTradeRefund(OrderPayVo orderPayVo, String notifyUrl) throws Exception {
AlipayClient alipayClient = getAlipayClient();
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
BigDecimal realAmount = new BigDecimal(orderPayVo.getAmount().toString()).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_UP);
AlipayTradeRefundModel model = new AlipayTradeRefundModel();
model.setOutTradeNo(orderPayVo.getTradeNo()); //与预授权转支付商户订单号相同,代表对该笔交易退款
model.setRefundAmount(realAmount.toString());
model.setRefundReason(orderPayVo.getBody());
model.setOutRequestNo(orderPayVo.getOrderNo());//标识一次退款请求,同一笔交易多次退款需要保证唯一,如部分退款则此参数必传。
request.setBizModel(model);
AlipayTradeRefundResponse response = alipayClient.execute(request);
log.info("response: {}" + response.getBody());
if (response.isSuccess()) {
System.out.println("调用成功");
log.info("response: {}" + response.getBody());
} else {
System.out.println("调用失败");
}
}
/** /**
* APP支付退款 * APP支付退款
* *
...@@ -486,13 +465,14 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> { ...@@ -486,13 +465,14 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> {
public static void main(String[] args) throws AlipayApiException { public static void main(String[] args) throws AlipayApiException {
OrderPayBiz orderPayBiz = new OrderPayBiz(); OrderPayBiz orderPayBiz = new OrderPayBiz();
OrderPayVo orderPayVo = new OrderPayVo(); OrderPayVo orderPayVo = new OrderPayVo();
orderPayVo.setOrderNo("20191024142517000001"); orderPayVo.setOrderNo("20191024153859000003");
orderPayVo.setTradeNo("2019102410002001530572454194"); orderPayVo.setTradeNo("2019102410002001530572359246");
orderPayVo.setAmount(2); orderPayVo.setSerialNumber("2019102410002001530572351411");
orderPayVo.setAmount(3);
orderPayVo.setBody("扣除租车订单费用"); orderPayVo.setBody("扣除租车订单费用");
orderPayVo.setSubject("租车订单交易费用"); orderPayVo.setSubject("租车订单交易费用");
// orderPayBiz.fundAuthOrderUnFreeze(orderPayVo, ""); orderPayBiz.fundAuthOrderUnFreeze(orderPayVo, "");
orderPayBiz.alipayOrderRefund("20191024142517000001","2019102422001421530513284677", 2, "xxxx", ""); //orderPayBiz.alipayOrderRefund("20191024153859000003","2019102422001421530513773694", 2, "xxxx", "");
//orderPayBiz.tradePay(orderPayVo, ""); //orderPayBiz.tradePay(orderPayVo, "");
//orderPayBiz.fundAuthCancel(orderPayVo, ""); //orderPayBiz.fundAuthCancel(orderPayVo, "");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment