|
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 nhuluc\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 Nhu Luc <[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
|
|
|
|