| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- namespace backend\modules\mall\services;
- use common\enums\PayTypeEnum;
- use common\models\common\PaymentTrade;
- use common\models\order\Order;
- use Yii;
- use common\enums\StatusEnum;
- use common\models\order\OrderExpress;
- /**
- * 订单
- * @package backend\modules\mall\services
- */
- class OrderService extends BaseService
- {
- /**
- * 管理员支付
- *
- * @param array $data
- * @return boolean
- */
- public function adminPay(array $data)
- {
- $db = Yii::$app->db->beginTransaction();
- try {
- $order_id = $data['id'];
- $order = Order::findOne($order_id);
- $trade = [
- 'mall_id' => $this->mall_id,
- 'user_id' => $order->user_id,
- 'out_trade_no' => PaymentTrade::createOutTradeNo(),
- 'pay_fee' => $order->pay_money,
- 'total_fee' => $order->goods_price,
- 'rand_fee' => 0, // 不需要记录
- 'title' => mb_convert_encoding(mb_substr('订单后台支付', 0, 32),'UTF-8'),
- 'return_url' => '',
- 'is_pay' => 1,
- 'pay_type' => PayTypeEnum::OFFLINE,
- ];
- //正则过滤除了汉字字母数字的其它字符
- $trade['title'] = preg_replace('#[^\x{4e00}-\x{9fa5}A-Za-z0-9]#u','',$trade['title']);
- $paymentTrade = new PaymentTrade();
- $paymentTrade->attributes = $trade;
- if (!$paymentTrade->save()) {
- throw new \Exception($paymentTrade->getErrorMessage());
- }
- $res = Order::pay($data, PayTypeEnum::OFFLINE, $paymentTrade->out_trade_no);
- if ($res === false) {
- throw new \Exception(Order::getStaticError());
- }
- $db->commit();
- } catch (\Exception $e) {
- $db->rollBack();
- return $this->error($e->getMessage());
- }
- return true;
- }
- /**
- * 当前express_no是否已经发货
- *
- * @param array $params
- *
- * @return bool
- */
- public function checkOrderExpressNo(array $params)
- {
- return OrderExpress::find()->where([
- 'order_id' => $params['id'],
- 'express_no' => $params['express_no'],
- 'status' => StatusEnum::ENABLED
- ])->exists();
- }
- }
|