Explorar o código

Merge remote-tracking branch 'origin' into feature/theo-translate

# Conflicts:
#	frontendEle/src/views/shop/order.vue
theo %!s(int64=3) %!d(string=hai) anos
pai
achega
8805363c7d

+ 12 - 3
common/models/forms/ApproachOrderForm.php

@@ -123,7 +123,7 @@ class ApproachOrderForm extends Model
             // 管理员修改订单状态
             'adminStatus' => ['sn', 'status'],
             // 管理员修改订单状态
-            'verifyPayStack' => ['sn', 'remark'],
+            'verifyPayStack' => ['sn', 'remark', 'email'],
             // 会员下单
             'userOrder' => ['type','addressId', 'payType','goodsId','goodsNum', 'remark', 'payPassword'/*, 'email'*/],
         ];
@@ -273,7 +273,7 @@ class ApproachOrderForm extends Model
      * 校验PayStack支付,更新订单状态.同步到正式订单.
      * @throws Exception
      */
-    public function verifyPayStack()
+    public function verifyPayStack(): ?ApproachOrder
     {
         if (!$this->validate()) {
             return null;
@@ -295,13 +295,22 @@ class ApproachOrderForm extends Model
             $this->_model->STATUS = \Yii::$app->params['orderStatus']['paid']['value'];
             $this->_model->REMARK = json_encode($this->remark);
             $this->_model->PAY_AT = Date::nowTime();
+            $this->_model->EMAIL = $this->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]);
+
 
             // 同步准订单到正式订单
             Order::insertOne($this->_model->toArray());
-            OrderGoods::batchInsert(ApproachOrderGoods::findAllAsArray('ORDER_SN = :ORDER_SN', [':ORDER_SN' => $this->sn]));
+            // 同步准订单商品到正式订单商品
+            $approachOrderGoods = ApproachOrderGoods::findAllAsArray('ORDER_SN = :ORDER_SN', [':ORDER_SN' => $this->sn]);
+            foreach ($approachOrderGoods as &$approachOrderGood) {
+                $approachOrderGood['EMAIL'] = $this->email;
+            }
+            OrderGoods::batchInsert($approachOrderGoods);
 
             $transaction->commit();
         } catch (Exception $e) {

+ 14 - 2
frontendEle/src/views/shop/order.vue

@@ -154,6 +154,7 @@
                 :lastname="form.lastname"
                 :amount="form.amount * 100"
                 :email="form.email"
+                :metadata="form.metadata"
                 :currency="form.currency"
                 :paystackkey="form.publicKey"
                 :reference="reference"
@@ -198,7 +199,7 @@
                 category_type: '',
                 prefixSign: '₦',
                 unit: 'NGN',
-
+                sn: '',
                 visible: false,
                 payStackLoading: false,
                 form: {
@@ -209,6 +210,16 @@
                     email: userInfo.userEmail(),
                     amount: 0,  // kobo
                     orderSn: '',
+                    metadata: {
+                        cart_id: this.sn,
+                        custom_fields: [
+                            {
+                                "display_name": "orderSn",
+                                "variable_name": "orderSn",
+                                "value": this.sn
+                            },
+                        ]
+                    },
                 },
             }
         },
@@ -347,6 +358,7 @@
 
                             this.form.orderSn = response.SN
                             this.form.amount = this.cashSum
+                            this.form.metadata.custom_fields[0].value = response.SN
                             this.visible = true
                         }).catch(() => {
                             this.submitButtonStat = true
@@ -474,7 +486,7 @@
 
                 this.payStackLoading = true
                 // 支付成功,更新订单
-                return network.postData('shop/verify-order', { sn: this.form.orderSn, remark: response }).then(_ => {
+                return network.postData('shop/verify-order', { sn: this.form.orderSn, remark: response, email: this.form.email }).then(_ => {
                     this.$message({
                         message: 'Success!',
                         type: 'success'