CancelShortcut   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 30
c 0
b 0
f 0
dl 0
loc 57
rs 10
wmc 6

5 Methods

Rating   Name   Duplication   Size   Complexity  
A defaultPlugins() 0 3 1
A qraPosPlugins() 0 10 1
A webPlugins() 0 10 1
A qrCodePlugins() 0 10 1
A getPlugins() 0 9 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yansongda\Pay\Shortcut\Unipay;
6
7
use Yansongda\Artful\Contract\ShortcutInterface;
8
use Yansongda\Artful\Exception\InvalidParamsException;
9
use Yansongda\Artful\Plugin\AddPayloadBodyPlugin;
10
use Yansongda\Artful\Plugin\ParserPlugin;
11
use Yansongda\Pay\Exception\Exception;
12
use Yansongda\Pay\Plugin\Unipay\AddRadarPlugin;
13
use Yansongda\Pay\Plugin\Unipay\Open\AddPayloadSignaturePlugin;
14
use Yansongda\Pay\Plugin\Unipay\Open\Pay\QrCode\CancelPlugin as QrCodeCancelPlugin;
15
use Yansongda\Pay\Plugin\Unipay\Open\Pay\Web\CancelPlugin as webCancelPlugin;
16
use Yansongda\Pay\Plugin\Unipay\Open\StartPlugin;
17
use Yansongda\Pay\Plugin\Unipay\Open\VerifySignaturePlugin;
18
use Yansongda\Pay\Plugin\Unipay\Qra\AddPayloadSignaturePlugin as QraAddPayloadSignaturePlugin;
19
use Yansongda\Pay\Plugin\Unipay\Qra\Pos\CancelPlugin as QraPosCancelQueryPlugin;
20
use Yansongda\Pay\Plugin\Unipay\Qra\StartPlugin as QraStartPlugin;
21
use Yansongda\Pay\Plugin\Unipay\Qra\VerifySignaturePlugin as QraVerifySignaturePlugin;
22
use Yansongda\Supports\Str;
23
24
class CancelShortcut implements ShortcutInterface
25
{
26
    /**
27
     * @throws InvalidParamsException
28
     */
29
    public function getPlugins(array $params): array
30
    {
31
        $method = Str::camel($params['_action'] ?? 'default').'Plugins';
32
33
        if (method_exists($this, $method)) {
34
            return $this->{$method}();
35
        }
36
37
        throw new InvalidParamsException(Exception::PARAMS_SHORTCUT_ACTION_INVALID, "您所提供的 action 方法 [{$method}] 不支持,请参考文档或源码确认");
38
    }
39
40
    protected function defaultPlugins(): array
41
    {
42
        return $this->webPlugins();
43
    }
44
45
    protected function webPlugins(): array
46
    {
47
        return [
48
            StartPlugin::class,
49
            webCancelPlugin::class,
50
            AddPayloadSignaturePlugin::class,
51
            AddPayloadBodyPlugin::class,
52
            AddRadarPlugin::class,
53
            VerifySignaturePlugin::class,
54
            ParserPlugin::class,
55
        ];
56
    }
57
58
    protected function qrCodePlugins(): array
59
    {
60
        return [
61
            StartPlugin::class,
62
            QrCodeCancelPlugin::class,
63
            AddPayloadSignaturePlugin::class,
64
            AddPayloadBodyPlugin::class,
65
            AddRadarPlugin::class,
66
            VerifySignaturePlugin::class,
67
            ParserPlugin::class,
68
        ];
69
    }
70
71
    protected function qraPosPlugins(): array
72
    {
73
        return [
74
            QraStartPlugin::class,
75
            QraPosCancelQueryPlugin::class,
76
            QraAddPayloadSignaturePlugin::class,
77
            AddPayloadBodyPlugin::class,
78
            AddRadarPlugin::class,
79
            QraVerifySignaturePlugin::class,
80
            ParserPlugin::class,
81
        ];
82
    }
83
}
84