82 lines
2.6 KiB
PHP
82 lines
2.6 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\Level;
|
|
use app\models\Model;
|
|
use app\models\Balance;
|
|
use app\models\RechargeOrder;
|
|
use app\models\UniqueOrderNo;
|
|
use app\models\User;
|
|
|
|
|
|
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);
|
|
}
|
|
$user = User::findOne(['id' => $rechargeOrder->user_id,'status' => 0,'is_delete' => 0]);
|
|
//账户余额变动
|
|
$type = Balance::TYPE_INCOME;
|
|
$money = $rechargeOrder->pay_price + $rechargeOrder->send_price;
|
|
$money = sprintf('%.2f',$money);
|
|
$desc = "钱包充值";
|
|
$order_no = $rechargeOrder->order_no;
|
|
$order_type = UniqueOrderNo::getOrderTypeByOrderNo($order_no);
|
|
$ext = "";
|
|
$res = Balance::userWalletLog($rechargeOrder->user_id, $type, (float) $money, $desc, $order_type, $order_no, $ext, $rechargeOrder->cx_mch_id,0);
|
|
if($res['code'] != 0){
|
|
$t->rollBack();
|
|
return $res;
|
|
}
|
|
$user->level_exp += (float)$money;
|
|
$level_id = Level::checkUpgrade($user->level_id,$user->level_exp);
|
|
if($level_id !== false){
|
|
$user->level_id = $level_id;
|
|
}
|
|
if(!$user->save()){
|
|
$t->rollBack();
|
|
return $this->getModelError($user);
|
|
}
|
|
$t->commit();
|
|
return $this->apiReturnSuccess();
|
|
}
|
|
}
|
|
|