如何实现支付宝沙箱退款功能
既然做到了退款这步,说明支付功能已经搞定了。就直接从代码说了,不谈基础配置了。
支付宝沙箱退款api地址:https://docs.open.alipay.com/api_1/alipay.trade.refund
提示:我的代码只实现了简单的部分退款功能(同时为两件及两件以上商品支付可以只对其中一件商品进行退款操作)。
代码:
package com.yc.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 com.alipayConfig.AlipayConfig;
import com.yc.po.TradePO;
@WebServlet("/out.action")
public class AliPayOut extends BaseServlet {
/**
*
*/
private static final long serialVersionUID = 8640834714652684896L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获得初始化的AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id,
AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key,
AlipayConfig.sign_type);
AlipayTradeRefundRequest req = new AlipayTradeRefundRequest();
TradePO po = parserRequestToObject(request, TradePO.class);
String no = po.getTrade_no();
String mn = po.getRefund_amount();
// 订单支付时传入的商户订单号,不能和 trade_no同时为空
String trade_no = "4674334545";
// 需要退款的金额
String refund_amount = "199.00";
// 表示支持部分退款
String out_request_no = "HZ01RF001";
req.setBizContent("{\"trade_no\":\"" + trade_no + "\"," + "\"refund_amount\":\"" + refund_amount + "\","
+ "\"out_request_no\":\"" + out_request_no + "\"}");
AlipayTradeRefundResponse resp = null;
try {
resp = alipayClient.execute(req);
} catch (AlipayApiException e) {
e.printStackTrace();
}
if (resp.isSuccess()) {
int i = 1;
toPrintString(response, i);
} else {
System.out.println("调用失败");
}
}
}
调用以上代码即可完成部分退款功能。
分类:
支付宝退款
标签:
支付宝退款
, java实现支付宝退款功能
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了