支付宝单笔转账到支付宝账户(用于分成或者退款)

支付宝官方文档

转账到支付宝用户快速接入
单笔转账到支付宝账户接入助手

直接上代码

SDK

<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk -->
<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-easysdk</artifactId>
    <version>2.2.0</version>
</dependency>

AlipayUtils

package cn.country.cunyue.app.application.utils;

import com.alibaba.fastjson.JSON;
import com.alipay.api.AlipayApiException;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
import com.alipay.api.response.AlipayFundTransUniTransferResponse;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

/**
 * 支付宝工具类
 *
 * @author: joker
 * @date: 2021-3-25 14:28:40
 */
public class AlipayUtils {

    // APPID 即创建应用后生成,详情见创建应用并获取 APPID
    private static final String APP_ID = "appid";
    // 商户自己保留的私钥(由支付宝开放平台开发助手生成)
    private static final String APP_PRIVATE_KEY = "商户自己保留的私钥(由支付宝开放平台开发助手生成)";
    // 请求和签名使用的字符编码格式,支持 GBK和 UTF-8
    private static final String CHARSET = "utf-8";
    // 应用公钥证书路径(app_cert_path 文件绝对路径)从放平台-应用信息-接口加签方式-应用公钥信息
    private static final String APP_CERT_PATH = "从放平台-应用信息-接口加签方式-应用公钥信息";
    // 从开放平台-应用信息-接口加签方式-支付宝公钥证书
    private static final String ALIPAY_CERT_PATH = "从开放平台-应用信息-接口加签方式-支付宝公钥证书";
    // 从开放平台-应用信息-接口加签方式-支付宝根证书
    private static final String ALIPAY_ROOT_CERT_PATH = "从开放平台-应用信息-接口加签方式-支付宝根证书";

    /**
     * 单笔转账至支付宝账户
     *
     * @param outBizNo    商户端的唯一订单号,对于同一笔转账请求,商户需保证该订单号唯一。
     * @param transAmount 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
     * @param orderTitle  转账业务的标题,用于在支付宝用户的账单里显示。
     * @param identity    参与方的标识ID,比如支付宝用户UID。
     * @param name        参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。当identity_type=ALIPAY_LOGON_ID时,本字段必填。
     * @param remark      业务备注
     */
    public static Map<String, Object> callTransfer(String outBizNo, BigDecimal transAmount, String orderTitle, String identity, String name, String remark) throws AlipayApiException {
        Map<String, Object> map = new HashMap<>();
        CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
        // gateway:支付宝网关(固定)https://openapi.alipay.com/gateway.do
        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
        certAlipayRequest.setAppId(APP_ID);
        certAlipayRequest.setPrivateKey(APP_PRIVATE_KEY);
        // 参数返回格式,只支持 json 格式
        certAlipayRequest.setFormat("json");
        certAlipayRequest.setCharset(CHARSET);
        // 商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2。
        certAlipayRequest.setSignType("RSA2");
        certAlipayRequest.setCertPath(APP_CERT_PATH);
        certAlipayRequest.setAlipayPublicCertPath(ALIPAY_CERT_PATH);
        certAlipayRequest.setRootCertPath(ALIPAY_ROOT_CERT_PATH);

        //单笔转账
        DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);

        //实例化客户端
        AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
        Map<String, Object> transfer = new HashMap<>();
        transfer.put("out_biz_no", outBizNo);
        transfer.put("trans_amount", transAmount);
        // 销售产品码,单笔无密转账固定为TRANS_ACCOUNT_NO_PWD
        transfer.put("product_code", "TRANS_ACCOUNT_NO_PWD");
        // 业务场景,单笔无密转账固定为DIRECT_TRANSFER
        transfer.put("biz_scene", "DIRECT_TRANSFER");
        transfer.put("order_title", orderTitle);
        // 收款方信息
        Map<String, Object> payeeInfo = new HashMap<>();
        payeeInfo.put("identity", identity);
        // 参与方的标识类型,目前支持如下枚举:1、ALIPAY_USER_ID 支付宝的会员ID;2、ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式
        payeeInfo.put("identity_type", "ALIPAY_LOGON_ID");
        payeeInfo.put("name", name);
        transfer.put("payee_info", payeeInfo);
        transfer.put("remark", remark);
        String string = JSON.toJSONString(transfer);
        request.setBizContent(string);
        AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);

        if (response.isSuccess()) {
            if ("10000 ".equals(response.getCode())) {
                map.put("code", 10000);
                map.put("msg", "提现成功!");
                return map;
            } else if ("40004 ".equals(response.getCode()) && ("SYSTEM_ERROR".equals(response.getSubCode()) || "UNKNOWN_ERROR".equals(response.getSubCode()) || "unknown-sub-code".equals(response.getSubCode()))) {
                map.put("code", 40004);
                map.put("msg", "提现失败!");
                return map;
            } else if (!"10000 ".equals(response.getCode()) && "ORDER_NOT_EXIST".equals(response.getSubCode())) {
                map.put("code", 40004);
                map.put("msg", "提现失败!");
                return map;
            } else {
                map.put("code", 20000);
                map.put("msg", "系统繁忙!");
                return map;
            }
        } else {
            map.put("code", 500);
            map.put("msg", "调用失败!");
            return map;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Java支付宝转账到银行卡,需要使用支付宝提供的转账接口,具体操作步骤如下: 1. 注册支付宝开发者账号,并创建应用获取应用的 appId、私钥和公钥; 2. 引入支付宝Java SDK; 3. 初始化 AlipayClient 对象,设置请求参数; 4. 调用 AlipayFundTransToaccountTransferRequest 请求对象的 setBizContent() 方法设置转账的参数,包括转账的金额、收款人账号和姓名等信息; 5. 调用 AlipayClient 的 execute() 方法发起请求,获取响应结果。 以下是一个示例代码: ``` 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; public class AlipayTransferDemo { // 应用的 appId private static final String APP_ID = "your_app_id"; // 商户私钥 private static final String PRIVATE_KEY = "your_private_key"; // 支付宝公钥 private static final String ALIPAY_PUBLIC_KEY = "alipay_public_key"; // 支付宝网关 private static final String GATEWAY_URL = "https://openapi.alipay.com/gateway.do"; public static void main(String[] args) { // 初始化 AlipayClient AlipayClient client = new DefaultAlipayClient(GATEWAY_URL, APP_ID, PRIVATE_KEY, "json", "utf-8", ALIPAY_PUBLIC_KEY, "RSA2"); // 创建转账请求对象 AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest(); // 设置转账参数 request.setBizContent("{\"out_biz_no\":\"201806300001\",\"payee_type\":\"ALIPAY_LOGONID\",\"payee_account\":\"alipay_user_id\",\"amount\":\"1.00\",\"payer_show_name\":\"示例名称\",\"payee_real_name\":\"示例姓名\",\"remark\":\"转账备注\"}"); try { // 发起转账请求 AlipayFundTransToaccountTransferResponse response = client.execute(request); if (response.isSuccess()) { System.out.println("转账成功!"); } else { System.out.println("转账失败,错误码:" + response.getCode() + ",错误信息:" + response.getMsg()); } } catch (AlipayApiException e) { e.printStackTrace(); } } } ``` 需要注意的是,转账到银行卡需要在支付宝后台进行配置,开通转账到银行卡的功能。开通后,需要使用银行卡转账的接口进行转账操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值