平台资金提现解决方案之实现支付宝单笔转账到银行卡功能

news2024/11/18 20:44:34

大家好,我是小悟

使用场景

不管是做APP、电脑网站、手机网站还是小程序,为了推广基本上都离不开用户分佣的场景。

换句话说就是在其平台内为每个用户设置“电子钱包”功能,而电子钱包在平台那里只是一串数字,这就需要平台为用户实现提现的功能。

在这里插入图片描述

而支付宝单笔转账到银行卡账户主要解决电商等行业商家在其平台内存在用户分佣等场景下,平台内的用户资金提现时面临的主要问题。

在这里插入图片描述

方便快捷

使用支付宝提供的单笔转账到银行卡账户接入很灵活,可应用于多行业平台内用户分佣等场景,提现到指定收款人的银行卡。可以和自身业务系统直接集成实现转账功能,无需频繁登录支付宝商家后台转账。

当发起接口转账后,对商家来说最重要的是,可以免费使用接口,无手续费,支付宝官方提供安全保障。而对用户来说最重要的是,都希望提现资金能够实时到账,单笔转账到银行卡账户可以选择预期T+0到账或预期T+1到账,但最终到账时效要以银行机构为准。

发放账户可以是企业支付宝账户或者个人支付宝账户,收款账户可以是企业对公银行账户或者个人银行卡账户。

功能实现

实现功能前需要联系支付宝业务人员为应用绑定转账到银行卡账户产品,签约成功了才可以调用。接口加签方式一定要选择公钥证书模式,除了产品本身要求外,安全级别更高。

使用SDK接入更是极其方便,几行代码即可完成接入。一运行就把应用参数传入SDK提供的方法创建DefaultAlipayClient实例,不需要每次调用的时候创建。

@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());
    }
}

注意事项

值得注意的是,目前这个接口暂未全量开放,需要联系支付宝业务人员签约。准入条件仅针对已实名认证的支付宝企业账号才可以申请签约该产品,而且需要注册满90天。接口加签方式一定要选择公钥证书模式。

提升限额

涉及到转账,自然就有限额的问题,只要产品签约成功就有个默认限额,默认限额要以和支付宝业务人员实际签约后的结果为准。但按官方的文档来看,说是日转账、月转账额度可以更高。

对于大部分行业来说够用了。不过这个不是限定的,如果确实是很大的平台,这些额度不够用的话还可以申请提升额度,相对灵活。

在这里插入图片描述

您的一键三连,是我更新的最大动力,谢谢

山水有相逢,来日皆可期,谢谢阅读,我们再会

我手中的金箍棒,上能通天,下能探海

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/444991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解 ES6中 Promise 构造函数的使用

文章目录 前言什么是 Promise&#xff1f;Promise 的几种状态拆分细解 PromisePromise all&#xff08;&#xff09;方法then()方法 返回一个新的 Promise 时的状态由什么决定&#xff1f;总结 前言 Promise 是ES6 新增的一个异步调用解决方案&#xff0c;它的出现是为了解决异…

Elasticsearch的调优思路

环境&#xff1a;centos7、elasticsearch-5.6.4 1、性能调优 1.1、Linux参数调优 1.1.1、关闭交换分区 目的是防止内存置换降低性能&#xff0c;将 /etc/fstab 文件中包含 swap 的行注释掉。 #执行命令&#xff1a;注释相关 swap的行 sed -i /swap/s/^/#/ /etc/fstab#将 /etc/f…

彻底弄清FreeRTOS中的事件组(Event Groups)

​之前已经学过两个任务之间可以利用信号量、队列来通信&#xff0c;任务可以利用这两个机制等待某一个事件发生&#xff0c;但是假如需要等待多个事件发生呢&#xff1f;这就需要用到事件组了。 事件组可以让任务进入阻塞态&#xff0c;等待一个或多个事件的组合发生。当事件…

根据 cadence 设计图学习硬件知识 day02 了解飞腾 X100芯片

1. 飞腾芯片 X100的介绍 飞腾套片X100是一款微处理器的配套芯片&#xff0c;主要功能包括图形图像处理和接口扩展两类。在图形图像处理方面&#xff0c;集成了图形处理加速GPU、视频解码VPU、显示控制接口DisplayPort以及显存控制器&#xff1b;在接口扩展方面&#xff0c;支持…

【矩形面积】

题目来源&#xff1a;https://leetcode.cn/problems/rectangle-area/ 目录 矩形面积 矩形面积 题目介绍 给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形&#xff0c;请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示&#xf…

数字化转型危与机,20年老厂的升级之路

“投资大、周期长、见效慢”&#xff0c;是每一家企业在考虑数字化战略时&#xff0c;都会纠结的问题。 打江山容易&#xff0c;守江山难 企业在快速扩张的过程中&#xff0c;往往可以不需要过多的考虑细节的问题&#xff0c;跑马圈地的打法会更加有效。 但是市场占有量开始饱…

JS Array数组常用方法

会改变原数组的方法 1、array.push(需要在末尾添加的数据)【给数组末尾添加一个元素】 2、array.unshift(需要在首位添加的数据)【给数组首位添加一个元素】 3、array.pop()【从数组末尾删除元素,不需要传参】 4、array.shift()【从数组首位开始删除元素,不需要传参】 5、arra…

数据处理方法(LFSR)

一、线性反馈移位寄存器&#xff08;LFSR&#xff09;编码概述 线性反馈移位寄存器&#xff08;LFSR&#xff09;&#xff1a;通常由移位寄存器和异或门逻辑组成。其主要应用在&#xff1a; 伪随机数&#xff0c;伪噪声序列&#xff0c;计数器&#xff0c;BIST&#xff0c;数据…

树脂吸附含钴废水的实际案例

三元聚合物-锂电池是指正极材料使用锂、镍、钴、锰三元正极材料的锂电池&#xff0c;锂离子电池的正极材料有很多种&#xff0c;主要有钴酸锂、锰酸锂、镍酸锂、三元材料、磷酸铁锂等。用三元材料作为正极材料的动力锂电池&#xff0c;近年来凭借其容量高、循环稳定性&#xff…

Java笔记一(黑马)

目录 一.标准的javaBean二.反射1.获取class对象的三种方式2.反射获取构造方法3.反射获取成员变量4.反射获取成员方法 三.网络编程TCP Serve/ClientNIO框架Netty 一.标准的javaBean package com.itheima.domain;public class Student {//1.成员变量私有化//2.空参&#xff0c;带…

数据结构-树及相关算法

二叉树 递归算法的关键要明确函数的定义&#xff0c;相信这个定义&#xff0c;而不要跳进递归细节。 写二叉树的算法题&#xff0c;都是基于递归框架的&#xff0c;我们先要搞清楚 root 节点它自己要做什么&#xff0c;然后根据题目要求选择使用前序&#xff0c;中序&#xff0…

colmap使用教程

COLMAP 是具有图形和命令行界面的通用运动结构 (SfM) 和多视图立体 (MVS) 管道。 它为有序和无序图像集的重建提供了广泛的功能。 常见的基于nerf算法均需要colmap来计算位姿 安装colmap&#xff1a; conda install colmap 需要使用python9 step1&#xff1a;准备多视角图…

第十三节 I/O流与文件操作

文件读写 输入输出流 文本文件 一个字节一个字节写 8位十进制最大255 int read() throws IOException 字节 java.io.OutputStream 将十进制数按字节 用文件的类 表达文件 1.txt 相对路径 &#xff1a;工程是同级的 绝对路径C盘下 D 万物皆对象 都能封装成对象…

xss-flash钓鱼配合msf捆绑上线

这里写目录标题 一&#xff0c;后门文件生成与制作二&#xff0c;flash安装钓鱼网站搭建三&#xff0c;监听四&#xff0c;钓鱼 一&#xff0c;后门文件生成与制作 打开kali&#xff0c;查看ip add 查看 ip 地址为 192.168.1.8 输入 msfconsole 1.生成后门 msfvenom -p window…

LeetCode 1026. Maximum Difference Between Node and Ancestor【DFS,BFS,树】中等

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

Direct3D 12——模板——平面镜效果

1.将实物照常渲染到后台缓冲区内&#xff08;不包括镜子&#xff09;。注意&#xff0c;此步骤不修改模 板缓冲区。 2.清理模板缓冲区&#xff0c;将其整体置零。 将实物都绘制到后台缓冲区中&#xff0c;并将模板缓冲区清理为0 &#xff08;用浅灰色来表示&#xff09;。 绘…

socked编程

socket是什么&#xff1f;套接字是什么&#xff1f; 什么是 socket&#xff1f; socket 的原意是“插座”&#xff0c;在计算机通信领域&#xff0c;socket 被翻译为“套接字”&#xff0c;它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定&#xff0c;一台…

Motion Planning学习笔记一:配置空间、图、图搜索、图遍历

学习高飞博士的路径规划课程所总结的学习笔记。 目录 1、配置空间&#xff08;Configuration Space, C-space&#xff09; 2、图&#xff08;Graphs&#xff09; 3、图搜索&#xff08;Graph Search Basis&#xff09; 3.1、总体框架 3.2、两种基本的图遍历算法 3.3、启…

漫谈大数据 - HiveSQL总结(二)查询操作

导语&#xff1a;HiveSQL各关键字详解&#xff0c;hive函数大全&#xff0c;类似于个人记录工具书&#xff0c;后续遇到其他的也会继续加进来。 有关hive库表操作请见上篇&#xff1a;漫谈大数据 - HiveSQL总结&#xff08;一&#xff09;库表操作_昊昊该干饭了的博客-CSDN博客…

一条SQL如何被MySQL架构中的各个组件操作执行的?

文章目录 1. 单表查询SQL在MySQL架构中的各个组件的执行过程2. SELECT的各个关键字在哪里执行&#xff1f;3. 表关联查询SQL在MySQL架构中的各个组件的执行过程4. LEFT JOIN将过滤条件放在子查询中再关联和放在WHERE子句上有什么区别&#xff1f;5. 聚集索引和全表扫描有什么区…