支付宝付款(提现)

api:

https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer

支付宝付款工具类:

package com.st.project.common;

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayFundTransToaccountTransferRequest;
import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;

import java.util.HashMap;
import java.util.Map;

/**
 * 支付宝付款
 */
public class AlipayUtil {

//    @Value("${alipay.url}")
//    private String serverUrl;  //HTTPS请求地址
//    @Value("${alipay.app_id}")
//    private String appId;      //支付宝分配给开发者的应用ID
//    @Value("${alipay.private_key}")
//    private String privateKey; //应用私钥
//    @Value("${alipay.alipay_public_key}")
//    private String alipayPublicKey; //支付宝公钥

    /**
     * 单笔转账到支付宝账户
     * @param out_biz_no 商户转账唯一订单号
     * @param payee_type 收款方账户类型
     * @param payee_account 收款方账户
     * @param amount 转账金额,单位:元
     * @param payer_show_name 付款方姓名
     * @param payee_real_name 收款方真实姓名
     * @param remark 转账备注
     * @return
     * @throws AlipayApiException
     */
    public  Map<String,String> balance_out_alipay(String out_biz_no,String payee_type,String payee_account,
                                                  String amount,String payer_show_name,String payee_real_name,String remark,Environment env) throws AlipayApiException {
        Map<String,String> resultMap=new HashMap<String,String>();
        //SDK调用前需要进行初始化
        AlipayClient alipayClient = new DefaultAlipayClient(
                env.getProperty("alipay.url"),
                env.getProperty("alipay.app_id"),
                env.getProperty("alipay.private_key"),
                "json",
                "utf-8",
                env.getProperty("alipay.alipay_public_key"),
                "RSA2");
        //设置请求参数
        Map<String,String> alipayMap=new HashMap<>();
        alipayMap.put("out_biz_no",out_biz_no);
        alipayMap.put("payee_type",payee_type);
        alipayMap.put("payee_account",payee_account);
        alipayMap.put("amount",amount);
        alipayMap.put("payer_show_name",payer_show_name);
        alipayMap.put("payee_real_name",payee_real_name);
        alipayMap.put("remark",remark);
        String json = new Gson().toJson(alipayMap);
        AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
        request.setBizContent(json);
        //发起转账到支付宝请求
        AlipayFundTransToaccountTransferResponse response =null;
        try {
            response=alipayClient.execute(request);
            if(response.isSuccess()){
                resultMap.put("success", "true");
                resultMap.put("order_id", response.getOrderId());//支付宝转账单据号,成功一定返回,失败可能不返回也可能返回。
                resultMap.put("msg", "转账成功");
            } else {
                resultMap.put("success", "false");
                resultMap.put("order_id", response.getOrderId());//支付宝转账单据号,成功一定返回,失败可能不返回也可能返回。
                resultMap.put("msg", response.getSubCode()+"("+response.getSubMsg()+")");
            }
        } catch (AlipayApiException e) {
            resultMap.put("success", "false");
            resultMap.put("msg", "转账失败!");
            e.printStackTrace();
        }
        return resultMap;
    }

}

设置参数实现付款:

            //支付宝
            AlipayUtil alipayUtil = new AlipayUtil();
            String out_biz_no = getUUID();         //商户转账唯一订单号
            String payee_type = "ALIPAY_USERID";   //收款方账户类型
            String payee_account = customerEntity.getOpenId();     //收款方账户
            String amount = (Double.parseDouble(blance) + Double.parseDouble(blance_distribution)) + "";  //转账金额,单位:元
            String payer_show_name = "尚汤";       //付款方姓名
            String payee_real_name = "";          //收款方真实姓名
            String remark = "申请提现";            //转账备注
            Map<String, String> alipayMap = alipayUtil.balance_out_alipay(out_biz_no, payee_type, payee_account, amount, payer_show_name, payee_real_name, remark, env);
            if ("true".equals(alipayMap.get("success"))) {
                orderRefunds.setCode(out_biz_no);
                orderRefunds.setTradeNo(alipayMap.get("order_id"));
                orderRefunds.setStatus(1);
                orderRefundsRepository.save(orderRefunds);
                //用户减去相应的余额或分销余额
                customerEntity.setBalance(customerEntity.getBalance().subtract(BigDecimal.valueOf(Double.parseDouble(blance))));
                customerEntity.setBalanceDistribut(customerEntity.getBalanceDistribut().subtract(BigDecimal.valueOf(Double.parseDouble(blance_distribution))));
                customerRepository.saveAndFlush(customerEntity);

                map.put("success", "true");
                map.put("msg", "支付宝提现成功");
            } else {
                orderRefunds.setCode(out_biz_no);
                orderRefunds.setTradeNo(alipayMap.get("order_id"));
                orderRefunds.setStatus(2);
                orderRefundsRepository.save(orderRefunds);

                map.put("success", "false");
                map.put("msg", "支付宝提现失败" + alipayMap.get("msg"));
            }

猜你喜欢

转载自blog.csdn.net/weixin_39936341/article/details/84135911