AddonsPayNotify.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace common\logic\notify;
  3. use common\enums\OrderStatusEnum;
  4. use common\enums\PayTypeEnum;
  5. use common\enums\platform\PlatformEnum;
  6. use common\enums\StatusEnum;
  7. use common\listeners\admin\order\AddonsPaidListener;
  8. use common\models\addons\AddonsOrder;
  9. use common\models\platform\PlatformOrder;
  10. use common\traits\ErrorTrait;
  11. use Exception;
  12. /**
  13. * Class Notify
  14. * @Author: hua
  15. * @DateTime: 2021/10/18 9:39
  16. * @Copyright: copyright (c) 2021 广东七件事集团
  17. * @package common\logic\notify
  18. */
  19. class AddonsPayNotify
  20. {
  21. use ErrorTrait;
  22. /**
  23. * @Author: hua
  24. * @DateTime: 2021/10/18 9:57
  25. * @Copyright: copyright (c) 2021 广东七件事集团
  26. * @param $order_info
  27. * @return bool
  28. */
  29. public function notify($order_info)
  30. {
  31. try {
  32. $order = AddonsOrder::findOne(['order_no' => $order_info['order_no']]);
  33. if (empty($order)) throw new Exception('暂无此应用付费订单');
  34. $time = time();
  35. $order->order_status = OrderStatusEnum::ACCOMPLISH;
  36. $order->pay_status = $order_info['is_pay'];
  37. $order->payment_type = $order_info['pay_type'];
  38. $order->pay_time = $time;
  39. if (!$order->save()) throw new \yii\db\Exception($order->getErrorMessage());
  40. // 修改订单总表
  41. $platform_order = PlatformOrder::findOne(['order_id' => $order->id, 'from_type' => PlatformEnum::FROM_TYPE_ADDONS_PAY]);
  42. $platform_order->order_status = OrderStatusEnum::ACCOMPLISH;
  43. $platform_order->pay_status = StatusEnum::ENABLED;
  44. $platform_order->payment_type = $order_info['pay_type'];
  45. $platform_order->pay_time = $time;
  46. $platform_order->settlement_status = StatusEnum::ENABLED;
  47. if (!$platform_order->save()) throw new \yii\db\Exception($platform_order->getErrorMessage());
  48. // 订单支付完成处理后续逻辑
  49. $res = AddonsPaidListener::async_handle(['id' => $order->id]);
  50. if ($res == false) throw new \Exception(AddonsPaidListener::getStaticError());
  51. return true;
  52. } catch (Exception $e) {
  53. echo $e->getMessage();
  54. $this->setError($e->getMessage());
  55. return false;
  56. }
  57. }
  58. }