对接支付宝单笔转账到银行卡来实现资金提现功能
        【摘要】 使用支付宝提供的单笔转账到银行卡账户接入很灵活,可应用于多行业平台内用户分佣等场景,提现到指定收款人的银行卡。可以和自身业务系统直接集成实现转账功能,无需频繁登录支付宝商家后台转账。
    
    
    
    使用场景
方便快捷
功能实现
@Bean
public DefaultAlipayClient aliPayClient() throws AlipayApiException {
    CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
    certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
    certAlipayRequest.setAppId("支付宝应用id");
    certAlipayRequest.setPrivateKey("支付宝应用私钥路径");
    certAlipayRequest.setFormat("json");
    certAlipayRequest.setCharset("UTF-8");
    certAlipayRequest.setSignType("RSA2");
    certAlipayRequest.setCertPath("支付宝应用公钥路径");
    certAlipayRequest.setAlipayPublicCertPath("支付宝公钥路径");
    certAlipayRequest.setRootCertPath("支付宝根证书路径");
    return new DefaultAlipayClient(certAlipayRequest);
}
 调用alipay.fund.trans.uni.transfer(单笔转账接口),实现转账功能。
public AjaxResult uniTransfer(AlipayFundTransUniTransferModel model) {
    try {
        AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
        model.setOutBizNo("商家侧唯一订单号");
        model.setTransAmount("1");
        model.setProductCode("TRANS_BANKCARD_NO_PWD");
        model.setBizScene("DIRECT_TRANSFER");
        model.setOrderTitle("转账到银行卡账户");
        Participant payeeInfo = new Participant();
        payeeInfo.setIdentityType("BANKCARD_ACCOUNT");
        payeeInfo.setIdentity("收款方银行账户名称");
        payeeInfo.setName("收款方银行账户名称");
        BankcardExtInfo bankcardExtInfo = new BankcardExtInfo();
        bankcardExtInfo.setInstName("机构名称");
        bankcardExtInfo.setAccountType("1");
        bankcardExtInfo.setInstProvince("银行所在省份");
        bankcardExtInfo.setInstCity("收款银行所在市");
        bankcardExtInfo.setInstBranchName("收款银行所属支行");
        bankcardExtInfo.setBankCode("银行支行联行号");
        payeeInfo.setBankcardExtInfo(bankcardExtInfo);
        model.setPayeeInfo(payeeInfo);
        model.setRemark("转账到银行卡账户");
        Map<String, String> params = new HashMap<>(2);
        params.put("payer_show_name", "转账到银行卡账户");
        model.setBusinessParams(JSON.toJSONString(params));
        request.setBizModel(model);
        AlipayFundTransUniTransferResponse response = aliPayClient.certificateExecute(request);
        logger.info("支付宝 单笔转账到银行卡账户接口:{}", response.getBody());
        int code = Integer.valueOf(response.getCode());
        if(response.isSuccess()){
            logger.info("支付宝 单笔转账到银行卡账户接口 调用成功 code=10000");
            UniTransferResult result = new UniTransferResult();
            result.setOutBizNo(response.getOutBizNo())
                    .setOrderId(response.getOrderId())
                    .setPayFundOrderId(response.getPayFundOrderId())
                    .setStatus(response.getStatus())
                    .setTransDate(response.getTransDate());
            return AjaxResult.success(code, result);
        } else {
            logger.info("支付宝 单笔转账到银行卡账户接口 调用失败");
            return AjaxResult.error(HttpStatus.ERROR_MSG, response.getSubMsg());
        }
    } catch (AlipayApiException e) {
        e.printStackTrace();
        logger.error("支付宝 单笔转账到银行卡账户接口 调用异常,原因:{}", e.getMessage());
        return AjaxResult.error(e.getMessage());
    }
}
 注意事项
提升限额
涉及到转账,自然就有限额的问题,只要产品签约成功就有个默认限额,默认限额要以和支付宝业务人员实际签约后的结果为准。但按官方的文档来看,说是日转账、月转账额度可以更高。
对于大部分行业来说够用了。不过这个不是限定的,如果确实是很大的平台,这些额度不够用的话还可以申请提升额度,相对灵活。

您的一键三连,是我更新的最大动力,谢谢
山水有相逢,来日皆可期,谢谢阅读,我们再会
我手中的金箍棒,上能通天,下能探海
            【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
                cloudbbs@huaweicloud.com
                
            
        
        
        
        
        
        
        - 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)