支付宝退款demo

首先支付宝退款需要导入一个支付宝的jar包(支付和退款都依赖这个包,用maven下载即可)

<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>4.7.12.ALL</version>
</dependency>

那第二步就是需要定义下需要的常量(这里需要公司或个人向支付宝申请的支付退款的商家号)

public class AliPayConfig {
public static String APP_ID="替换为自己的";
public static String APP_PRIVATE_KEY = "替换为自己的";// 私钥
private static String requestUrl = "https://openapi.alipay.com/gateway.do";//支付宝请求退款的网关地址
/**
* 该公钥对应开放平台密钥的支付宝公钥,*/
public static String ALIPAY_PUBLIC_KEY="替换为自己的";//支付宝公钥
public static String CHARSET = "utf-8";//字符编码 public static String SIGN_TYPE = "RSA";//签名方式 }

第三就是主体代码逻辑(我这里偷懒就就写在一起了没用常量),可写主方法测试下(前提你已经付过款并且拿到了商户号或订单号)

 public boolean refund22(String orderId, String tradeNo, BigDecimal refundAmount ) {
        //实例化客户端
        AlipayClient alipayClient = new DefaultAlipayClient("网关 https://openapi.alipay.com/gateway.do",
                "appId",
                "私钥",
                "数据类型 json",
          "utf-8", "公钥", "RSA2"); AlipayTradeRefundRequest request = new AlipayTradeRefundRequest(); Map params = new HashMap(); if (orderId!=null&&!"".equals(orderId))params.put("out_trade_no",orderId);//商家订单号 if (tradeNo!=null&&!"".equals(tradeNo))params.put("trade_no",tradeNo);//支付宝交易号(一般必选) //请求退款的金额 params.put("refund_amount",refundAmount); //该参数支持部分退款(如果不加则进行全额退款,可用随机数去生成) params.put("out_request_no","BZ35581R88001"); //可加参数 String paramsJsonStr = JSONObject.toJSONString(params); request.setBizContent(paramsJsonStr); try { AlipayTradeRefundResponse response = alipayClient.execute(request); return response.isSuccess(); }catch (Exception e){ String json = e.getMessage(); json = json.substring(json.indexOf("{"),json.indexOf("}")+1); Map retMap = JSONObject.parseObject(json); return "10000".equals(retMap.get("code").toString()); } }

 

posted @ 2020-05-05 17:24  马革皮  阅读(537)  评论(0编辑  收藏  举报