102 lines
3.6 KiB
PHP
102 lines
3.6 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\UserBallArm;
|
|
use app\models\UserInformation;
|
|
|
|
class MemberPayMentNotify 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;
|
|
$order->status = 0;
|
|
if(!$order->save()){
|
|
$t->rollBack();
|
|
return $this->getModelError($order);
|
|
}
|
|
Goods::handleOrderPayAfter($order->id, $order->cx_mch_id);
|
|
$user = UserInformation::findOne(['user_id' => $order->user_id]);
|
|
if(!empty($user)){
|
|
$begin_time=strtotime(date('Y-m-d H:i:s',time()));
|
|
$end_time=strtotime("+12 month",$begin_time);
|
|
$user->member_status = 1;
|
|
$user->begin_time = $begin_time;
|
|
$user->end_time = $end_time;
|
|
if(!$user->save()){
|
|
$t->rollBack();
|
|
return $this->getModelError($user);
|
|
}
|
|
}
|
|
$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();
|
|
}
|
|
}
|
|
|