This commit is contained in:
2023-03-11 10:11:22 +08:00
parent 02bb102a4d
commit 0f098b1df6
8 changed files with 134 additions and 27 deletions
+89 -5
View File
@@ -8,6 +8,7 @@ use App\Constants\HttpEnumCode;
use App\Exception\BusinessException;
use App\Model\Hospital;
use App\Model\OrderInquiry;
use App\Model\OrderInquiryRefund;
use App\Model\UserDoctor;
use App\Model\UserPatient;
use App\Services\BaseService;
@@ -18,6 +19,7 @@ use Extend\TencentIm\Message;
use Extend\TencentIm\Profile;
use Extend\Wechat\WechatPay;
use Hyperf\Amqp\Producer;
use Hyperf\Amqp\Result;
use Hyperf\DbConnection\Db;
use Hyperf\HttpMessage\Stream\SwooleFileStream;
use Hyperf\HttpMessage\Stream\SwooleStream;
@@ -115,7 +117,6 @@ class CallBackController extends AbstractController
}
Log::getInstance()->info("微信支付回调处理成功");
Log::getInstance()->info("微信支付回调处理成功,开始发送系统问诊消息");
try {
if ($message['trade_state'] == "SUCCESS"){
@@ -134,6 +135,8 @@ class CallBackController extends AbstractController
}
}elseif ($order_inquiry['inquiry_type'] == 1 || $order_inquiry['inquiry_type'] == 3){
// 专家-公益,发送im消息
Log::getInstance()->info("开始发送im消息");
$ImService = new ImService();
// 获取订单医生数据
@@ -146,9 +149,9 @@ class CallBackController extends AbstractController
}
// 发送消息
$ImService->sendTextMessage($user_doctor['user_id'],$order_inquiry['user_id'],"等待医生接诊",$order_inquiry['order_inquiry_id']);
$ImService->sendTextMessage($user_doctor['user_id'],$order_inquiry['user_id'],"等待医生接诊",$order_inquiry['order_inquiry_id'],$order_inquiry['inquiry_type']);
Log::getInstance()->info("微信支付回调数据处理成功,发送系统问诊消息成功");
Log::getInstance()->info("发送im消息成功");
}
}
}catch (\Exception $e) {
@@ -157,7 +160,7 @@ class CallBackController extends AbstractController
return $server->serve();
}
Log::getInstance()->info("微信支付回调处理成功,发送系统问诊消息成功");
Log::getInstance()->info("微信支付回调处理成功");
return $server->serve();
}
@@ -171,6 +174,8 @@ class CallBackController extends AbstractController
*/
public function wxPayRefundCallBack(): ResponseInterface
{
Db::beginTransaction();
try {
// 处理支付结果事件
$WechatPay = new WechatPay(1);
@@ -187,13 +192,91 @@ class CallBackController extends AbstractController
$app->getValidator()->validate($app->getRequest());
Log::getInstance()->info("微信退款回调数据:" . json_encode($message->toArray(),JSON_UNESCAPED_UNICODE));
return $server->serve();
if (empty($message['out_trade_no'])){
Log::getInstance()->info("微信退款回调数据错误");
return $server->serve();
}
// 验证订单数据
$params = array();
$params['inquiry_no'] = $message['out_trade_no'];
$order_inquiry = OrderInquiry::getOne($params);
if (empty($order_inquiry)){
Log::getInstance()->info("非法订单");
return $server->serve();
}
// 验证订单状态
if ($order_inquiry['inquiry_status'] == 1){
// 问诊订单状态(1:待支付 2:待分配 3:待接诊 4:已接诊 5:已完成 6:已结束 7:已取消)
Log::getInstance()->info("订单状态错误:当前为" . $order_inquiry['inquiry_status']);
return $server->serve();
}
// 验证订单退款状态
if ($order_inquiry['inquiry_refund_status'] == 3) {
// 问诊订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭)
Log::getInstance()->info("订单退款状态错误:当前为" . $order_inquiry['inquiry_refund_status']);
return $server->serve();
}
// 验证订单支付状态
if (in_array($order_inquiry['inquiry_pay_status'],[1,3,4,5,6,7])) {
// 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
Log::getInstance()->error("队列执行失败原因:订单未支付");
return $server->serve();
}
// 退款状态
if ($message['refund_status'] == "SUCCESS"){
// 退款成功
$inquiry_refund_status = 3;
}elseif ($message['refund_status'] == "CLOSED"){
// 退款关闭
$inquiry_refund_status = 5;
}elseif ($message['refund_status'] == "ABNORMAL"){
// 退款异常
$inquiry_refund_status = 6;
}
if (empty($inquiry_refund_status)){
// 错误,无退款状态
Log::getInstance()->error("队列执行失败原因:订单未支付");
return $this->wxPayErrorReturn("退款状态错误");
}
// 修改订单
$data = array();
$data['inquiry_refund_status'] = $inquiry_refund_status;
$params = array();
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
OrderInquiry::edit($params,$data);
// 修改退款订单
$data = array();
$data['inquiry_refund_status'] = $inquiry_refund_status;
$data['success_time'] = $message['success_time'];
$params = array();
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
OrderInquiryRefund::edit($params,$data);
Db::commit();
} catch (\Exception $e) {
// 验证失败
Db::rollBack();
Log::getInstance()->error("微信支付回调数据验证失败:" . $e->getMessage());
return $this->wxPayErrorReturn($e->getMessage());
}
Log::getInstance()->info("微信退款回调处理成功");
// 发送短信消息
return $server->serve();
}
/**
@@ -342,6 +425,7 @@ class CallBackController extends AbstractController
// 存储redisList
if (!empty($order_inquiry) && !empty($request_params['CloudCustomData'])){
if (!empty($order_inquiry['doctor_id'])){
$data = array();
$data['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
$data['to_user_id'] = $request_params['To_Account'];
$data['patient_name'] = $order_inquiry['patient_name'];