Files
hyperf_service/app/Service/Common/Pay/Wx/WxJsRechargeOrderService.php
2025-03-31 16:32:01 +08:00

177 lines
4.8 KiB
PHP

<?php
namespace App\Service\Common\Pay\Wx;
use App\Amqp\Producer\Pay\GoodOrderPayFinishProducer;
use App\Amqp\Producer\Refund\GoodOrderRefundFinishProducer;
use App\Constants\Common\OrderCode;
use App\Constants\Common\PayCode;
use App\Constants\Common\RefundCode;
use App\Service\ServiceTrait\Api\CateringTrait;
use App\Service\ServiceTrait\Api\CheckOrderCallBackTrait;
use App\Service\ServiceTrait\Api\CouponTrait;
use App\Service\ServiceTrait\Api\GoodOrderTrait;
use App\Service\ServiceTrait\Api\OrderTrait;
use App\Service\ServiceTrait\Api\PayFinishTrait;
use App\Service\ServiceTrait\Api\RefundOrderTrait;
use App\Service\ServiceTrait\Common\OrderChangeStatusTrait;
use Hyperf\Amqp\Producer;
use Hyperf\DbConnection\Db;
use Hyperf\Di\Annotation\Inject;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Psr\Http\Message\ResponseInterface;
use Yansongda\Artful\Exception\InvalidParamsException;
use function Hyperf\Config\config;
class WxJsRechargeOrderService extends WxJsRechargeBaseService
{
use CheckOrderCallBackTrait;
// GoodOrderTrait,
// PayFinishTrait,
// RefundOrderTrait,
// OrderTrait,
// OrderChangeStatusTrait,
// CateringTrait,
// CouponTrait;
/**
*
*/
const int OrderType = OrderCode::ORDER_TYPE_GOOD;
const int PayType = PayCode::WECHAT_PAY;
// /**
// * 订单 id
// * @var int
// */
// protected int $orderId;
/**
* @var string
*/
protected string $orderNo;
// /**
// * @var mixed
// */
// protected mixed $orderInfo;
// /**
// * @var mixed
// */
// protected mixed $payInfo;
// /**
// * @var mixed
// */
// protected mixed $refundInfo;
/**
* @var Producer
*/
#[Inject]
protected Producer $producer;
/**
* @return ResponseInterface
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
* @throws InvalidParamsException
*/
public function callBackHandle(): ResponseInterface
{
$this->log->callbackLog('支付回调'.json_encode($this->request->all()));
$this->getWechatData();
$this->checkWxCallBackOrder();
$message = new GoodOrderPayFinishProducer([
'order_sno' => $this->orderNo,
'pay_type' => self::PayType,
'callback_data' => $this->callbackData,
]);
$this->producer->produce($message);
// $this->checkCallBackOrder();
//
// Db::transaction(function (){
// $this->manageOrder();
//
// $this->manageWxOrder();
////
// $this->isCatering = $this->manageAddCateringLog();
// });
//
// //已经截单 自动退款
// if (!$this->isCatering) $this->joinRefundQueue($this->orderId,RefundCode::FULL_GOOD_REFUND,'已截单,系统自动退款');
//todo 发送订阅通知
// $this->sendGainCoinMsg();
//发送mq通知报表结算
// $this->sendShareExMq($this->orderInfo->mid,ShareExCode::RECHARGE_COIN, [
// 'order_id' => $this->orderInfo->id,
// 'count' => $this->rechargeCoin,
// ]);
return $this->returnSuccess();
}
/**
* @return ResponseInterface
* @throws ContainerExceptionInterface
* @throws InvalidParamsException
* @throws NotFoundExceptionInterface
*/
public function refundCallBackHandle(): ResponseInterface
{
$this->log->callbackLog('退款回调'.json_encode($this->request->all()));
$this->getWechatData();
$this->checkWxRefundCallBackOrder();
$message = new GoodOrderRefundFinishProducer([
'refund_order_sno' => $this->orderNo,
'pay_type' => self::PayType,
'callback_data' => $this->callbackData,
]);
$this->producer->produce($message);
// $this->checkRefundOrder();
//
// Db::transaction(function (){
// $this->manageRefundOrder();
//
// $this->manageOrderByRefund();
//
// $this->manageSubCateringLog();
//
// if ($this->orderInfo->coupin_id > 0) $this->rollbackCoupon(OrderCode::ORDER_TYPE_GOOD,$this->orderInfo);
// });
//
// $this->sendStockMq($this->orderInfo->id,$this->orderInfo->status);
return $this->returnSuccess();
}
/**
* @return void
*/
public function setNotify(): void
{
//返回的回调地址
$this->config['wechat']['default']['notify_url'] = config('system.api_url').'/common/wxPay/order/js/callBack';
}
/**
* @return void
*/
public function setRefundNotify(): void
{
//返回的退款回调地址
$this->config['wechat']['default']['notify_url'] = config('system.api_url').'/common/wxPay/order/js/refund/callBack';
}
}