cxfoot/models/common/notify/payment/HitBallPayMentNotify.php
2023-10-24 14:54:18 +08:00

88 lines
3.0 KiB
PHP

<?php
/**
* @author Any
* @description KISS
* @date 2021年10月3日
* @version 1.0.0
*
* _____LOG_____
*
*/
namespace app\models\common\notify\payment;
use app\models\common\union\CardFrom;
use app\models\Goods;
use app\models\Model;
use app\models\Order;
use app\models\PaymentTypes;
use app\models\StoreEarnings;
use app\models\UserInformation;
class HitBallPayMentNotify 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);
}
//订单状态
$order = Order::findOne(['order_no' => $paymentOrder->order_no]);
if($order == null){
$t->rollBack();
return $this->apiReturnError('订单不存在');
}
$order->pay_type = $paymentOrder->pay_type;
$order->is_pay = 1;
$order->pay_time = time();
$order->total_pay_price = $paymentOrder->amount;
if(!$order->save()){
$t->rollBack();
return $this->getModelError($order);
}
Goods::handleOrderPayAfter($order->id, $order->cx_mch_id);
$t->commit();
$earnings = StoreEarnings::findOne(['order_id' => $order->id,'user_id' => $order->user_id,'is_delete' => 0]);
if(!empty($earnings) && !empty($earnings->id) && !empty($earnings->card_id) && !empty($earnings->money)){
$param['id'] = $earnings->id;
$param['card_id'] = $earnings->card_id;
$param['money'] = $earnings->money;
$param['tranDate'] = date('Ymd', $order->pay_time);
//分账
$cardForm = new CardFrom();
$multi = $cardForm->psOrder($paymentOrder,$param);
if($multi['code'] == 0){
$earnings->status = 1;
$param2['merOrderNo'] = $multi['data']['merOrderNo'];
$param2['psMerOrderNo'] = $multi['data']['psMerOrderNo'];
$param2['order_no'] = $order->order_no;
$query = $cardForm->psResultQuery($param2);
if($query['code'] == 0){
if($query['data']['status'] == '02'){
$earnings->status = 3;
}elseif ($query['data']['status'] == '03'){
$earnings->status = 2;
}else{
$earnings->status = 1;
}
$earnings->save();
}
}
}
return $this->apiReturnSuccess();
}
}