Java实现单次转账到到个人支付宝账户(新版接口)

前言:支付宝5月21日发布通知单次转账接口升级,老版接口不再维护
1.首先需要认证企业支付宝账户
注册链接: https://auth.alipay.com/login/ant_sso_index.htm?goto=https%3A%2F%2Fopenhome.alipay.com%2Fplatform%2FdeveloperIndex.htm.
2.准入条件
该能力仅对企业支付宝账户开放;
企业支付宝账户需满足注册满 90 天,且已实名认证。
3.去绑定(创建)你的应用

4.去能力列表,能力管理签约转账到支付宝账号

准备工作完成进入开发阶段
1.alipay.fund.trans.toaccount.transfer (旧版转账到支付宝账户接口/阿里已经不维护了不建议这个)
链接: https://opendocs.alipay.com/open/309/alipay.fund.trans.toaccount.transfer.

2.alipay.fund.trans.uni.transfer(单笔转账接口/这是新版)

本人用的是证书签名验证的新版转账接口,下面是代码的实现(如果不了解什么是证书签名验证点击查看链接: https://opendocs.alipay.com/open/291/105974.)

需要的maven依赖

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

Controller层

@RequestMapping("/updatewithdrawal")
@ResponseBody
@CrossOrigin(origins = "*", maxAge = 3600)//跨域
public ResultMap updatewithdrawal(String id, Integer mType) throws AlipayApiException {//根据提现订单id查询出提现记录对象Withdraw w = userService.getwithdrawalsById(id);if (w.getmManner() == 1) {//调用转账到个人支付宝Map<String, Object> map = alipayService.alipayWithdraw(id, w.getmMoney(),w.getuId(), w.getAccountpayeename(), w.getAccountpayee());return ResultMap.ok(200, "success").put("data",map);} else if (w.getmManner() == 2) {//这是微信提现Map<String, String> b = userService.updatewithdrawal(id,mType);return ResultMap.ok(200, "success").put("data",b);}return ResultMap.error(305, "提现异常");
}

Service层

/*** 支付宝提现* @param wOrderNumber  自定义订单号* @param price   提现金额* @param zfbName 支付宝账户* @param name   真实姓名* @throws Exception*/
Map<String, Object> alipayWithdraw(String wOrderNumber, Double price,String uId,String name, String zfbName )/*** 支付宝提现* @param wOrderNumber  自定义订单号* @param price   提现金额* @param zfbName 支付宝账户* @param name   真实姓名* @throws Exception*/
@Override
public Map<String, Object> alipayWithdraw(String wOrderNumber,Double price,String uId,String name,String zfbName ) throws AlipayApiException {//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。//构造clientCertAlipayRequest certAlipayRequest = new CertAlipayRequest();//设置网关地址https://openapi.alipay.com/gateway.docertAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
//设置应用AppIdcertAlipayRequest.setAppId("应用AppId");
//设置应用私钥certAlipayRequest.setPrivateKey("应用私钥");certAlipayRequest.setFormat("json");
//设置字符集certAlipayRequest.setCharset("UTF-8");
//设置签名类型certAlipayRequest.setSignType("RSA2");
//设置应用公钥证书路径certAlipayRequest.setCertPath("");
//设置支付宝公钥证书路径certAlipayRequest.setAlipayPublicCertPath("");
//设置支付宝根证书路径certAlipayRequest.setRootCertPath("");//构造ClientAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);//实例化接口AlipayFundTransUniTransferRequest request=new AlipayFundTransUniTransferRequest();Alipay alipay = new Alipay();alipay.setOut_biz_no(wOrderNumber);//商户自定义的唯一订单号alipay.setTrans_amount(price);//金额PayeeInfo payerInfo=new PayeeInfo();payerInfo.setIdentity(zfbName);//收款方支付宝账号payerInfo.setIdentity_type("ALIPAY_LOGON_ID");payerInfo.setName(name);alipay.setProduct_code("TRANS_ACCOUNT_NO_PWD");alipay.setBiz_scene("DIRECT_TRANSFER");alipay.setPayee_info(payerInfo);alipay.setOrder_title("标题");alipay.setRemark("备注理由");//转成json格式放入String json = new Gson().toJson(alipay);request.setBizContent(json);AlipayFundTransUniTransferResponse response=null;AlipayFundTransOrderQueryResponse response1=null;Map<String, Object> map = new HashMap<String,Object>();try{response = alipayClient.certificateExecute(request);if (response.isSuccess()){if("10000".equals(response.getCode())){Boolean b = userMapper.updatewithdrawal(wOrderNumber,1);if(b){map.put("code", response.getCode());map.put("success","true");map.put("des", "转账成功");}else {map.put("code", response.getCode());map.put("success","false");map.put("des", "转账成功,修改状态失败!");}} else {map.put("code", response.getCode());map.put("sub_code", response.getSubCode());//详情状态码map.put("success", "false");map.put("sub_msg", response.getSubMsg());//详情原因}return map;}else {//调用查询接口查询数据AlipayFundTransOrderQueryRequest request1 = new AlipayFundTransOrderQueryRequest();Alipay alipay1 = new Alipay();alipay1.setOut_biz_no(wOrderNumber);//转成json格式放入String json1 = new Gson().toJson(alipay1);request1.setBizContent(json1);response1=alipayClient.certificateExecute(request1);if(response1.isSuccess()){if("10000".equals(response1.getCode())){map.put("code", response1.getCode());map.put("success","true");map.put("des", "已经转账成功,无需重复请求!");} else {map.put("code", response1.getCode());map.put("sub_code", response1.getSubCode());//详情状态码map.put("success", "false");map.put("sub_msg", response1.getSubMsg());//详情原因}return map;}else {map.put("success", "false");map.put("des", "订单查询结果失败!");return map;}}}catch(AlipayApiException e){e.printStackTrace();map.put("success", "false");map.put("des", "转账失败!");}return map;
}

大致看了看,目前可查的支付宝单笔转账的代码实现基本都是老版本接口,以上是新版本(单笔转账到支付宝账号/查询转账订单)的代码实现(基础版代码,可以思考如何去优化) 好记性不如烂笔头~

Java实现单次转账到支付宝账户(新版接口)(SpringBoot)相关推荐

  1. 对接转账到支付宝账户API接口流程步骤

    对接转账到支付宝API接口流程步骤 一.技术指导步骤指引 https://opensupport.alipay.com/support/codelab/detail/488/1445?ant_sour ...

  2. 调用转账到支付宝账户的接口后,账户被封禁,如何处理?

    常见风控原因: 1.异地ip登录 2.非常规时间段转账 3.收单或转账给风险客户 4.转账金额异常 解决方式 1.打客服电话95188沟通 2.联系官方小二,进行风控解除申诉

  3. 支付宝支付之“单笔转账到支付宝账户接口”的调用(生成签名、上传应用公钥、下载SDK、接口调用、报错自动排查、查看错误码)

    支付宝接口调用 "单笔转账到支付宝账户"的接口调用,一般涉及到下面几个知识点 1.生成签名 在使用支付宝接口的时候,需要使用支付宝的签名,这里需要使用支付宝的RSA生成工具. 关于 ...

  4. java 支付宝转账_Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝订单退款)...

    上一篇写到支付宝的支付,这代码copy下来就能直接用了,   我写学习文档时会经常贴 官方参数文档的案例地址, 因为我觉得 请求参数,响应参数说明 官方文档整理的很好,毕竟官方不会误导大家. 我学一个 ...

  5. Java 支付宝支付,退款,单笔转账到支付宝账户(单笔转账到支付宝账户)

    上次分享了支付宝订单退款的代码,今天分享一下支付宝转账的操作.  现在是有一个余额提现的功能,本来是打算做提现到银行卡的,但是客户嫌麻烦不想注册银联的开放平台账户,就说先提现到支付宝就行,二期再做银行 ...

  6. php 单笔转账到支付宝账户,支付宝公钥证书实现版本

    支付宝某些业务只能使用公钥证书方式来验签 如:即使转账 红包等 笔者就要实现这样一个功能,[单笔转账到支付宝账户],采用支付宝公钥证书签名来实现. 话不多说,流程先走起 第一步:下载支付宝秘钥生成器 ...

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

    超快速接入 支付宝官方文档 直接上代码 SDK AlipayUtils 支付宝官方文档 转账到支付宝用户快速接入 单笔转账到支付宝账户接入助手 直接上代码 SDK <!-- https://mv ...

  8. 转账到支付宝账户(企业支付宝)

    对接转账到支付宝API接口流程步骤 一.技术指导步骤指引 https://opensupport.alipay.com/support/codelab/detail/488/1445?ant_sour ...

  9. 转账到支付宝账户接口常见问题

    1.单笔转账接口是否有异步通知? 新版单笔转账接口(alipay.fund.trans.uni.transfer)支持异步回调,可通过在应用网关设置异步地址进行接收,异步通知转账单据状态变更通知相关参 ...

最新文章

  1. 逆变器的技术创新 让光伏电站更具发展前景
  2. Domain adaptation:连接机器学习(Machine Learning)与迁移学习(Transfer Learning)
  3. python 全中文匹配字符_Python教程:进程和线程amp;正则表达式
  4. Java日志框架介绍
  5. Kotlin入门(23)适配器的进阶表达
  6. 如何保护进程 不被结束_花草种植技术如何保护花草树木不受伤害
  7. sql----DML ,TCL
  8. 安装python时系统找不到指定的路径_系统找不到指定的路径【操作步骤】
  9. SpringBoot 请求相关
  10. MSP430F149;二、TIMEA
  11. 关于运维的标准(ITSS信息技术服务-运行维护)介绍
  12. java开源运维平台_推荐一个:开源自动化运维开发平台(IT Automatic Develop Platform)...
  13. 清除dns缓存cmd命令行方式
  14. 快速打开命令行方法集合
  15. 商家如何自己零成本免费制作点餐小程序
  16. 【Python】条件变量、信号变量、事件
  17. lg显示器工厂模式怎么进入_LG液晶显示器进入工厂模式方法.doc
  18. ERNIE的掩码机制代码解析
  19. 不安装Oracle使用plsqldev工具
  20. 如何在iPhone手机里创建网页快捷方式图标(Web Clip)

热门文章

  1. C++函数模板与类模板的区别
  2. PHP验证身份证类(包含香港身份证校验)
  3. 请写出至少五个块级元素_以逸之名
  4. 蚁群算法(ant system,AS)
  5. 图书管理系统 (单链表实现,C++及文件操作,超详细)
  6. Android串口通信:串口读写
  7. golang从channel读数据的各种情况
  8. Cadence学习七:给板子外形倒角
  9. 国家开放大学计算机应用基础本科性考,精选国家开放大学电大本科《1200计算机应用基础》形考任务1试题及答案...
  10. 【机房收费个人版】SqlHelper