| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- namespace addons\ElectronCoupon\common\logic\notify;
- use addons\ElectronCoupon\common\models\ElectronCouponGiveLogs;
- use addons\ElectronCoupon\common\models\ElectronCouponOrder;
- use addons\ElectronCoupon\common\models\ElectronCouponUserCoupon;
- use addons\ElectronCoupon\common\enums\ElectronCouponEnums;
- use common\traits\ErrorTrait;
- use yii\db\Exception;
- class Notify
- {
- use ErrorTrait;
- public function notify($order_info)
- {
- $tran = \Yii::$app->db->beginTransaction();
- try {
- $coupon_order = ElectronCouponOrder::getOne([
- ['order_no' => $order_info['order_no']]
- ]);
- if ($coupon_order->is_pay == ElectronCouponEnums::PAID) {
- throw new Exception('订单已支付 ' . $order_info['order_no']);
- }
- if ((float)$order_info['total_fee'] != (float)$coupon_order->price) {
- //throw new Exception('支付金额不正确 ' . $order_info['order_no']);
- }
- $update_pay_ststus = ElectronCouponOrder::setData([
- 'id' => $coupon_order->id,
- 'is_pay' => ElectronCouponEnums::PAID,
- 'pay_type' => $order_info['pay_type'],
- 'pay_time' => time(),
- 'mall_id' => $coupon_order->mall_id
- ]);
- if ($update_pay_ststus == false) {
- throw new Exception('订单更改支付状态失败 ' . $order_info['order_no'] . ElectronCouponOrder::getStaticError());
- }
- $user_coupon = ElectronCouponUserCoupon::getOne([
- ['id' => $coupon_order->user_e_coupon_id],
- ['user_id' => $coupon_order->user_id],
- ['mall_id' => $coupon_order->mall_id]
- ], true);
- if (!$user_coupon) {
- throw new Exception('找不到会员电子券 ' . $order_info['order_no']);
- }
- $update_user_counon = ElectronCouponUserCoupon::setData([
- 'id' => $user_coupon['id'],
- 'receive_amount' => -$coupon_order->number,
- 'active_amount' => $coupon_order->number,
- 'last_active_time' => time(),
- 'mall_id' => $coupon_order->mall_id
- ]);
- if ($update_user_counon == false) {
- throw new Exception('更改会员电子券激活数量失败 ' . $order_info['order_no'] . ElectronCouponUserCoupon::getStaticError());
- }
- //激活后
- $res = ElectronCouponGiveLogs::activeAfter($coupon_order['number'],$coupon_order['user_id'],$user_coupon['id'],time());
- if ($res == false) {
- throw new Exception(ElectronCouponGiveLogs::getStaticError());
- }
- $tran->commit();
- } catch (\Exception $e) {
- $tran->rollBack();
- \Yii::error('电子券激活订单支付回调:' . $e->getMessage());
- return false;
- }
- }
- }
|