CancelShortcut::defaultPlugins()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yansongda\Pay\Shortcut\Alipay;
6
7
use Yansongda\Artful\Contract\ShortcutInterface;
8
use Yansongda\Artful\Exception\InvalidParamsException;
9
use Yansongda\Artful\Plugin\ParserPlugin;
10
use Yansongda\Pay\Exception\Exception;
11
use Yansongda\Pay\Plugin\Alipay\V2\AddPayloadSignaturePlugin;
12
use Yansongda\Pay\Plugin\Alipay\V2\AddRadarPlugin;
13
use Yansongda\Pay\Plugin\Alipay\V2\FormatPayloadBizContentPlugin;
14
use Yansongda\Pay\Plugin\Alipay\V2\Pay\Agreement\Pay\CancelPlugin as AgreementCancelPlugin;
15
use Yansongda\Pay\Plugin\Alipay\V2\Pay\Authorization\Auth\CancelPlugin as AuthorizationCancelPlugin;
16
use Yansongda\Pay\Plugin\Alipay\V2\Pay\Mini\CancelPlugin as MiniCancelPlugin;
17
use Yansongda\Pay\Plugin\Alipay\V2\Pay\Pos\CancelPlugin as PosCancelPlugin;
18
use Yansongda\Pay\Plugin\Alipay\V2\Pay\Scan\CancelPlugin as ScanCancelPlugin;
19
use Yansongda\Pay\Plugin\Alipay\V2\ResponsePlugin;
20
use Yansongda\Pay\Plugin\Alipay\V2\StartPlugin;
21
use Yansongda\Pay\Plugin\Alipay\V2\VerifySignaturePlugin;
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->posPlugins();
43
    }
44
45
    protected function agreementPlugins(): array
46
    {
47
        return [
48
            StartPlugin::class,
49
            AgreementCancelPlugin::class,
50
            FormatPayloadBizContentPlugin::class,
51
            AddPayloadSignaturePlugin::class,
52
            AddRadarPlugin::class,
53
            VerifySignaturePlugin::class,
54
            ResponsePlugin::class,
55
            ParserPlugin::class,
56
        ];
57
    }
58
59
    protected function authorizationPlugins(): array
60
    {
61
        return [
62
            StartPlugin::class,
63
            AuthorizationCancelPlugin::class,
64
            FormatPayloadBizContentPlugin::class,
65
            AddPayloadSignaturePlugin::class,
66
            AddRadarPlugin::class,
67
            VerifySignaturePlugin::class,
68
            ResponsePlugin::class,
69
            ParserPlugin::class,
70
        ];
71
    }
72
73
    protected function miniPlugins(): array
74
    {
75
        return [
76
            StartPlugin::class,
77
            MiniCancelPlugin::class,
78
            FormatPayloadBizContentPlugin::class,
79
            AddPayloadSignaturePlugin::class,
80
            AddRadarPlugin::class,
81
            VerifySignaturePlugin::class,
82
            ResponsePlugin::class,
83
            ParserPlugin::class,
84
        ];
85
    }
86
87
    protected function posPlugins(): array
88
    {
89
        return [
90
            StartPlugin::class,
91
            PosCancelPlugin::class,
92
            FormatPayloadBizContentPlugin::class,
93
            AddPayloadSignaturePlugin::class,
94
            AddRadarPlugin::class,
95
            VerifySignaturePlugin::class,
96
            ResponsePlugin::class,
97
            ParserPlugin::class,
98
        ];
99
    }
100
101
    protected function scanPlugins(): array
102
    {
103
        return [
104
            StartPlugin::class,
105
            ScanCancelPlugin::class,
106
            FormatPayloadBizContentPlugin::class,
107
            AddPayloadSignaturePlugin::class,
108
            AddRadarPlugin::class,
109
            VerifySignaturePlugin::class,
110
            ResponsePlugin::class,
111
            ParserPlugin::class,
112
        ];
113
    }
114
}
115