cxfoot/models/common/notify/payment/BalanceRechargePaymentNotify.php
2023-10-27 14:25:12 +08:00

74 lines
2.4 KiB
PHP

<?php
/**
* @author Any
* @description KISS
* @date 2021年9月30日
* @version 1.0.0
*
* _____LOG_____
*
*/
namespace app\models\common\notify\payment;
use app\models\Model;
use app\models\Balance;
use app\models\RechargeOrder;
use app\models\UniqueOrderNo;
class BalanceRechargePaymentNotify extends Model
{
/**
* 支付回调后续处理
* @param PaymentOrder $paymentOrder
* @return mixed
*/
public function notify($paymentOrder)
{
$t = \Yii::$app->db->beginTransaction();
$paymentOrder = \app\models\PaymentOrder::findOne(['order_no' => $paymentOrder->orderNo, 'notify_status' => [0,2]]);
if($paymentOrder == null){
return $this->apiReturnError('支付回调已经处理或不存在');
}
$paymentOrder->notify_status = 1;
if(!$paymentOrder->save()){
$t->rollBack();
return $this->getModelError($paymentOrder);
}
//充值订单状态
$rechargeOrder = RechargeOrder::findOne(['order_no' => $paymentOrder->order_no]);
if($rechargeOrder == null){
$t->rollBack();
return $this->apiReturnError('充值订单不存在');
}
$rechargeOrder->pay_type = $paymentOrder->pay_type;
$rechargeOrder->is_pay = 1;
$rechargeOrder->pay_time = $paymentOrder->updated_at;
if(!$rechargeOrder->save()){
$t->rollBack();
return $this->getModelError($rechargeOrder);
}
//账户余额变动
$type = Balance::TYPE_INCOME;
$money = $rechargeOrder->pay_price + $rechargeOrder->send_price;
$money = sprintf('%.2f',$money);
if($rechargeOrder->send_price == 0){
$desc = "用户自助充值{$money}";
} else {
$desc = "用户参与自助充值{$rechargeOrder->pay_price}元赠送{$rechargeOrder->send_price}元,实际到账{$money}";
}
$order_no = $rechargeOrder->order_no;
$order_type = UniqueOrderNo::getOrderTypeByOrderNo($order_no);
$ext = "";
$res = Balance::userWalletLog($rechargeOrder->user_id, $type, $money, $desc, $order_type, $order_no, $ext, $rechargeOrder->cx_mch_id);
if($res['code'] != 0){
$t->rollBack();
return $res;
}
$t->commit();
return $this->apiReturnSuccess();
}
}