<?php
|
|
namespace app\common\model\payment;
|
use app\common\enum\order\OrderTypeEnum;
|
use app\common\model\order\Order as OrderModel; //商城订单
|
use app\api\model\plus\live\PlanOrder as PlanOrderModel; //直播订单
|
use app\api\model\user\BalanceOrder as BalanceOrderModel; //余额充值订单
|
use app\api\model\plus\agent\Apply as AgentOrderModel; //分销订单
|
use app\api\model\user\CardRecord as CardOrderModel; //会员卡订单
|
use app\api\model\plus\regactivity\user as regactivityOrderModel; //活动报名订单
|
use app\api\model\plus\counting\UserCounting as CountOrderModel; //计次卡订单
|
use app\api\model\supplier\DepositOrder as DepositOrderModel; //预售定金订单
|
use app\common\model\BaseModel;
|
|
/**
|
* 线上支付记录保存
|
*/
|
class PaymentLog extends BaseModel
|
{
|
protected $name = 'payment_log';
|
protected $pk = 'id';
|
|
|
public function checkOrder($out_trade_no, $attach){
|
$payment_model = (new static());
|
$where = ['out_trade_no'=>$out_trade_no,'pay_status'=>10]; //查询支付记录的
|
switch ($attach['order_type']) {
|
case OrderTypeEnum::MASTER:
|
$update_data = ['trade_no'=>$out_trade_no]; //更新订单的 这里的更新要按照实际支付时变动的订单好字段 有些时order_no
|
$payment = $payment_model->where($where)->find();
|
if($payment){ //存在支付记录
|
$order = new OrderModel();
|
$is_pay = $order::detail(['order_id'=>$payment['order_id'],'pay_status'=>20]);
|
if($is_pay){
|
log_write('master订单已支付'.$out_trade_no);
|
return 0;
|
}
|
$res = $order->update($update_data,['order_id'=>$payment['order_id']]);
|
if($res){
|
return $payment['app_id'];
|
}
|
return 0;
|
}else{
|
log_write('master没找到支付记录'.json_encode($out_trade_no));
|
return 0;
|
}
|
break;
|
case OrderTypeEnum::CASH;
|
// 实例化订单模型
|
$update_data = ['order_no'=>$out_trade_no]; //更新订单的
|
$payment = $payment_model->where($where)->find();
|
if($payment){ //存在支付记录
|
$order = new DepositOrderModel();
|
$is_pay = $order::detail(['order_id'=>$payment['order_id'],'pay_status'=>20]);
|
if($is_pay){
|
log_write('deposit订单已支付'.$out_trade_no);
|
return 0;
|
}
|
$res = $order->update($update_data,['order_id'=>$payment['order_id']]);
|
if($res){
|
return $payment['app_id'];
|
}
|
return 0;
|
}else{
|
log_write('deposit没找到支付记录'.json_encode($out_trade_no));
|
return 0;
|
}
|
|
break;
|
case OrderTypeEnum::PLAN;
|
|
// 实例化订单模型
|
$update_data = ['order_no'=>$out_trade_no]; //更新订单的
|
$payment = $payment_model->where($where)->find();
|
if($payment){ //存在支付记录
|
$order = new PlanOrderModel();
|
$is_pay = $order::detail(['order_id'=>$payment['order_id'],'pay_status'=>20]);
|
if($is_pay){
|
log_write('plan订单已支付'.$out_trade_no);
|
return 0;
|
}
|
$res = $order->update($update_data,['order_id'=>$payment['order_id']]);
|
if($res){
|
return $payment['app_id'];
|
}
|
return 0;
|
}else{
|
log_write('plan没找到支付记录'.json_encode($out_trade_no));
|
return 0;
|
}
|
break;
|
case OrderTypeEnum::BALANCE;
|
// 实例化订单模型
|
$update_data = ['order_no'=>$out_trade_no]; //更新订单的
|
$payment = $payment_model->where($where)->find();
|
if($payment){ //存在支付记录
|
$order = new BalanceOrderModel();
|
$is_pay = $order::detail(['order_id'=>$payment['order_id'],'pay_status'=>20]);
|
if($is_pay){
|
log_write('balance订单已支付'.$out_trade_no);
|
return 0;
|
}
|
$res = $order->update($update_data,['order_id'=>$payment['order_id']]);
|
if($res){
|
return $payment['app_id'];
|
}
|
return 0;
|
}else{
|
log_write('balance没找到支付记录'.json_encode($out_trade_no));
|
return 0;
|
}
|
break;
|
case OrderTypeEnum::CARD;
|
// 实例化订单模型
|
$update_data = ['order_no'=>$out_trade_no]; //更新订单的
|
|
$payment = $payment_model->where($where)->find();
|
if($payment){ //存在支付记录
|
$order = new CardOrderModel();
|
$is_pay = $order::detail(['order_id'=>$payment['order_id'],'pay_status'=>20]);
|
if($is_pay){
|
log_write('card订单已支付'.$out_trade_no);
|
return 0;
|
}
|
$res = $order->update($update_data,['order_id'=>$payment['order_id']]);
|
if($res){
|
return $payment['app_id'];
|
}
|
return 0;
|
}else{
|
log_write('card没找到支付记录'.json_encode($out_trade_no));
|
return 0;
|
}
|
break;
|
case OrderTypeEnum::REGACTIVITY;
|
// 实例化订单模型
|
$update_data = ['order_no'=>$out_trade_no]; //更新订单的
|
$payment = $payment_model->where($where)->find();
|
if($payment){ //存在支付记录
|
$order = new regactivityOrderModel();
|
$is_pay = $order::detail(['order_id'=>$payment['order_id'],'pay_status'=>20]);
|
if($is_pay){
|
log_write('regactivity订单已支付'.$out_trade_no);
|
return 0;
|
}
|
$res = $order->update($update_data,['order_id'=>$payment['order_id']]);
|
if($res){
|
return $payment['app_id'];
|
}
|
return 0;
|
}else{
|
log_write('regactivity没找到支付记录'.json_encode($out_trade_no));
|
return 0;
|
}
|
break;
|
}
|
}
|
|
//保存支付信息
|
public function savePaymentLog($data)
|
{
|
if (is_object($data)) {
|
$data = $data->toArray();
|
}
|
$save_data = [
|
'app_id' => $data['app_id'],
|
'out_trade_no' => !empty($data['order_no'])?$data['order_no']:'',
|
'order_id' => $data['order_id'],
|
'online_money' => $data['online_money'],
|
'order_source' => $data['order_source']
|
];
|
if (isset($data['trade_no'])) {
|
$save_data['out_trade_no'] = $data['trade_no'];
|
}
|
(new static())->save($save_data);
|
}
|
//支付完成后修改支付记录的状态
|
public function updatePaymentLog($data)
|
{
|
$save_data = ['pay_status'=>20];
|
$update_date = ['out_trade_no'=>$data['order_no']];
|
(new static())->update($save_data,$update_date);
|
}
|
|
//按照支付的订单号查找订单id 要找已支付成功的
|
public function getLogInfo($data)
|
{
|
$where = ['out_trade_no'=>$data['order_no'],'pay_status'=>20];
|
return (new static())->where($where)->find();
|
}
|
|
}
|