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
|
|
|
|