支付宝企业转账到个人账户

                              支付宝企业转账到个人账户

一、介绍

在日常项目中都会碰到支付功能需求,最近公司项目需要给用户退款,其实也就是公司账户转账到用户个人支付宝账号。

二、环境准备

1、蚂蚁金服开放平台开通

2、设置私钥和公钥

(1)、通过支付宝提供的签名验签工具生成商用应用私钥/公钥。私钥需要保存在项目配置信息中,公钥设置到支付宝,之后会生成一个支付宝公钥,你要复制该支付宝公钥到项目配置信息中去。

三、代码实现

1、官方资料

maven依赖信息:https://docs.open.alipay.com/54/103419/

支付宝转账API:https://docs.open.alipay.com/309/106237/

支付宝转账开发文档:https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer

2、代码实现

配置文件信息:

核心代码片段:

 

// service层

@Service("alipayServiceImpl")
@Slf4j
public class AlipayServiceImpl implements AliPayService{
	
	// 支付宝AppID
	@Value("${alipay.appid}")
	private String appId;
	
	// 支付宝公钥
	@Value("${alipay.public_key}")
	private String alipay_public_key;
	
	// 支付宝私钥
	@Value("${alipay.private_key}")
    private String alipay_private_key;

	@Override
    // account:用户支付宝账户
    // name:用户支付宝真实姓名
    // remark:转账备注信息 参数根据实际需求进行动态提取或者写死
	public String TransferUser(String account, String name, String amount, String remark){
		AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",appId,alipay_private_key,"json","GBK",alipay_public_key,"RSA2");
		AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
		String out_biz_no = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());
		request.setBizContent("{" +
		"\"out_biz_no\":\""+out_biz_no+"\"," +
		"\"payee_type\":\"ALIPAY_LOGONID\"," +
		"\"payee_account\":\""+account+"\"," +
		"\"amount\":\""+amount+"\"," +
		"\"payer_show_name\":\"支付商户信息\"," +
		"\"payee_real_name\":\""+name+"\"," +
		"\"remark\":\""+remark+"\"" +
		"  }");
		AlipayFundTransToaccountTransferResponse response;
		try {
			response = alipayClient.execute(request);
			if(response.isSuccess()){
                log.info("code:{}",response.getCode());
				log.info("msg:{}",response.getMsg());
				log.info("sub_msg:{}",response.getSubMsg());
                log.info("支付宝调用成功.....");
				return "success";
			} else {
                log.info("code:{}",response.getCode());
				log.info("msg:{}",response.getMsg());
				log.info("sub_msg:{}",response.getSubMsg());
				log.info("支付宝调用失败.....");
				return "fail";
			}
		} catch (AlipayApiException e) {
			e.printStackTrace();
			return "fail";
		}
	}
}

// controller层
@RequestMapping("/alipay")
	public String alipay(){
        // 这些参数都是需要从前台传递过来的,看你具体需求,我暂时是写死的
		return aliPayServiceImpl.TransferUser("支付宝账户","真实姓名", "0.1", "备注");
	}

日志信息:

成功案例:

 

失败案例:

 

注意事项:

以上环境一定要配置正确,具体支付环境要是正式的服务器环境,或者你也可以通过外网映射软件将自己的电脑网段发布到正式环境也就是外网,否则在本地测试是不会成功的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值