BasePaymentClient::initDataSignature()
last analyzed

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 1
ccs 0
cts 0
cp 0
c 0
b 0
f 0
nc 1
1
<?php
2
/**
3
 * @link https://github.com/yiiviet/yii2-payment
4
 * @copyright Copyright (c) 2017 Yii Viet
5
 * @license [New BSD License](http://www.opensource.org/licenses/bsd-license.php)
6
 */
7
8
namespace yiiviet\payment;
9
10
use yii\base\NotSupportedException;
11
12
use vxm\gatewayclients\BaseClient;
13
14
/**
15
 * Lớp trừu tượng BasePaymentClient thực thi [[PaymentClientInterface]] hổ trợ cho việc xây dựng các lớp kế thừa đơn giản hóa
16
 * việc thực thi các phương thức trừu tượng. Nó được sử dụng hổ trợ các thuộc tính cung cấp cho việc tạo dữ liệu truy vấn
17
 * đến cổng thanh toán và cung cấp các thông tin để truy cập được cổng thanh toán.
18
 *
19
 * @property BasePaymentGateway|PaymentGatewayInterface $gateway
20
 *
21
 * @author Vuong Minh <[email protected]>
22
 * @since 1.0
23
 */
24
abstract class BasePaymentClient extends BaseClient implements PaymentClientInterface
25
{
26
27
    /**
28
     * @inheritdoc
29
     * @throws NotSupportedException
30
     */
31 24
    public function signature(string $data, string $type = null): string
32
    {
33 24
        if ($dataSignature = $this->initDataSignature($data, $type)) {
34 24
            return $dataSignature->generate();
35
        } else {
36
            throw new NotSupportedException("Signature data with type: `$type` is not supported!");
37
        }
38
    }
39
40
    /**
41
     * @inheritdoc
42
     * @throws NotSupportedException
43
     */
44 10
    public function validateSignature(string $data, string $expectSignature, string $type = null): bool
45
    {
46 10
        if ($dataSignature = $this->initDataSignature($data, $type)) {
47 10
            return $dataSignature->validate($expectSignature);
48
        } else {
49
            throw new NotSupportedException("Validate signature with type: `$type` is not supported!");
50
        }
51
    }
52
53
    /**
54
     * Phương thức hổ trợ khởi tạo đối tượng [[DataSignature]] dùng cho việc tạo chữ ký dữ liệu và kiểm tra
55
     * tính hợp lệ của chữ ký dữ liệu.
56
     *
57
     * @param string $data Dữ liệu muốn tạo hoặc kiểm tra tính hợp lệ.
58
     * @param string|null $type Loại chữ ký muốn tạo hoặc sử dụng để kiếm trả tính hợp lệ. Nếu không thiết lập
59
     * có nghĩa là sử dụng loại chữ ký mặc định của cổng thanh toán.
60
     * @return null|DataSignature Trả về NULL nếu như loại chữ ký không được hổ trợ và ngược lại là đối tượng [[DataSignature]].
61
     */
62
    abstract protected function initDataSignature(string $data, string $type = null): ?DataSignature;
63
64
65
}
66