SpringBoot之支付宝企业账户转账到个人账户【最新证书版】

1、pom.xml 引入支付宝SDK。

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

2、pom.xml 不编译指定类型的资源文件 crt

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <nonFilteredFileExtensions>
                        <!-- 不需要编译的资源文件 -->
                        <nonFilteredFileExtension>p12</nonFilteredFileExtension>
                        <nonFilteredFileExtension>crt</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>

3、拷贝证书文件到 resources 资源目录。

 4、TransferTest 测试类 Demo 源码:

import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class TransferTest {
    @Test
    public void aliPayTransferTest() {
        String serverUrl = "https://openapi.alipay.com/gateway.do";
        String appId = "2023042516001234";
        String appPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDIMAzqmbgenxznt5LgmKkZzn+Wgt37W5uqZ9TUwCGu8BlAi9dW8BA1rz6aZBP73f6BnGfXxvOWOOeaCaB7PphgQiJE3MG0BY8GSMU5wT7djNgAp0fBCaEy7fKP+h5V7uvBEzQy9YBz3Q9ToSmI4lYP9kpweE42e9W4kp+Y05XhuymTy/xw8zausauroLh4y9mLDSujpHObSJV1RX46MF/bXQcE/jaPVIwN1LRk+jcSOPwFxwglvPzWa5DpPdcoCIsFLc2ThBHrEoUPUWX5xe3d8Nce0Rs15JACylfyaL3YCXi1ew0UgLbB6iYzru3D48zudV4WzgN7AZCA83zedeZNAgMBAAECggEAPmYb4JSBu6nFDMU/1xo+u3iOdI/eOZdYckljId2xoiHc/S2ZtdOmedViIiXHxN5xklz6UVwGWXDrYCxYBZKBVJ/IpsZY6pBBAKh2MYZ23gAk5C9AQn+J66IX1aEVC5wpiElAIBI+M99YA61ckPpb8SXIFj6pwnnfKGUrsithsLZlInTBxm2V+pORueOV+u7oO3YDDb+gR7LMYV7VpODfen5sQU8jtjmvLdlOJfoJEuu2vwF0gqDWROeQNorVn+9R02zdyTFdQlHQT0heGj8GT5TtkSPVRSim1lyryQ8JGIozmknoZue98i+TuivKN71WjA53muhdBPLEPHYDCX7CUQKBgQDigPO9X3jxyz3SA5ejnfroj/Lyj3muqvwGX6mwt30XXpIHLY/wA07ON79ivyO7rT0IJKaI+FTyRsshftYCFEi/OSW4jkvpuGxnpwAWNehrZfLYIFhfmdvsdLFNxMy/HjnYzwGUAW3XKy6bZS1jZubIME/5V4dExB/Nb/uhN+tHEwKBgQDiQcpO3lsVt3i1cjuC2kDvpduh8rLW5Ifbxusqpo9WYXMkVmkmWSAw7zDjk8opn/lgEfLJajGkVGdGr5faJ8nMqjZIxqvR7snFxXIT1Iskv4iIkUbgSk1dCdFuXGSTz0Y5VW/3FZQKbGf0wPpKzshoBwS2/SJA1A8DFqePdpjpHwKBgDckc7Jv0s7yzusZCsq/hD0oBlp9CX+3isG2emZWVXLiCCUNN5SUCZR0x/gvVnCzXT9lRNHluzB8gal26nz5GTjMnd1PbzXIO0QEySWfHCVBXZy2Sy2DFKJ9SkkHl10T67tXsiepLWeL0L3uJN2lSJwF/wJSB9F6+c8W6yi1p2bXAoGBALczACV2I5hk84cvlIIySIwC5uCtjCM17c+FtFrXfI4736hXk1JqrgcRVaufufyUPK6OOeDebI2bjfgNK86Hkv12APhSbUNRruzFH8Zwva2mrF2wDAyF/ThNP9e1VfbcyQaZaExPm4wJFO935fH2lwysSiQEuNx3GCSvDkO6iruPAoGAPjFOxVSR7zreBb88IshYFwzOIf2dofmJntNKskb8PVsAe5AVE9YU4mW6MX7KMr0vmpgBSdD7AT/3Loq/V6oQbBcHeI/x6c2ojuk9AFu31vAIDNTb86BzN+C8IeW19ibEydkfc3xYUdibYTJiBvg9GcRFq6bPj+W2XFqrkmW8PKk=";
        String format = "json";
        String charset = "UTF-8";
        String signType = "RSA2";
        String appCertPath = "src/main/resources/appCertPublicKey.crt";
        String alipayCertPath = "src/main/resources/alipayCertPublicKey_RSA2.crt";
        String alipayRootCertPath = "src/main/resources/alipayRootCert.crt";
        CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
        certAlipayRequest.setServerUrl(serverUrl);
        //gateway:支付宝网关(固定)https://openapi.alipay.com/gateway.do
        certAlipayRequest.setAppId(appId);
        //APPID 即创建应用后生成,详情见创建应用并获取 APPID
        certAlipayRequest.setPrivateKey(appPrivateKey);
        //开发者应用私钥,由开发者自己生成
        certAlipayRequest.setFormat(format);
        //参数返回格式,只支持 json 格式
        certAlipayRequest.setCharset(charset);
        //请求和签名使用的字符编码格式,支持 GBK和 UTF-8
        certAlipayRequest.setSignType(signType);
        //商户生成签名字符串所使用的签名算法类型,目前支持 RSA2 和 RSA,推荐商家使用 RSA2。
        certAlipayRequest.setCertPath(appCertPath);
        //应用公钥证书路径(app_cert_path 文件绝对路径)
        certAlipayRequest.setAlipayPublicCertPath(alipayCertPath);
        //支付宝公钥证书文件路径(alipay_cert_path 文件绝对路径)
        certAlipayRequest.setRootCertPath(alipayRootCertPath);
        //支付宝CA根证书文件路径(alipay_root_cert_path 文件绝对路径)
        AlipayClient alipayClient = null;
        try {
            alipayClient = new DefaultAlipayClient(certAlipayRequest);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
        request.setBizContent("{" +
                "\"out_biz_no\":\"123456789\"," +
                "\"trans_amount\":1.00," +
                "\"product_code\":\"TRANS_ACCOUNT_NO_PWD\"," +
                "\"biz_scene\":\"DIRECT_TRANSFER\"," +
                "\"order_title\":\"支付宝单笔转账1元\"," +
                "\"payee_info\":{" +
                "\"identity\":\"18888888888\"," +
                "\"identity_type\":\"ALIPAY_LOGON_ID\"," +
                "\"name\":\"张三\"," +
                "}," +
                "\"remark\":\"支付宝单笔转账1元\"," +
                "\"business_params\":\"{\\\"payer_show_name\\\":\\\"中国国防科技有限公司\\\"}\"" +
                "}");
        AlipayFundTransUniTransferResponse response = null;
        try {
            response = alipayClient.certificateExecute(request);
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        if (response.isSuccess()) {
            System.out.println("调用成功");
        } else {
            System.out.println("调用失败");
        }
    }
}

注意:应用公钥、支付宝公钥、支付宝CA根证书的路径问题。
正式开发:自行配置参数信息到Nacos等配置中心。

参考:小程序文档 - 支付宝文档中心

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值