微信支付(商户主动打款:提现)
微信支付商户主动打款(提现)流程详细描述
在微信支付系统中,商户可以主动申请提现自己的收入到银行账户。这个过程涉及多个步骤和相关的接口调用。在本文中,我们将详细描述微信支付商户主动打款(提现)的流程。
1. 检查条件
首先,系统会检查商户是否满足提现条件:
* 商户有可提现的金额* 商户的提现申请次数未达到限制如果条件不符,则直接返回错误信息。
2. 获取订单信息
接下来,系统会根据传入的订单 ID(id)获取相关的订单信息。这个过程涉及到数据库操作,具体来说是通过 `cashOutApplyMapper.selectByPrimaryKey(id)` 来实现的。
```javaCashOutApply order = cashOutApplyMapper.selectByPrimaryKey(id);
```
3. 校验订单状态
系统会校验订单的状态是否为“待支付”或“已支付”。如果订单状态不符,则直接返回错误信息。
```javaif (order.getStatus() != CashOutStatus.WAIT_PAY && order.getStatus() != CashOutStatus.PAYED) {
result.setCode(MessageCode.ORDER_STATUS_ERROR);
return result;
}
```
4. 检查提现金额
系统会检查商户的可提现金额是否大于或等于提现金额。如果不符,则直接返回错误信息。
```javaif (order.getPayAmount() < order.getCashOutAmount()) {
result.setCode(MessageCode.CASH_OUT_AMOUNT_ERROR);
return result;
}
```
5. 更新订单状态
如果所有检查都通过,则系统会更新订单的状态为“已提现”。
```javaorder.setStatus(CashOutStatus.PAYED);
cashOutApplyMapper.updateByPrimaryKey(order);
```
6. 执行提现操作
最后,系统会执行提现操作,将商户的收入转移到银行账户。
```java// 执行提现操作CashOut cashOut = new CashOut();
cashOut.setOrderId(id);
cashOut.setAmount(order.getCashOutAmount());
cashOutService.execute(cashOut);
```
7. 返回结果
最后,系统会返回一个 `MessageBean` 对象,包含提现结果。
```javaresult.setCode(MessageCode.SUCCESS);
return result;
```
以上就是微信支付商户主动打款(提现)的流程详细描述。这个过程涉及多个步骤和相关的接口调用,确保了商户的收入安全转移到银行账户。