ResponseData::getMessage()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 0
cts 4
cp 0
rs 10
c 0
b 0
f 0
cc 2
nc 2
nop 0
crap 6
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\nganluong;
9
10
use vxm\gatewayclients\ResponseData as BaseResponseData;
11
12
/**
13
 * Lớp ResponseData hổ trợ việc cung cấp, tổng hợp nội dung dữ liệu nhận được từ [[request()]] của [[PaymentGateway]].
14
 *
15
 * @method PaymentClient getClient() đối tượng client đã dùng để thực thi request.
16
 *
17
 * @property PaymentClient $client đối tượng client đã dùng để thực thi request.
18
 * @property bool $isOk trạng thái phản hồi từ Ngân Lượng `TRUE` thành công và ngược lại.
19
 * @property string $message chuỗi thông báo trạng thái convert từ `error_code`.
20
 * @property string $error_code mã lỗi.
21
 * @property string $token của đơn hàng, chỉ tồn tại khi `isOk` là TRUE.
22
 * @property string $checkout_url đường dẫn bạn sẽ redirect khách hàng để thực hiện thanh toán, chỉ tồn tại khi `isOk` là TRUE.
23
 * @property string $description mô tả, chỉ tồn tại khi `isOk` là FALSE.
24
 * @property string $auth_url đường dẫn thực thi xác minh, chỉ tồn tại với phương thức seamless và `isOk` là TRUE.
25
 * @property string $auth_site nguồn thực thi xác minh, chỉ tồn tại với phương thức seamless và `isOk` là TRUE.
26
 * @property mixed $order_code mã giao dịch tại hệ thống, chỉ tồn tại khi thực thi `queryDR`.
27
 * @property double $total_amount số tiền đơn hàng, chỉ tồn tại khi thực thi `queryDR`.
28
 * @property string $payment_method phương thức thanh toán, chỉ tồn tại khi thực thi `queryDR`.
29
 * @property string $bank_code mã ngân hàng, chỉ tồn tại khi thực thi `queryDR`.
30
 * @property string $payment_type hình thức thanh toán `1` là trực tiếp, `2` là tạm giữ, chỉ tồn tại khi thực thi `queryDR`.
31
 * @property string $order_description thông tin đơn hàng, chỉ tồn tại khi thực thi `queryDR`.
32
 * @property double $tax_amount tiền thuế, chỉ tồn tại khi thực thi `queryDR`.
33
 * @property double $discount_amount tiền giảm giá, chỉ tồn tại khi thực thi `queryDR`.
34
 * @property double $fee_shipping phí ship, chỉ tồn tại khi thực thi `queryDR`.
35
 * @property string $return_url đường dẫn trả về khi thanh toán thành công, chỉ tồn tại khi thực thi `queryDR`.
36
 * @property string $cancel_url đường dẫn trả về khi hủy thành công, chỉ tồn tại khi thực thi `queryDR`.
37
 * @property string $notify_url đường dẫn Ngân Lượng gọi về khi khách thanh toán thành công, chỉ tồn tại khi thực thi `queryDR`.
38
 * @property int $time_limit số phút còn lại để thực thi giao dịch, chỉ tồn tại khi thực thi `queryDR`.
39
 * @property string $buyer_fullname tên người mua, chỉ tồn tại khi thực thi `queryDR`.
40
 * @property string $buyer_email email người mua, chỉ tồn tại khi thực thi `queryDR`.
41
 * @property string $buyer_mobile số điện thoại người mua, chỉ tồn tại khi thực thi `queryDR`.
42
 * @property string $buyer_address địa chỉ người mua, chỉ tồn tại khi thực thi `queryDR`.
43
 * @property string $affiliate_code mã đối tác của Ngân Lượng, chỉ tồn tại khi thực thi `queryDR`.
44
 * @property string $transaction_status trạng thái giao dịch, chỉ tồn tại khi thực thi `queryDR`.
45
 * @property string $transaction_id mã giao dịch tại Ngân Lượng, chỉ tồn tại khi thực thi `queryDR`.
46
 *
47
 * @author Vuong Minh <[email protected]>
48
 * @since 1.0
49
 */
50
class ResponseData extends BaseResponseData
51
{
52
53
    /**
54
     * Mảng tổng hợp các message mà Ngân Lượng sẽ trả về.
55
     *
56
     * @var array
57
     */
58
    public static $responseMessages = [
59
        '00' => 'Thành công',
60
        '99' => 'Lỗi chưa xác minh',
61
        '06' => 'Mã merchant không tồn tại hoặc bị khóa',
62
        '02' => 'Địa chỉ IP truy cập bị từ chối',
63
        '03' => 'Mã checksum không chính xác, truy cập bị từ chối',
64
        '04' => 'Tên hàm API do merchant gọi tới không hợp lệ (không tồn tại)',
65
        '05' => 'Sai version của API',
66
        '07' => 'Sai mật khẩu của merchant',
67
        '08' => 'Địa chỉ email tài khoản nhận tiền không tồn tại',
68
        '09' => 'Tài khoản nhận tiền đang bị phong tỏa giao dịch',
69
        '10' => 'Mã đơn hàng không hợp lệ',
70
        '11' => 'Số tiền giao dịch lớn hơn hoặc nhỏ hơn quy định',
71
        '12' => 'Loại tiền tệ không hợp lệ',
72
        '29' => 'Token không tồn tại',
73
        '80' => 'Không thêm được đơn hàng',
74
        '81' => 'Đơn hàng chưa được thanh toán',
75
        '110' => 'Địa chỉ email tài khoản nhận tiền không phải email chính',
76
        '111' => 'Tài khoản nhận tiền đang bị khóa',
77
        '113' => 'Tài khoản nhận tiền chưa cấu hình là người bán nội dung số',
78
        '114' => 'Giao dịch đang thực hiện, chưa kết thúc',
79
        '115' => 'Giao dịch bị hủy',
80
        '118' => 'tax_amount không hợp lệ',
81
        '119' => 'discount_amount không hợp lệ',
82
        '120' => 'fee_shipping không hợp lệ',
83
        '121' => 'return_url không hợp lệ',
84
        '122' => 'cancel_url không hợp lệ',
85
        '123' => 'items không hợp lệ',
86
        '124' => 'transaction_info không hợp lệ',
87
        '125' => 'quantity không hợp lệ',
88
        '126' => 'order_description không hợp lệ',
89
        '127' => 'affiliate_code không hợp lệ',
90
        '128' => 'time_limit không hợp lệ',
91
        '129' => 'buyer_fullname không hợp lệ',
92
        '130' => 'buyer_email không hợp lệ',
93
        '131' => 'buyer_mobile không hợp lệ',
94
        '132' => 'buyer_address không hợp lệ',
95
        '133' => 'total_item không hợp lệ',
96
        '134' => 'payment_method, bank_code không hợp lệ',
97
        '135' => 'Lỗi kết nối tới hệ thống ngân hàng',
98
        '140' => 'Đơn hàng không hỗ trợ thanh toán trả góp'
99
    ];
100
101
    /**
102
     * @inheritdoc
103
     */
104 3
    public function getIsOk(): bool
105
    {
106 3
        if (isset($this['error_code'])) {
107 3
            return $this['error_code'] === PaymentGateway::TRANSACTION_STATUS_SUCCESS;
108
        } else {
109
            return false;
110
        }
111
    }
112
113
    /**
114
     * Phương thức hổ trợ lấy câu thông báo `message` nhận từ Ngân Lượng.
115
     *
116
     * @return null|string Trả về NULL nếu như dữ liệu Ngân Lượng gửi về không tồn tại `error_code`,
117
     * và ngược lại sẽ là câu thông báo dịch từ `error_code`.
118
     */
119
    public function getMessage(): ?string
120
    {
121
        if (isset($this['error_code'])) {
122
            return static::$responseMessages[$this['error_code']];
123
        } else {
124
            return null;
125
        }
126
    }
127
}
128