5 changed files with 158 additions and 171 deletions
@ -1,77 +0,0 @@ |
|||
<?php |
|||
// +---------------------------------------------------------------------- |
|||
// | Niucloud-admin 企业快速开发的多应用管理平台 |
|||
// +---------------------------------------------------------------------- |
|||
// | 官方网址:https://www.niucloud.com |
|||
// +---------------------------------------------------------------------- |
|||
// | niucloud团队 版权所有 开源版本可自由商用 |
|||
// +---------------------------------------------------------------------- |
|||
// | Author: Niucloud Team |
|||
// +---------------------------------------------------------------------- |
|||
|
|||
namespace app\listener\pay; |
|||
|
|||
use app\model\order_table\OrderTable; |
|||
|
|||
/** |
|||
* 支付单据创建事件 |
|||
*/ |
|||
class PayCreateListener |
|||
{ |
|||
/** |
|||
* 处理支付创建事件 |
|||
* @param array $params |
|||
* @return array|null |
|||
*/ |
|||
public function handle(array $params) |
|||
{ |
|||
$trade_type = $params['trade_type'] ?? ''; |
|||
$trade_id = $params['trade_id'] ?? 0; |
|||
|
|||
// 根据不同的业务类型处理支付创建 |
|||
switch ($trade_type) { |
|||
case 'school_order_table': |
|||
return $this->handleOrderPayment($trade_id); |
|||
|
|||
// TODO: 添加其他业务类型的支付创建处理 |
|||
// case 'recharge': |
|||
// return $this->handleRechargePayment($trade_id); |
|||
|
|||
default: |
|||
return null; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 处理订单支付创建 |
|||
* @param int $trade_id 订单ID |
|||
* @return array|null |
|||
*/ |
|||
private function handleOrderPayment(int $trade_id) |
|||
{ |
|||
// 查询订单信息 |
|||
$order = OrderTable::where('id', $trade_id)->find(); |
|||
|
|||
if (!$order) { |
|||
return null; |
|||
} |
|||
|
|||
// TODO: 根据订单信息构建支付数据 |
|||
// 返回格式必须包含以下字段: |
|||
// - main_type: 支付主体类型(如 'member') |
|||
// - main_id: 支付主体ID(如会员ID) |
|||
// - money: 支付金额 |
|||
// - trade_type: 业务类型 |
|||
// - trade_id: 业务ID |
|||
// - body: 支付描述 |
|||
|
|||
return [ |
|||
'main_type' => 'member', // TODO: 从订单获取会员类型 |
|||
'main_id' => $order->student_id ?? 0, // TODO: 从订单获取会员ID |
|||
'money' => $order->order_amount ?? 0, |
|||
'trade_type' => 'school_order_table', |
|||
'trade_id' => $trade_id, |
|||
'body' => '订单支付 - ' . ($order->course_id_name ?? '课程') |
|||
]; |
|||
} |
|||
} |
|||
@ -1,94 +0,0 @@ |
|||
<?php |
|||
// +---------------------------------------------------------------------- |
|||
// | Niucloud-admin 企业快速开发的多应用管理平台 |
|||
// +---------------------------------------------------------------------- |
|||
// | 官方网址:https://www.niucloud.com |
|||
// +---------------------------------------------------------------------- |
|||
// | niucloud团队 版权所有 开源版本可自由商用 |
|||
// +---------------------------------------------------------------------- |
|||
// | Author: Niucloud Team |
|||
// +---------------------------------------------------------------------- |
|||
|
|||
namespace app\listener\pay; |
|||
|
|||
use app\service\core\pay\CoreAccountService; |
|||
use app\model\order_table\OrderTable; |
|||
use app\service\api\apiService\OrderTableService; |
|||
use think\facade\Log; |
|||
|
|||
/** |
|||
* 支付异步回调事件 |
|||
*/ |
|||
class PaySuccessListener |
|||
{ |
|||
public function handle(array $pay_info) |
|||
{ |
|||
if (isset($pay_info['out_trade_no']) && !empty($pay_info['out_trade_no'])) { |
|||
//账单记录添加 |
|||
(new CoreAccountService())->addPayLog($pay_info); |
|||
|
|||
// 处理业务逻辑 |
|||
$this->handleBusinessLogic($pay_info); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 处理业务逻辑 |
|||
* @param array $pay_info 支付信息 |
|||
*/ |
|||
private function handleBusinessLogic(array $pay_info) |
|||
{ |
|||
$trade_type = $pay_info['trade_type'] ?? ''; |
|||
$trade_id = $pay_info['trade_id'] ?? 0; |
|||
|
|||
// 根据不同的业务类型处理支付成功逻辑 |
|||
switch ($trade_type) { |
|||
case 'school_order_table': |
|||
$this->handleOrderPaymentSuccess($trade_id, $pay_info); |
|||
break; |
|||
|
|||
// TODO: 添加其他业务类型的支付成功处理 |
|||
// case 'recharge': |
|||
// $this->handleRechargeSuccess($trade_id, $pay_info); |
|||
// break; |
|||
|
|||
default: |
|||
Log::info('PaySuccessListener: 未处理的业务类型 - ' . $trade_type); |
|||
break; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 处理订单支付成功 |
|||
* @param int $trade_id 订单ID |
|||
* @param array $pay_info 支付信息 |
|||
*/ |
|||
private function handleOrderPaymentSuccess(int $trade_id, array $pay_info) |
|||
{ |
|||
try { |
|||
// 更新订单状态为已支付 |
|||
$order = OrderTable::where('id', $trade_id)->find(); |
|||
|
|||
if (!$order) { |
|||
Log::error('PaySuccessListener: 订单不存在 - ID:' . $trade_id); |
|||
return; |
|||
} |
|||
|
|||
// TODO: 更新订单状态 |
|||
// 确认订单表的字段名和状态值 |
|||
$order->order_status = 'paid'; |
|||
$order->payment_time = date('Y-m-d H:i:s'); |
|||
$order->payment_id = $pay_info['out_trade_no'] ?? ''; |
|||
$order->save(); |
|||
|
|||
// TODO: 调用订单服务处理支付成功后的业务逻辑 |
|||
// 例如:分配课程、创建合同签署记录等 |
|||
$orderArray = $order->toArray(); |
|||
(new OrderTableService())->handlePaymentSuccess($orderArray); |
|||
|
|||
Log::info('PaySuccessListener: 订单支付成功处理完成 - 订单ID:' . $trade_id); |
|||
} catch (\Exception $e) { |
|||
Log::error('PaySuccessListener: 订单支付成功处理异常 - ' . $e->getMessage()); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue