一点一滴开始搭建自己的项目框架之支付宝篇 支付宝提现

       其实小白对于支付宝的提现 一开始做的时候估计也是一脸懵  在支付宝的业务中是没有提现这一说的 提现在支付宝的业务中叫做企业向个体用户打款 做起来其实很简单就是这个业务需要开通

       好的这一块我也不是太清楚  但是支付宝的打款流程我是比较清楚的  需要先获取到支付宝或微信的openid 来进行打款 支付宝还多了一个认证的真实姓名 ,还有支付宝的打款不是百分百成功的  需要在返回值中去判断  也可以根据商户流水号去判断这一步必不可少 当第一次失败的时候其实可以多调用几次来进行失败的确认

       下面直接上源码

/**
	 * 
	 * @Description: (支付宝提现) 
	 * @throws
	 */
	@RequestMapping(value = "userWithdraw", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
	@ResponseBody
	public String userWithdraw(HttpServletRequest request,WithdrawalVo withdrawalVo) throws AlipayApiException {
		withdrawalVo.setMoney(request.getHeader("money"));
		withdrawalVo.setCashOurId(request.getHeader("cashOurId"));
		withdrawalVo.setAliId(request.getHeader("aliId"));
        /**
         * 查询提现的申请 提现一般走审核路线
         */
//		CashOur cashOur = cashOurMapper.selectByPrimaryKey(withdrawalVo.getCashOurId());
//		withdrawalVo.setName(cashOur.getCashourAliName());
		ResultModel resultModel = new ResultModel();
		String money = withdrawalVo.getMoney(); // 提现金额,保留两位小数
		String account = withdrawalVo.getAliId(); // 提现账户
		String name = withdrawalVo.getName(); // 真实姓名
		String out_trade_no = StrUtils.uuid();
		// 订单状态校验
		try {
			AlipayClient alipayClient = AliPayConfig.getAlipayClient();
			AlipayFundTransToaccountTransferRequest req = new AlipayFundTransToaccountTransferRequest();
			JSONObject bizContent = new JSONObject();
			bizContent.put("out_biz_no", out_trade_no);
			bizContent.put("payee_type", "ALIPAY_LOGONID"); // 收款方(用户)的支付宝登录类型,支持邮箱和手机号格式。
			bizContent.put("payee_account", account);// 收款方账户,支持邮箱和手机号格式。
			bizContent.put("amount", money);//金额,必须大于0.1元
			bizContent.put("payer_show_name", "公司-提现");
			bizContent.put("payee_real_name", name);
			bizContent.put("remark", "公司-提现");
			String biz = bizContent.toString().replaceAll("\"", "'");
			req.setBizContent(biz);
			AlipayFundTransToaccountTransferResponse response = alipayClient.execute(req);
			//提现成功
			if (response.isSuccess()) {
				resultModel = new ResultModel(200,"31018","提现成功");
                /**
                 * TODO 提现成功之后处理业务
                 */
			} else {
				resultModel = new ResultModel(500,"31019","提现失败");
				// 数据回滚
				log.info(out_trade_no+"提现失败");
				TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
			}
		} catch (Exception e) {
			resultModel = new ResultModel(500,"31019","提现失败");
			log.error("支付宝提现失败:"+e);
			e.printStackTrace();
		}
		return JsonUtil.toJson(resultModel);
	}

        这个方法是提供给我们后台的一个API 他传值的时候把数据都塞到头文件里面了  所以我取值在头里面取的 为什么是后台调用我前台的API呢  这就涉及到安全问题了  前台只能提供提现的申请 是无法直接到帐的  后台需要我们的工作人员去审核才能进行打款的操作 这一步也是为了安全性问题。

 好了支付宝的提现就这么点东西 

下一章:支付宝原路返回

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值