forked from orangedata-official/PHP-OrangeData-official
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample.php
276 lines (267 loc) · 20.4 KB
/
example.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
<?php
/**
* Пример для библиотеки OrangeDataClient PHP version 2.1.1
* Библиотека корректно работает с версией PHP: 5.6.6+
*/
/**
* create_order(a, b, c, d, e*, f*) - Создание нового чека
* Параметры:
* a ($id) - Идентификатор документа (Строка от 1 до 32 символов)
* b ($type) - Признак расчета (Число от 1 до 4):
* 1 - Приход
* 2 - Возврат прихода
* 3 - Расход
* 4 - Возврат расхода
* с ($customerContact) - Телефон или электронный адрес покупателя (Строка от 1 до 64 символов)
* d ($taxationSystem) - Система налогообложения (Число от 0 до 5):
* 0 – Общая, ОСН
* 1 – Упрощенная доход, УСН доход
* 2 – Упрощенная доход минус расход, УСН доход - расход
* 3 – Единый налог на вмененный доход, ЕНВД
* 4 – Единый сельскохозяйственный налог, ЕСН
* 5 – Патентная система налогообложения, Патент
* e* ($group) - Группа устройств, с помощью которых будет пробит чек (Строка от 1 до 32 символов или null)
* f* ($key) - Название ключа который должен быть использован для проверки подпись (Строка от 1 до 32 символов либо null)
* e*, f* - опциональные параметры
*
* Пример запроса:
* create_order('2234', 1, '[email protected]', 5);
* create_order('2234', 1, '[email protected]', 5, 'SimpleGroup')
* create_order('2234', 1, '[email protected]', 5, 'SimpleGroup', 'key1234')
* create_order('2234', 1, '[email protected]', 5, null, 'key1234')
*/
/**
* add_position_to_order(a, b, c, d, e*, f*) - Добавление позиций в чек
* Параметры:
* a ($quantity) - Количество предмета расчета (Десятичное число с точностью до 6 символов после точки*)
* b ($price) - Цена за единицу предмета расчета с учетом скидок и наценок (Десятичное число с точностью до 2 символов после точки*)
* c ($tax) - Система налогообложения (Число от 1 до 6):
* 1 – ставка НДС 18%
* 2 – ставка НДС 10%
* 3 – ставка НДС расч. 18/118
* 4 – ставка НДС расч. 10/110
* 5 – ставка НДС 0%
* 6 – НДС не облагается
* d ($text) - Наименование предмета расчета (Строка до 128 символов)
* e* ($paymentMethodType) - Признак способа расчета (Число от 1 до 7 или null. Если передано null, то будет отправлено значение 4):
* 1 – Предоплата 100%
* 2 – Частичная предоплата
* 3 – Аванс
* 4 – Полный расчет
* 5 – Частичный расчет и кредит
* 6 – Передача в кредит
* 7 – оплата кредита
* f* ($paymentSubjectType) - Признак предмета расчета (Число от 1 до 13 или null. Если передано null, то будет отправлено значение 1):
* 1 – Товар
* 2 – Подакцизный товар
* 3 – Работа
* 4 – Услуга
* 5 – Ставка азартной игры
* 6 – Выигрыш азартной игры
* 7 – Лотерейный билет
* 8 – Выигрыш лотереи
* 9 – Предоставление РИД
* 10 – Платеж
* 11 – Агентское вознаграждение
* 12 – Составной предмет расчета
* 13 – Иной предмет расчета
* e*, f* - опциональные параметры
*
* Примеры запроса:
* Полный запрос (рекомендуется):
* add_position_to_order(6, 200, '[email protected]', 2, 2, 10);
*
* Запрос с пропуском поля 'e*':
* add_postion_to order(6, 200, '[email protected]', 2, null, 10); (Поле e* = 4)
*
* Запрос с пропуском полей 'e*' и 'f*':
* add_position_to_order(6, 200, '[email protected]', 2); (Поле e* = 4, поле f* = 1)
*/
/**
* add_payment_to_order(a, b) - Добавление позиций в чек
* Параметры:
* a ($type) - Тип оплаты (Число от 1 до 16):
* 1 – сумма по чеку наличными, 1031
* 2 – сумма по чеку электронными, 1081
* 14 – сумма по чеку предоплатой (зачетом аванса и (или) предыдущих платежей), 1215
* 15 – сумма по чеку постоплатой (в кредит), 1216
* 16 – сумма по чеку (БСО) встречным предоставлением, 1217
* b ($amount) - Сумма оплаты (Десятичное число с точностью до 2 символов после точки*)
*
* Примеры запроса:
* add_payment_to_order(1, 2.7);
*/
/**
* send_order() - Отправка чека на обработку
*/
/**
* add_agent_to_order(a, b, c, d, e, f, g, h, i) - Добавление агента
* Параметры:
* a ($agentType) - Признак агента, 1057. Битовое поле, где номер бита обозначает, что оказывающий услугу покупателю (клиенту) пользователь является (Число от 1 до 127):
* 0 – банковский платежный агент
* 1 – банковский платежный субагент
* 2 – платежный агент
* 3 – платежный субагент
* 4 – поверенный
* 5 – комиссионер
* 6 – иной агент
* b ($payTOP) - Телефон оператора перевода, 1075 (Массив строк длиной от 1 до 19 символов, формат +{Ц})
* c ($payAO) - Операция платежного агента, 1044 (Строка длиной от 1 до 24 символов)
* d ($payAPN) - Телефон платежного агента, 1073 (Массив строк длиной от 1 до 19 символов, формат +{Ц})
* e ($payOPN) - Телефон оператора по приему платежей, 1074 (Массив строк длиной от 1 до 19 символов, формат +{Ц})
* f ($payON) - Наименование оператора перевода, 1026 (Строка длиной от 1 до 64 символов)
* g ($payOA) - Адрес оператора перевода, 1005 (Строка длиной от 1 до 244 символов)
* h ($payOpINN) - ИНН оператора перевода, 1016 (Строка длиной от 10 до 12 символов, формат ЦЦЦЦЦЦЦЦЦЦ)
* i ($supPN) - Телефон поставщика, 1171 (Массив строк длиной от 1 до 19 символов, формат +{Ц})
*
* Примеры запроса:
* add_agent_to_order(127, ['+79998887766', '+76667778899'], 'Operation', ['+79998887766'], ['+79998887766'], 'Name', 'ulitsa Adress, dom 7' , 3123011520, ['+79998887766', '+76667778899'])
*/
/**
* add_user_attribute(a, b) - Добавление дополнительного реквизита пользователя, 1084
* Параметры:
* a ($name) - Наименование дополнительного реквизита пользователя, 1085 (Строка от 1 до 64 символов)
* b ($value) - Значение дополнительного реквизита пользователя, 1086 (Строка от 1 до 175 символов)
*
* Примеры запроса:
* add_user_attribute('Любимая цитата', 'В здоровом теле здоровый дух, этот лозунг еще не потух!')
*/
/**
* get_order_status(a) - Проверка состояния чека
* Параметры:
* a ($id) - Идентификатор документа (Строка от 1 до 32 символов)
*
* Пример запроса:
* get_order_status(435621);
*/
/**
* create_correction(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) - Создание чека-коррекции
* Параметры:
* a ($id) - Идентификатор документа (Строка от 1 до 32 символов)
* b ($correctionType) - 1173, тип коррекции (Число):
* 0 - Самостоятельно
* 1 - По предписанию
* c ($type) - Признак расчета, 1054 (Число):
* 1 - Приход
* 3 - Расход
* d ($description) - 1177, описание коррекции (Строка от 1 до 244 символов)
* e ($causeDocumentDate) - 1178, дата документа основания для коррекции В данном реквизите время всегда указывать, как 00:00:00 (Время в виде строки в формате ISO8601)
* f ($causeDocumentNumber) - 1179, номер документа основания для коррекции (Строка от 1 до 32 символов)
* g ($totalSum) - 1020, сумма расчета, указанного в чеке (БСО) (Десятичное число с точностью до 2 символов после точки)
* h ($cashSum) - 1031, сумма по чеку (БСО) наличными (Десятичное число с точностью до 2 символов после точки)
* i ($eCashSum) - 1081, сумма по чеку (БСО) электронными (Десятичное число с точностью до 2 символов после точки)
* j ($prepaymentSum) - 1215, сумма по чеку (БСО) предоплатой (зачетом аванса и (или) предыдущих платежей) (Десятичное число с точностью до 2 символов после точки)
* k ($postpaymentSum) - 1216, сумма по чеку (БСО) постоплатой (в кредит) (Десятичное число с точностью до 2 символов после точки)
* l ($otherPaymentTypeSum) - 1217, сумма по чеку (БСО) встречным предоставлением (Десятичное число с точностью до 2 символов после точки)
* m ($tax1Sum) - 1102, сумма НДС чека по ставке 18% (Десятичное число с точностью до 2 символов после точки)
* n ($tax2Sum) - 1103, сумма НДС чека по ставке 10% (Десятичное число с точностью до 2 символов после точки)
* o ($tax3Sum) - 1104, сумма расчета по чеку с НДС по ставке 0% (Десятичное число с точностью до 2 символов после точки)
* p ($tax4Sum) - 1105, сумма расчета по чеку без НДС (Десятичное число с точностью до 2 символов после точки)
* q ($tax5Sum) - 1106, сумма НДС чека по расч. ставке 18/118 (Десятичное число с точностью до 2 символов после точки)
* r ($tax6Sum) - 1107, сумма НДС чека по расч. ставке 10/110 (Десятичное число с точностью до 2 символов после точки)
* s ($taxationSystem) - 1055, применяемая система налогообложения (Число):
* 0 - Общая
* 1 - Упрощенная доход
* 2 - Упрощенная доход минус расход
* 3 - Единый налог на вмененный доход
* 4 - Единый сельскохозяйственный налог
* 5 - Патентная система налогообложения
*/
/**
* post_correction() - Отправка чека-коррекции на обработку
*/
/**
* get_correcrtion_status(a) - Проверка состояния чека-коррекции
* Параметры:
* a ($id) - Идентификатор документа (Строка от 1 до 32 символов)
*/
/**
* is_debug() - Данная функция служит для активации записей в файле 'curl.log'
*/
include_once 'orangedata_client.php'; //Путь к библиотеке (как правило это файл orangedata_client.php или orangedataclient_Beta.php)
$api_url = 2443; //number of the port
//$api_url = 'https://apip.orangedata.ru:2443'; //link access
$sign_pkey = getcwd() . '\secure_path\private_key.pem'; //path to private key for signing
$ssl_client_key = getcwd() . '\secure_path\client.key'; //path to client private key for ssl
$ssl_client_crt = getcwd() . '\secure_path\client.crt'; //path to client certificate for ssl
$ssl_ca_cert = getcwd() . '\secure_path\cacert.pem'; //path to cacert for ssl
$ssl_client_crt_pass = 1234; //password for client certificate for ssl
$inn = '0123456789'; //ИНН
//create new client
$byer = new orangedata\orangedata_client($inn, $api_url, $sign_pkey, $ssl_client_key, $ssl_client_crt, $ssl_ca_cert, $ssl_client_crt_pass);
//for write curl.log file
//$byer->is_debug();
try {
//create client new order, add positions , add payment, send request
$byer->create_order('23423423434', 1, '[email protected]', 1)
->add_position_to_order(6.123456, '10.', 1, 'matches', 1, 10)
->add_position_to_order(7, 10, 1, 'matches2', null, 10)
->add_position_to_order(345., 10.76, 1, 'matches3', 3, null)
->add_payment_to_order(1, 131.23)
->add_payment_to_order(2, 3712.2)
->add_agent_to_order(127,['+79998887766', '+76667778899'], 'Operation', ['+79998887766'], ['+79998887766'], 'Name', 'ulitsa Adress, dom 7', 3123011520, ['+79998887766', '+76667778899'])
->add_user_attribute('Любимая цитата', 'В здоровом теле здоровый дух, этот лозунг еще не потух!');
//view response
$result = $byer->send_order();
var_dump($result);
} catch (Exception $ex) {
echo 'Ошибка:' . PHP_EOL . $ex->getMessage();
}
//view status of order
try {
$order_status = $byer->get_order_status(23423423434);
var_dump($order_status);
} catch (Exception $ex) {
echo 'Ошибка:' . PHP_EOL . $ex->getMessage();
}
///Создания чека коррекции
$byer->create_correction(
'23423423', //id Идентификатор документа (Строка от 1 до 32 символов)
0, //correctionType 1173, тип коррекции
//0. Самостоятельно
//1. По предписанию
3, //type Признак расчета, 1054:
//1. Приход
//3. Расход
' Ошибка Кассира1', //description 1177, описание коррекции Строка от 1 до 244 символов
new \DateTime(), //causeDocumentDate DateTime объект .1178, дата документа основания для коррекции В данном реквизите время всегда приводится, к 00:00:00. Время в виде строки в формате ISO8601
'56ce', //causeDocumentNumber 1179, номер документа основания для коррекции Строка от 1 до 32 символов
567.9, //totalSum 1020, сумма расчета, указанного в чеке (БСО) Десятичное число с точностью до 2 символов после точки
567, //cashSum 1031, сумма по чеку (БСО) наличными Десятичное число с точностью до 2 символов после точки
0.9, //eCashSum 1081, сумма по чеку (БСО) электронными Десятичное число с точностью до 2 символов после точки
0, //prepaymentSum 1215, сумма по чеку (БСО) предоплатой (зачетом аванса и (или) предыдущих платежей) Десятичное число с точностью до 2 символов после точки
0, //postpaymentSum 1216, сумма по чеку (БСО) постоплатой (в кредит) Десятичное число с точностью до 2 символов после точки
0, //otherPaymentTypeSum 1217, сумма по чеку (БСО) встречным предоставлением Десятичное число с точностью до 2 символов после точки
0, //tax1Sum 1102, сумма НДС чека по ставке 18% Десятичное число с точностью до 2 символов после точки
0, //tax2Sum 1103, сумма НДС чека по ставке 10% Десятичное число с точностью до 2 символов после точки
0, //tax3Sum 1104, сумма расчета по чеку с НДС по ставке 0% Десятичное число с точностью до 2 символов после точки
0, //tax4Sum 1105, сумма расчета по чеку без НДС Десятичное число с точностью до 2 символов после точки
0, //tax5Sum 1106, сумма НДС чека по расч. ставке 18/118 Десятичное число с точностью до 2 символов после точки
0, //tax6Sum 1107, сумма НДС чека по расч. ставке 10/110 Десятичное число с точностью до 2 символов после точки
2, //taxationSystem 1055, применяемая система налогообложения
//0. Общая
//1. Упрощенная доход
//2. Упрощенная доход минус расход
//3. Единый налог на вмененный доход
//4. Единый сельскохозяйственный налог
//5. Патентная система налогообложения
//Число
'1', //group Группа устройств, с помощью которых будет пробит чек Строка от 1 до 32 символов или null. Опциональный параметр.
null //key Название ключа который должен быть использован для проверки подпись. Опциональный параметр. Если имя ключа не указано для проверки подписи будет использован ключ, заданный по умолчанию.
//Строка от 1 до 32 символов либо null
);
try {
$result = $byer->post_correction();
//view response
var_dump($result);
} catch (Exception $ex) {
echo 'Ошибка:' . PHP_EOL . $ex->getMessage();
}
//view status of correction
try {
$cor_status = $byer->get_correction_status('23423423');
var_dump($cor_status);
} catch (Exception $ex) {
echo 'Ошибка:' . PHP_EOL . $ex->getMessage();
}
?>