kevin_zhangl 3 лет назад
Родитель
Сommit
7a0a1812b7

+ 17 - 0
backendApi/web/index.php

@@ -0,0 +1,17 @@
+<?php
+ini_set('display_errors', 'On');
+error_reporting(E_ALL);
+defined('YII_DEBUG') or define('YII_DEBUG', true);
+defined('YII_ENV') or define('YII_ENV', 'dev');
+
+require __DIR__ . '/../../vendor/autoload.php';
+require __DIR__ . '/../../vendor/yiisoft/yii2/Yii.php';
+require __DIR__ . '/../../common/config/bootstrap.php';
+require __DIR__ . '/../config/bootstrap.php';
+
+$config = yii\helpers\ArrayHelper::merge(
+    require __DIR__ . '/../../common/config/main.php',
+    require __DIR__ . '/../config/main.php'
+);
+
+(new yii\web\Application($config))->run();

+ 7 - 7
common/models/forms/ApproachOrderForm.php

@@ -124,7 +124,7 @@ class ApproachOrderForm extends Model
             // 管理员修改订单状态
             'adminStatus' => ['sn', 'status'],
             // 校验订单支付
-            'verifyPayStack' => ['sn', 'note'],
+            'verifyPayStack' => ['sn', 'note', 'status'],
             // 会员下单
             'userOrder' => ['type','addressId', 'payType','goodsId','goodsNum', 'note', 'payPassword'],
         ];
@@ -147,7 +147,7 @@ class ApproachOrderForm extends Model
         }
 
         if ($this->scenario == 'verifyPayStack'){
-            if ($this->_model['STATUS'] != \Yii::$app->params['orderStatus']['notPaid']['value']) {
+            if ($this->_model->STATUS != \Yii::$app->params['orderStatus']['notPaid']['value']) {
                 $this->addError('sn', '订单支付状态错误');
                 return false;
             }
@@ -225,8 +225,8 @@ class ApproachOrderForm extends Model
      * @param $attribute
      */
     public function isStatus($attribute){
-        if(!in_array($this->type, \Yii::$app->params['orderStatus'])){
-            $this->addError($attribute, '类型错误');
+        if($this->type && !in_array($this->type, \Yii::$app->params['orderStatus'])){
+            $this->addError($attribute, '订单状态类型错误');
             return ;
         }
         if ($this->scenario == 'adminStatus'){
@@ -295,13 +295,13 @@ class ApproachOrderForm extends Model
             // 更新准订单状态为已支付
             $this->_model->STATUS = $this->status;
             $this->_model->NOTE = json_encode($this->note);
-            $this->_model->PAY_AT = $this->note['paid_at'];
+            $this->_model->PAY_AT = Date::utcToTime($this->note['paid_at']);
             $this->_model->EMAIL = $this->note['email'];
             if (!$this->_model->save()) {
                 throw new Exception(Form::formatErrorsForApi($this->_model->getErrors()));
             }
             // 更新订单商品的支付Email
-            ApproachOrderGoods::updateAll(['EMAIL' => $this->email], 'ORDER_SN = :ORDER_SN', [':ORDER_SN' => $this->sn]);
+            ApproachOrderGoods::updateAll(['EMAIL' => $this->note['email']], 'ORDER_SN = :ORDER_SN', [':ORDER_SN' => $this->sn]);
 
             // 同步准订单到正式订单
             Order::insertOne($this->_model->toArray());
@@ -315,7 +315,7 @@ class ApproachOrderForm extends Model
             $transaction->commit();
         } catch (Exception $e) {
             $transaction->rollBack();
-            $this->addError('edit', $e->getMessage());
+            $this->addError('edit', $e->getFile() . '  ' . $e->getMessage());
             return null;
         }
 

+ 29 - 23
frontendApi/modules/v1/controllers/ShopController.php

@@ -182,40 +182,46 @@ class ShopController extends BaseController {
             $request = \Yii::$app->request->post();
             // TODO:支付webhook回调日志
 
-
-            $data = $request->data;
-            $status = $request->data->status ?? 'false';
+            $data = $request['data'];
+            $status = $request['data']['status'] ?? 'false';
             // 订单状态
             $orderStatus = ($status == 'success') ? \Yii::$app->params['orderStatus']['paid']['value'] : \Yii::$app->params['orderStatus']['failPaid']['value'];
 
-            $customFields = $request->data->metadata->custom_fields ?? [];
-            $oderSn = $customFields[0]->value ?? '';
+            $customFields = $data['metadata']['custom_fields'][0] ?? [];
+            $oderSn = $customFields['value'] ?? '';
 
             $formModel = new ApproachOrderForm();
-            $formModel['sn'] = $oderSn;
-            $formModel['status'] = $orderStatus;
-            $formModel['note'] = [
-                'id' => $data->id,
-                'domain' => $data->domain,
-                'status' => $data->status,
-                'reference' => $data->reference,
-                'amount' => $data->amount,
-                'created_at' => $data->created_at,
-                'paid_at' => $data->paid_at,
-                'channel' => $data->channel,
-                'currency' => $data->currency,
-                'ip_address' => $data->ip_address,
-                'metadata' => $data->metadata,
-                'customer' => $data->customer,
-                'email' => $data->customer->email ?? '',
+            $formModel->scenario = 'verifyPayStack';
+            $load = [
+                'sn' => $oderSn,
+                'scenario' => 'verifyPayStack',
+                'status' => $orderStatus,
+                'note' => [
+                    'id' => $data['id'],
+                    'domain' => $data['domain'],
+                    'status' => $data['status'],
+                    'reference' => $data['reference'],
+                    'amount' => $data['amount'],
+                    'created_at' => $data['created_at'],
+                    'paid_at' => $data['paid_at'],
+                    'channel' => $data['channel'],
+                    'currency' => $data['currency'],
+                    'ip_address' => $data['ip_address'],
+                    'metadata' => $data['metadata'],
+                    'customer' => $data['customer'],
+                    'email' => $data['customer']['email'] ?? '',
+                ],
             ];
 
-            if (parent::edit(ApproachOrderForm::class, 'PayStack pay Success', 'verifyPayStack', ['verifyPayStack'])) {
+            if ($formModel->load($load, '') && $order = $formModel->verifyPayStack()) {
+//                return static::notice($order);
                 return http_response_code(200);
+            } else {
+                return http_response_code(500);
             }
         }
 
-        return http_response_code(500);
+        return http_response_code(200);
     }
 
     /**