栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 支付宝退款、提现(单笔转账到支付宝账户接口)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 支付宝退款、提现(单笔转账到支付宝账户接口)

支付宝退款

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayFundTransOrderQueryModel;
import com.alipay.api.domain.AlipayFundTransToaccountTransferModel;
import com.alipay.api.domain.AlipayTradeFastpayRefundQueryModel;
import com.alipay.api.domain.AlipayTradeRefundModel;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.*;
import com.alipay.api.response.*;

import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;


@Slf4j
@RestController
public class AlipayController {

    private Logger logger = LoggerFactory.getLogger(AlipayController.class);

    
    @GetMapping("/alipay/refund")
    public void refund(@Param("order_code") String order_code, @Param("refund_reason") String refund_reason) throws AlipayApiException {
        //获得初始化的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 alipayRequest = new AlipayTradeRefundRequest();

        AlipayTradeRefundModel model=new AlipayTradeRefundModel();

        //根据订单编码查询定制订单信息
        OrderTradeDTO orderTradeDTO = orderMapper.getCustomizationTradeTotalAmount(order_code);

        // 商户订单号
        model.setOutTradeNo(order_code);
        // 退款金额
        model.setRefundAmount(orderTradeDTO.getTotalAmount().toString());
        // 退款原因
        model.setRefundReason(refund_reason);
        // 退款订单号(同一个订单可以分多次部分退款,当分多次时必传)
        //model.setOutRequestNo(UUID.randomUUID().toString());
        alipayRequest.setBizModel(model);

        AlipayTradeRefundResponse alipayResponse = alipayClient.execute(alipayRequest);

        //获取支付宝交易状态
        String code = alipayResponse.getCode();
        String msg = alipayResponse.getMsg();
        Result.success().setData(orderDTO);
    }

    
    @GetMapping("/alipay/refundQuery")
    public Result refundQuery(String order_code, String refundOrderNo) throws AlipayApiException {
        //获得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);

        //设置请求参数
        AlipayTradeFastpayRefundQueryRequest alipayRequest = new AlipayTradeFastpayRefundQueryRequest();

        AlipayTradeFastpayRefundQueryModel model=new AlipayTradeFastpayRefundQueryModel();

        //请二选一设置
        //商户订单号,商户网站订单系统中唯一订单号
        model.setOutTradeNo(order_code);
        //支付宝交易号
        //model.setTradeNo(tradeNo);

        //请求退款接口时,传入的退款请求号,如果在退款请求时未传入,则该值为创建交易时的外部交易号,必填
        if ( refundOrderNo == null){
            model.setOutRequestNo(order_code);
        }else {
            model.setOutRequestNo(refundOrderNo);
        }

        alipayRequest.setBizModel(model);

        AlipayTradeFastpayRefundQueryResponse alipayResponse = alipayClient.execute(alipayRequest);

        //获取支付宝交易状态
        String subCode = alipayResponse.getSubCode();
        String subMsg = alipayResponse.getSubMsg();
        return Result.success().setData(null);
    }

}

提现:

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayFundTransOrderQueryModel;
import com.alipay.api.domain.AlipayFundTransToaccountTransferModel;
import com.alipay.api.domain.AlipayTradeFastpayRefundQueryModel;
import com.alipay.api.domain.AlipayTradeRefundModel;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.*;
import com.alipay.api.response.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;


@Slf4j
@RestController
public class AlipayController {

    private Logger logger = LoggerFactory.getLogger(AlipayController.class);

    
    @PostMapping("/alipay/transfer/accounts")
    public Result transfer(TransactionDTO transactionDTO) throws AlipayApiException {
        //获得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);

        //设置请求参数
        AlipayFundTransToaccountTransferRequest alipayRequest = new AlipayFundTransToaccountTransferRequest();

        AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();

        // 商户订单号
        model.setOutBizNo(transactionDTO.getOrderCode());
        // 转账金额
        model.setAmount(transactionDTO.getRemitAmount().toString());
        //收款方账户类型
        model.setPayeeType("ALIPAY_LOGONID");
        //收款方账户
        model.setPayeeAccount(transactionDTO.getTransferAcc());

        //以下为可选
        //付款方姓名,如果该字段不传,则默认显示付款方的支付宝认证姓名或单位名称
        model.setPayerShowName("");
        //收款方真实姓名,如果本参数不为空,则会校验该账户在支付宝登记的实名是否与收款方真实姓名一致
        model.setPayeeRealName("");
        // 转账备注
        model.setRemark("作者支付宝提现");
        alipayRequest.setBizModel(model);

        AlipayFundTransToaccountTransferResponse alipayResponse = alipayClient.execute(alipayRequest);

        OrderDTO orderDTO = new OrderDTO();
        if ( alipayResponse.isSuccess()){
            //获取支付宝交易状态
            String code = alipayResponse.getCode();
            String msg = alipayResponse.getMsg();
        }
        return Result.success().setData(orderDTO);
    }

    
    @GetMapping("/alipay/transferQuery")
    public Result transferQuery(String order_code) throws AlipayApiException {
        //获得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);

        //设置请求参数
        AlipayFundTransOrderQueryRequest alipayRequest = new AlipayFundTransOrderQueryRequest();

        AlipayFundTransOrderQueryModel model=new AlipayFundTransOrderQueryModel();
        model.setOutBizNo(order_code);
        alipayRequest.setBizModel(model);

        AlipayFundTransOrderQueryResponse alipayResponse = alipayClient.execute(alipayRequest);
        //获取支付宝交易状态
		String subCode = alipayResponse.getSubCode();
		String subMsg = alipayResponse.getSubMsg();

        return Result.success().setData(alipayResponse.getBody());
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571320.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号