| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\client\models\v1;
- use app\models\AccountLog;
- use app\models\Level;
- use app\models\MemberUpgradeRecord;
- use app\models\Option;
- use app\models\Recharge;
- use app\models\ReOrder;
- use app\models\StoreAliMini;
- use app\models\Order;
- use app\models\RcCommissionLog;
- use app\models\Share;
- use app\models\User;
- use app\modules\admin\models\AlipayThirdForm;
- use app\modules\client\models\ApiModel;
- use app\modules\client\models\v1\order\OrderPayDataForm;
- //use app\plugins\scanCodePay\models\Order;
- use app\utils\Alipay\Alipay;
- use app\utils\Alipay\AlipayProfit;
- use app\utils\Alipay\alipaySdk\aop\request\AlipaySystemOauthTokenRequest;
- use app\utils\OrderNo;
- use app\utils\Wechat\WechatNewPay;
- use app\utils\Wechat\WechatPay;
- use EasyWeChat\Factory;
- use Overtrue\Socialite\SocialiteManager;
- use yii\helpers\Json;
- use app\models\Store;
- use app\models\UserShareLog;
- use app\models\UserShareMoney;
- use app\utils\Adapay\Adapay;
- use app\utils\Emoji;
- use yii\helpers\ArrayHelper;
- use yii\helpers\VarDumper;
- /**
- * @property User $user
- * @property ReOrder $order
- */
- class RechargeSubmitForm extends ApiModel
- {
- public $store_id;
- public $session_key;
- public $recharge_id;
- public $pay_price;
- public $send_price;
- public $send_integral;
- public $pay_type;
- public $_from;
- public $assign_member;
- public $level_up;
- /* @var Factory $wechatPay */
- public $wechatPay;
- public $order;
- public $user;
- public function rules()
- {
- return [
- [['pay_price', 'pay_type'], 'required'],
- [['send_price', 'send_integral', 'level_up', 'recharge_id'], 'number'],
- [['_from', 'assign_member'], 'string'],
- [['pay_type'], 'in', 'range' => [1, 4, Order::PAY_TYPE_WX_B2B, Order::PAY_TYPE_ADAPAY_WX, Order::PAY_TYPE_ADAPAY_ALIPAY, Order::PAY_TYPE_ADAPAY_QUICKPAY_FRONTPAY, Order::PAY_TYPE_HUIFU_V2_JSPAY_WX]],
- [['_from'], 'in', 'range' => ['app', 'mini', 'h5', 'official']],
- [['session_key'], 'safe'],
- ];
- }
- public function save()
- {
- $this->wechatPay = self::getWechatPay();
- if (!$this->validate()) {
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
- }
- $order = new ReOrder();
- $order->store_id = $this->store_id;
- $order->user_id = $this->user->id;
- if ($this->send_price != 0 || $this->send_integral != 0) {
- $exists = Recharge::find()->where([
- 'store_id' => $this->store_id, 'pay_price' => $this->pay_price, 'send_price' => $this->send_price, 'send_integral' => $this->send_integral, 'is_delete' => 0
- ])->exists();
- if (!$exists) {
- return [
- 'code' => 1,
- 'msg' => '充值失败,请重新充值'
- ];
- }
- }
- // TODO 判断用户等级是否可以充值
- if (!empty($this->assign_member)) {
- $condition = json_decode($this->assign_member, true);
- $numeric_array = array_map('intval', $condition);
- $levelType = Level::find()->where(['store_id' => get_store_id(), 'is_delete' => Level::NOT_DELETE])->andWhere(['level' => $numeric_array])->asArray()->all();
- $user = User::findOne(get_user_id());
- if (in_array(0, $numeric_array)) {
- } else if (isset($user->level) && in_array($user->level, $numeric_array)) {
- } else {
- $names = ArrayHelper::getColumn(
- $levelType,
- function ($item) {
- return is_array($item['name']) ? implode(', ', $item['name']) : $item['name'];
- }
- );
- $levelNames = implode(', ', $names);
- if (!empty($levelNames)) {
- return [
- 'code' => 1,
- 'msg' => "仅限 {$levelNames} 购买"
- ];
- }
- }
- }
- // 是否是平台小程序订单
- if (is_platform()) {
- $order->is_platform = 1;
- }
- $order->pay_price = $this->pay_price;
- $order->send_price = $this->send_price;
- $order->send_integral = $this->send_integral;
- $order->order_no = OrderNo::getOrderNo(OrderNo::ORDER_RECHARGE);
- $order->is_pay = 0;
- $order->pay_type = $this->pay_type;
- $order->is_delete = 0;
- $order->created_at = time();
- if (!empty($this->level_up) && !empty($this->recharge_id)) {
- $order->recharge_id = $this->recharge_id;
- $order->level_up = $this->level_up;
- }
- // 供应链系统下单时是否使用平台商户号,1使用,0未使用
- // if (\Yii::$app->prod_is_dandianpu() && !Store::hasIncoming($this->store_id)) {
- // $order->is_use_platform_mch = 1;
- // }
- if ($order->save()) {
- $this->order = $order;
- $body = "充值";
- if ($this->pay_type == 1) {
- if ($this->_from == OrderPayDataForm::PAY_FROM_APP) {
- $order->order_origin = Order::ORDER_SOURCE_APP;
- $order->save();
- if (\Yii::$app->prod_is_dandianpu() && !Store::hasIncoming($this->store_id) && self_mini() === false) {
- $result = WechatPay::orderUnify($order,OrderNo::ORDER_RECHARGE, $body, 0, true);
- } else {
- if (is_profit_pay()) {
- $result = WechatNewPay::orderUnify($order,OrderNo::ORDER_RECHARGE, $body, 0, true);
- } else {
- $result = WechatPay::orderUnify($order,OrderNo::ORDER_RECHARGE, $body, 0, true);
- }
- }
- } else {
- $is_h5 = false;
- if (is_h5()) {
- $is_h5 = true;
- }
- $is_mp = false;
- $order->order_origin = $is_h5 ? Order::ORDER_SOURCE_WEB : Order::ORDER_SOURCE_MINI;
- if ($this->_from == OrderPayDataForm::PAY_FROM_OFFICIAL) {
- $order->order_origin = Order::ORDER_SOURCE_MP;
- $is_h5 = false;
- $is_mp = true;
- }
- $order->save();
- if (\Yii::$app->prod_is_dandianpu() && !Store::hasIncoming($this->store_id) && self_mini() === false) {
- $result = WechatPay::orderUnify($order,OrderNo::ORDER_RECHARGE, $body, 0, false, 0, $is_h5, $is_mp);
- } else {
- if (is_profit_pay()) {
- $result = WechatNewPay::orderUnify($order,OrderNo::ORDER_RECHARGE, $body, 0, false, 0, $is_h5, $is_mp);
- } else {
- $result = WechatPay::orderUnify($order,OrderNo::ORDER_RECHARGE, $body, 0, false, 0, $is_h5, $is_mp);
- }
- }
- }
- if (isset($result['code']) && $result['code'] == 1) {
- return $result;
- }
- return [
- 'code' => 0,
- 'msg' => 'success',
- 'data' => (object)$result['data'],
- 'res' => $result['res'],
- 'body' => $body,
- ];
- } elseif (in_array($this->pay_type, [Order::PAY_TYPE_WX_B2B])) {
- $result = \app\modules\admin\models\UserAuditForm::pay($this->session_key, $order,OrderNo::ORDER_RECHARGE, $body);
- return $result;
- } elseif (in_array($this->pay_type, [Order::PAY_TYPE_ADAPAY_WX, Order::PAY_TYPE_ADAPAY_ALIPAY])) {
- $result = Adapay::create($this->pay_type, $order,OrderNo::ORDER_RECHARGE, $body, 0, false, 0, 0, is_h5());
- return $result;
- } elseif (in_array($this->pay_type, [Order::PAY_TYPE_ADAPAY_QUICKPAY_FRONTPAY, Order::PAY_TYPE_HUIFU_V2_JSPAY_WX])) {
- $result = \app\utils\Adapay\AdapayV2::create($this->pay_type, $order,OrderNo::ORDER_RECHARGE, $body, 0, false, 0, 0, is_h5());
- return $result;
- }elseif ($this->pay_type == 4) {
- $user = get_user();
- if ($this->_from == 'mini') {
- if (\Yii::$app->prod_is_dandianpu() && !Store::hasIncoming($this->order->store_id) && self_mini() === false) {
- $result = Alipay::mini($this->order, '充值', $user, '', '', 0, 0, 0);
- } else {
- if (is_profit_pay('ali')) {
- $result = AlipayProfit::mini($order, '充值', $user, '', '', false, 0, 0, 0);
- } else {
- $result = Alipay::mini($order, '充值', $user, '', '', 0, 0, 0);
- }
- }
- if (isset($result['code']) && $result['code'] == 1) {
- return $result;
- }
- if (isset($result['data'])) {
- $result['data'] = array_merge($result['data'], [
- 'is_finish' => 1
- ]);
- }
- return $result;
- } else if ($this->_from == 'h5') {
- if (\Yii::$app->prod_is_dandianpu() && !Store::hasIncoming($this->order->store_id, 'alipay', is_h5())) {
- $result = Alipay::wap($this->order,'充值', 'user/balance/recharge');
- } else {
- if (is_profit_pay()) {
- $result = AlipayProfit::wap($this->order, '充值', 'user/balance/recharge');
- } else {
- $result = Alipay::wap($this->order, '充值', 'user/balance/recharge');
- }
- }
- if($result['code']){
- return $result;
- }
- return [
- 'code' => 0,
- 'msg' => 'success',
- 'data' => $result
- ];
- } else {
- if (is_profit_pay('ali')) {
- $result = AlipayProfit::app($this->order, '充值', $user, '', 0);
- } else {
- $result = Alipay::app($this->order, '充值', $user, '', 0);
- }
- if (isset($result['code']) && $result['code'] == 1) {
- return $result;
- }
- return [
- 'code' => 0,
- 'msg' => 'success',
- 'data' => $result,
- ];
- }
- }
- } else {
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
- }
- }
- }
|