Преглед на файлове

feat(payment): 添加小程序环境配置支持

- 新增 ConfigHook 类处理支付配置钩子
- 在扩展配置中注册 ConfigHook 钩子
- 移除旧的静态小程序环境选项配置
- 动态生成支持的小程序环境复选框列表
- 为每个支付方式添加独立的环境支持配置项
- 使用 elCard 组件包装环境配置界面
- 支持开发版、体验版、正式版三种环境选择
runphp преди 4 месеца
родител
ревизия
f473d978ab
променени са 3 файла, в които са добавени 76 реда и са изтрити 33 реда
  1. 0 32
      config.php
  2. 3 1
      src/Extension.php
  3. 73 0
      src/Hook/ConfigHook.php

+ 0 - 32
config.php

@@ -12,22 +12,6 @@ $paymentOptionsParser = "[[FORM-CREATE-PREFIX-function (res, rule, api) {
     }));
 }-FORM-CREATE-SUFFIX]]";
 
-// 支持的小程序环境选项
-$miniProgramEnvironments = [
-    [
-        "value" => "develop",
-        "label" => "开发版"
-    ],
-    [
-        "value" => "trial",
-        "label" => "体验版"
-    ],
-    [
-        "value" => "release",
-        "label" => "正式版"
-    ]
-];
-
 // 支付配置项
 $paymentConfig = [
     [
@@ -61,22 +45,6 @@ $paymentConfig = [
         "hidden" => false,
         "_fc_drag_tag" => "checkbox"
     ],
-    [
-        "type" => "checkbox",
-        "field" => "supported_envs",
-        "title" => "支持的小程序环境",
-        "info" => "选择在此插件中支持的小程序环境",
-        "options" => $miniProgramEnvironments,
-        "\$required" => false,
-        "props" => [
-            "_optionType" => 1
-        ],
-        "_fc_id" => "id_supported_envs_checkbox",
-        "name" => "ref_supported_envs",
-        "display" => true,
-        "hidden" => false,
-        "_fc_drag_tag" => "checkbox"
-    ]
 ];
 
 return $paymentConfig;

+ 3 - 1
src/Extension.php

@@ -4,6 +4,7 @@ declare(strict_types=1);
 namespace SixShop\Payment;
 
 use SixShop\Core\ExtensionAbstract;
+use SixShop\Payment\Hook\ConfigHook;
 use SixShop\Payment\Hook\OrderHook;
 
 class Extension extends ExtensionAbstract
@@ -13,7 +14,8 @@ class Extension extends ExtensionAbstract
     public function getHooks(): array
     {
         return [
-            OrderHook::class
+            ConfigHook::class,
+            OrderHook::class,
         ];
     }
 

+ 73 - 0
src/Hook/ConfigHook.php

@@ -0,0 +1,73 @@
+<?php
+declare(strict_types=1);
+
+namespace SixShop\Payment\Hook;
+
+use SixShop\Core\Attribute\Hook;
+use SixShop\Payment\PaymentManager;
+use think\Collection;
+
+class ConfigHook
+{
+    public function __construct(private PaymentManager $paymentManager)
+    {
+    }
+
+    /**
+     * 支持小程序环境配置
+     */
+    #[Hook('after_read_extension_config_payment')]
+    public function onConfig(Collection $config): void
+    {
+        // 支持的小程序环境选项
+        $miniProgramEnvironments = [
+            [
+                "value" => "develop",
+                "label" => "开发版"
+            ],
+            [
+                "value" => "trial",
+                "label" => "体验版"
+            ],
+            [
+                "value" => "release",
+                "label" => "正式版"
+            ]
+        ];
+        $supportedEnvList = [];
+        foreach ($this->paymentManager->getAllPayment() as $payment) {
+            $supportedEnvList[] = [
+                "type" => "checkbox",
+                "field" => "supported_env_" . $payment->id,
+                "title" => $payment->name,
+                "info" => "选择在此插件中支持的小程序环境",
+                "options" => $miniProgramEnvironments,
+                "\$required" => false,
+                "props" => [
+                    "_optionType" => 1
+                ],
+                "_fc_id" => "id_supported_env_checkbox_" . $payment->id,
+                "name" => "ref_supported_env_" . $payment->id,
+                "display" => true,
+                "hidden" => false,
+                "_fc_drag_tag" => "checkbox"
+            ];
+        }
+        $config[] =
+            [
+                'type' => 'elCard',
+                'props' => [
+                    'header' => '支持的小程序环境'
+                ],
+                'style' => [
+                    'width' => '100%'
+                ],
+                'children' => $supportedEnvList,
+                '_fc_id' => 'id_F40hmie0awi6adc',
+                'name' => 'ref_Fps1mie0awi6aec',
+                'display' => true,
+                'hidden' => false,
+                '_fc_drag_tag' => 'elCard'
+            ];
+    }
+}