payneteasy-payneteasyapi 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
1
  # Фронтенд библиотеки, PaymentProcessor
2
2
 
3
- Фронтенд библиотеки представляет класс **[PaynetEasy\PaynetEasyApi\PaymentProcessor](../../source/PaynetEasy/PaynetEasyApi/PaymentProcessor.php)**. Класс предоставляет следующие возможности:
4
- * **[executeQuery()](#executeQuery)**: простое выполнение запроса к PaynetEasy
5
- * **[processCustomerReturn()](#processCustomerReturn)**: простая обработка данных, полученных от PaynetEasy при возвращении пользователя с платежного шлюза
6
- * **[processPaynetEasyCallback()](#processPaynetEasyCallback)**: простая обработка данных, полученных от PaynetEasy при поступлении коллбэка от PaynetEasy
7
- * **[setHandlers()](#setHandlers)**: установка обработчиков для различных событий, происходящих при обработке платежной транзакции
3
+ Фронтенд библиотеки представлен классом **[PaynetEasy::PaynetEasyApi::PaymentProcessor](../../lib/paynet_easy/paynet_easy_api/payment_processor.rb)**. Класс предоставляет следующие методы:
4
+ * **[execute_query()](#execute_query)**: выполнение запроса к PaynetEasy
5
+ * **[process_customer_return()](#process_customer_return)**: обработка данных, полученных от PaynetEasy при возвращении пользователя с платежного шлюза
6
+ * **[process_paynet_easy_callback()](#process_paynet_easy_callback)**: обработка данных, полученных от PaynetEasy при поступлении коллбэка от PaynetEasy
7
+ * **[set_handlers()](#set_handlers)**: установка обработчиков для различных событий, происходящих при обработке платежной транзакции
8
8
 
9
- ### <a name="executeQuery"></a>executeQuery(): простое выполнение запроса к PaynetEasy
9
+ ### <a name="execute_query"></a>execute_query(): выполнение запроса к PaynetEasy
10
10
 
11
11
  Некоторые сценарии обработки платежа имеют асинхронную природу и состоят из нескольких запросов. Так, некоторые запросы не возвращают результат платежа сразу и требуют многократного выполнения запроса **status**, после которого клиент может быть отправлен на шлюз PaynetEasy для проведения дополнительных шагов авторизации. После возвращения клиента на сервис мерчанта необходима обработка данных, полученных от шлюза.
12
12
  <a name="async_queries_list"></a>Cписок асинхронных запросов:
@@ -18,12 +18,12 @@
18
18
  * transfer-by-ref
19
19
 
20
20
  Ознакомиться с обработкой таких запросов можно в следующих файлах:
21
- * [Пример выполнения запроса sale](../../example/sale.php)
22
- * [Пример выполнения запроса preauth](../../example/preauth.php)
23
- * [Пример выполнения запроса capture](../../example/capture.php)
24
- * [Пример выполнения запроса return](../../example/return.php)
25
- * [Пример выполнения запроса make-rebill](../../example/make-rebill.php)
26
- * [Пример выполнения запроса transfer-by-ref](../../example/transfer-by-ref.php)
21
+ * [Пример выполнения запроса sale](../../example/sale.rb)
22
+ * [Пример выполнения запроса preauth](../../example/preauth.rb)
23
+ * [Пример выполнения запроса capture](../../example/capture.rb)
24
+ * [Пример выполнения запроса return](../../example/return.rb)
25
+ * [Пример выполнения запроса make-rebill](../../example/make-rebill.rb)
26
+ * [Пример выполнения запроса transfer-by-ref](../../example/transfer-by-ref.rb)
27
27
 
28
28
  Отдельный сценарий обработки необходим и при интеграции платежной формы. Запрос к шлюзу возвращает ссылку на платежную форму, на которую должен быть отправлен клиент. После заполнения и отправки данных шлюз обрабатывает платежную форму и возвращает клиента на сервис мерчанта. После возвращения клиента на сервис мерчанта необходима обработка данных, полученных от шлюза.
29
29
  <a name="form_queries_list"></a>Список запросов для интеграции платежной формы:
@@ -32,9 +32,9 @@
32
32
  * transfer-form
33
33
 
34
34
  Ознакомиться с обработкой таких запросов можно в следующих файлах:
35
- * [Пример выполнения запроса sale-form](../../example/sale-form.php)
36
- * [Пример выполнения запроса preauth-form](../../example/preauth-form.php)
37
- * [Пример выполнения запроса transfer-form](../../example/transfer-form.php)
35
+ * [Пример выполнения запроса sale-form](../../example/sale-form.rb)
36
+ * [Пример выполнения запроса preauth-form](../../example/preauth-form.rb)
37
+ * [Пример выполнения запроса transfer-form](../../example/transfer-form.rb)
38
38
 
39
39
  Некоторые операции с платежами не требуют сложных сценариев обработки и выполняются с помощью одного запроса.
40
40
  Список простых операций над платежом:
@@ -43,50 +43,50 @@
43
43
  * status
44
44
 
45
45
  Ознакомиться с обработкой таких запросов можно в следующих файлах:
46
- * [Пример выполнения запроса create-card-ref](../../example/create-card-ref.php)
47
- * [Пример выполнения запроса get-card-info](../../example/get-card-info.php)
48
- * [Пример выполнения запроса status](../../example/status.php)
46
+ * [Пример выполнения запроса create-card-ref](../../example/create-card-ref.rb)
47
+ * [Пример выполнения запроса get-card-info](../../example/get-card-info.rb)
48
+ * [Пример выполнения запроса status](../../example/status.rb)
49
49
 
50
- Для удобного выполнения запросов к PaynetEasy в **PaymentProcessor** реализован метод **[executeQuery()](../../source/PaynetEasy/PaynetEasyApi/PaymentProcessor.php#L114)**.
50
+ Для удобного выполнения запросов к PaynetEasy в **PaymentProcessor** реализован метод **[execute_query()](../../lib/paynet_easy/paynet_easy_api/payment_processor.rb#L62)**.
51
51
  Метод принимает два параметра:
52
52
  * Название запроса
53
53
  * Платежная транзакция для обработки
54
54
 
55
- ### <a name="processCustomerReturn"></a>processCustomerReturn(): простая обработка данных, полученных от PaynetEasy
55
+ ### <a name="process_customer_return"></a>process_customer_return(): обработка данных, полученных от PaynetEasy при возвращении клиента
56
56
 
57
- Каждый [асинхронный запрос](#async_queries_list) может завершиться перенаправлением пользователя на платежный шлюз для выполнения дополнительных действий, а каждый [запрос для интеграции платежной формы](#form_queries_list) обязательно содержит такое перенаправление. Каждый раз при возвращении пользователя на сервис мерчанта передаются данные с результатом обработки платежа. Также, если в [конфигурации стартового запроса](../00-basic-tutorial.md#stage_1_step_3) был задан ключ **server_callback_url**, то через некоторое время PaynetEasy вызовет этот url и передаст ему данные, описанные в wiki PaynetEasy в разделе [Merchant Callbacks](http://wiki.payneteasy.com/index.php/PnE:Merchant_Callbacks). Для удобной обработки этих данных в **PaymentProcessor** реализован метод **[executeCallback()](../../source/PaynetEasy/PaynetEasyApi/PaymentProcessor.php#L161)**.
57
+ Каждый [асинхронный запрос](#async_queries_list) может завершиться перенаправлением пользователя на платежный шлюз для выполнения дополнительных действий, а каждый [запрос для интеграции платежной формы](#form_queries_list) обязательно содержит такое перенаправление. Каждый раз при возвращении пользователя на сервис мерчанта передаются данные с результатом обработки платежа. Также, если в [конфигурации стартового запроса](../00-basic-tutorial.md#stage_1_step_3) был задан ключ **server_callback_url**, то через некоторое время PaynetEasy вызовет этот url и передаст ему данные, описанные в wiki PaynetEasy в разделе [Merchant Callbacks](http://wiki.payneteasy.com/index.php/PnE:Merchant_Callbacks). Для удобной обработки этих данных в **PaymentProcessor** реализован метод **[process_customer_return()](../../lib/paynet_easy/paynet_easy_api/payment_processor.rb#L85)**.
58
58
  Метод принимает два параметра:
59
59
  * Объект с данными, полученными при возвращении пользователя от PaynetEasy
60
60
  * Платежная транзакция для обработки
61
61
 
62
62
  Ознакомиться с использованием данного метода можно в следующих файлах:
63
63
  * [Базовый пример использования библиотеки](../00-basic-tutorial.md#stage_2)
64
- * [Пример выполнения запроса sale](../../example/sale.php#L91)
65
- * [Пример выполнения запроса preauth](../../example/preauth.php#L91)
66
- * [Пример выполнения запроса sale-form](../../example/sale-form.php#L70)
67
- * [Пример выполнения запроса preauth-form](../../example/preauth-form.php#70)
68
- * [Пример выполнения запроса transfer-form](../../example/transfer-form.php#70)
64
+ * [Пример выполнения запроса sale](../../example/sale.rb#L91)
65
+ * [Пример выполнения запроса preauth](../../example/preauth.rb#L91)
66
+ * [Пример выполнения запроса sale-form](../../example/sale-form.rb#L70)
67
+ * [Пример выполнения запроса preauth-form](../../example/preauth-form.rb#70)
68
+ * [Пример выполнения запроса transfer-form](../../example/transfer-form.rb#70)
69
69
 
70
- ### <a name="processPaynetEasyCallback"></a>processPaynetEasyCallback(): простая обработка данных, полученных от PaynetEasy
70
+ ### <a name="process_paynet_easy_callback"></a>process_paynet_easy_callback(): обработка удаленного вызова от PaynetEasy
71
71
 
72
- После выполнения [асинхронного запроса](#async_queries_list) или [запроса для интеграции платежной формы](#form_queries_list), если в [конфигурации стартового запроса](../00-basic-tutorial.md#stage_1_step_3) был задан ключ **server_callback_url**, то через некоторое время PaynetEasy вызовет этот url и передаст ему данные, описанные в wiki PaynetEasy в разделе [Merchant Callbacks](http://wiki.payneteasy.com/index.php/PnE:Merchant_Callbacks). Для удобной обработки этих данных в **PaymentProcessor** реализован метод **[processPaynetEasyCallback()](../../source/PaynetEasy/PaynetEasyApi/PaymentProcessor.php#L176)**.
72
+ После выполнения [асинхронного запроса](#async_queries_list) или [запроса для интеграции платежной формы](#form_queries_list), если в [конфигурации стартового запроса](../00-basic-tutorial.md#stage_1_step_3) был задан ключ **server_callback_url**, то через некоторое время PaynetEasy вызовет этот url и передаст ему данные, описанные в wiki PaynetEasy в разделе [Merchant Callbacks](http://wiki.payneteasy.com/index.php/PnE:Merchant_Callbacks). Для удобной обработки этих данных в **PaymentProcessor** реализован метод **[process_paynet_easy_callback()](../../lib/paynet_easy/paynet_easy_api/payment_processor.rb#L96)**.
73
73
  Метод принимает два параметра:
74
74
  * Объект с данными, полученными при возвращении пользователя от PaynetEasy
75
75
  * Платежная транзакция для обработки
76
76
 
77
77
  Ознакомиться с использованием данного метода можно в следующих файлах:
78
- * [Пример выполнения запроса sale](../../example/sale.php#L102)
79
- * [Пример выполнения запроса preauth](../../example/preauth.php#L102)
80
- * [Пример выполнения запроса sale-form](../../example/sale-form.php#L81)
81
- * [Пример выполнения запроса preauth-form](../../example/preauth-form.php#81)
82
- * [Пример выполнения запроса transfer-form](../../example/transfer-form.php#81)
78
+ * [Пример выполнения запроса sale](../../example/sale.rb#L102)
79
+ * [Пример выполнения запроса preauth](../../example/preauth.rb#L102)
80
+ * [Пример выполнения запроса sale-form](../../example/sale-form.rb#L81)
81
+ * [Пример выполнения запроса preauth-form](../../example/preauth-form.rb#81)
82
+ * [Пример выполнения запроса transfer-form](../../example/transfer-form.rb#81)
83
83
 
84
- ### <a name="setHandlers"></a> setHandlers(): установка обработчиков для различных событий, происходящих при обработке заказа
84
+ ### <a name="set_handlers"></a> set_handlers(): установка обработчиков для различных событий, происходящих при обработке заказа
85
85
 
86
- **PaymentProcessor** скрывает от конечного пользователя алгоритм обработки заказа в методах **[executeWorkflow()](#executeWorkflow)**, **[executeQuery()](#executeQuery)** и **[executeCallback()](#executeCallback)**. При этом во время обработки заказа возникают ситуации, обработка которых должна быть реализована на стороне сервиса мерчанта. Для обработки таких ситуаций в **PaymentProcessor** реализована система событий и их обработчиков. Обработчики могут быть установлены тремя разными способами:
87
- * Передача массива обработчиков в [конструктор класса **PaymentProcessor**](../../source/PaynetEasy/PaynetEasyApi/PaymentProcessor.php#L101)
88
- * Передача массива обработчиков в метод [**setHandlers()**](../../source/PaynetEasy/PaynetEasyApi/PaymentProcessor.php#L273)
89
- * Установка обработчиков по одному с помощью метода **[setHandler()](../../source/PaynetEasy/PaynetEasyApi/PaymentProcessor.php#L249)**
86
+ **PaymentProcessor** скрывает от конечного пользователя алгоритм обработки заказа в методах **[execute_query()](#execute_query)**, **[process_customer_return()](#process_customer_return)** и **[process_paynet_easy_callback()](process_paynet_easy_callback)**. При этом во время обработки заказа возникают ситуации, обработка которых должна быть реализована на стороне сервиса мерчанта. Для обработки таких ситуаций в **PaymentProcessor** реализована система событий и их обработчиков. Обработчики могут быть установлены тремя разными способами:
87
+ * Передача хэша с обработчиками в [конструктор класса **PaymentProcessor**](../../lib/paynet_easy/paynet_easy_api/payment_processor.rb#L51)
88
+ * Передача хэша с обработчиками в метод [**set_handlers()**](../../lib/paynet_easy/paynet_easy_api/payment_processor.rb#L150)
89
+ * Установка обработчиков по одному с помощью метода **[set_handler()](../../lib/paynet_easy/paynet_easy_api/payment_processor.rb#L140)**
90
90
 
91
91
  Список обработчиков событий:
92
92
  * **HANDLER_SAVE_CHANGES** - обработчик для сохранения платежной транзакции. Вызывается, если данные платежной транзакции изменены. Должен реализовывать сохранение платежной транзакции в хранилище. Принимает следующие параметры:
@@ -110,54 +110,56 @@
110
110
  * Ответ от PaynetEasy (опционально, не доступен, если произошла ошибка на этапе формирования или выполнения запроса к PaynetEasy)
111
111
 
112
112
  Метод принимает один параметр:
113
- * Массив с обработчиками событий. Ключами элементов массива являются названия обработчиков, заданные в константах класса, значениями - любые значения типа [callable](http://php.net/manual/en/language.types.callable.php)
113
+ * Хэш с обработчиками событий. Ключами элементов хэша являются названия обработчиков, заданные в константах класса, значениями - любые значения типа [Proc](http://www.ruby-doc.org/core-2.0.0/Proc.html)
114
114
 
115
115
  Пример вызова метода с простейшими обработчиками:
116
116
 
117
- ```php
118
- use PaynetEasy\PaynetEasyApi\PaymentProcessor;
119
- use PaynetEasy\PaynetEasyApi\PaymentData\PaymentTransaction;
120
- use PaynetEasy\PaynetEasyApi\Transport\Response;
121
- use Exception;
122
-
123
- $paymentProcessor = new PaymentProcessor;
124
- $paymentProcessor->setHandlers(array
125
- (
126
- PaymentProcessor::HANDLER_SAVE_CHANGES => function(PaymentTransaction $paymentTransaction)
127
- {
128
- start_session();
129
- $_SESSION['payment_transaction'] = serialize($paymentTransaction);
130
- },
131
- PaymentProcessor::HANDLER_STATUS_UPDATE => function()
132
- {
133
- header("Location: http://{$_SERVER['HTTP_HOST']}/{$_SERVER['REQUEST_URI']}?stage=updateStatus");
134
- exit;
135
- },
136
- PaymentProcessor::HANDLER_SHOW_HTML => function(Response $response)
137
- {
138
- print $response->getHtml();
139
- exit;
140
- },
141
- PaymentProcessor::HANDLER_REDIRECT => function(Response $response)
142
- {
143
- header("Location: {$response->getRedirectUrl()}");
144
- exit;
145
- },
146
- PaymentProcessor::HANDLER_FINISH_PROCESSING => function(PaymentTransaction $paymentTransaction)
147
- {
148
- print "<pre>";
149
- print "Payment processing finished.\n";
150
- print "Payment status: '{$paymentTransaction->getPayment()->getStatus()}'.\n";
151
- print "Payment transaction status: '{$paymentTransaction->getStatus()}'.\n";
152
- print "</pre>";
153
- },
154
- PaymentProcessor::HANDLER_CATCH_EXCEPTION => function(Exception $exception)
155
- {
156
- print "<pre>";
157
- print "Exception catched.\n";
158
- print "Exception message: '{$exception->getMessage()}'.\n";
159
- print "Exception traceback: \n{$exception->getTraceAsString()}\n";
160
- print "</pre>";
161
- }
162
- ));
117
+ ```ruby
118
+ require 'paynet_easy_api'
119
+ require 'cgi'
120
+ require 'cgi/session'
121
+
122
+ $_CGI = CGI.new('html5')
123
+ $_SESSION = CGI::Session.new $_CGI
124
+
125
+ paymentProcessor = PaymentProcessor.new
126
+ paymentProcessor.set_handlers(
127
+ {
128
+ PaymentProcessor::HANDLER_SAVE_CHANGES => ->(payment_transaction, response) do
129
+ $_SESSION['payment_transaction'] = Marshal.dump payment_transaction
130
+ end,
131
+ PaymentProcessor::HANDLER_STATUS_UPDATE => ->(response, payment_transaction) do
132
+ current_location = "http://#{ENV['HTTP_HOST']}/#{ENV['REQUEST_URI']}?stage=updateStatus"
133
+ puts $_CGI.header('status' => 'REDIRECT', 'location' => current_location)
134
+ end,
135
+ PaymentProcessor::HANDLER_SHOW_HTML => ->(response, payment_transaction) do
136
+ puts $_CGI.header
137
+ puts response.html
138
+ end,
139
+ PaymentProcessor::HANDLER_REDIRECT => ->(response, payment_transaction) do
140
+ puts $_CGI.header('status' => 'REDIRECT', 'location' => response.redirect_url)
141
+ exit
142
+ end,
143
+ PaymentProcessor::HANDLER_FINISH_PROCESSING => ->(payment_transaction, response = nil) do
144
+ puts $_CGI.header
145
+ puts <<HTML
146
+ <pre>
147
+ Payment processing finished.
148
+ Payment status: '#{payment_transaction.payment.status}'
149
+ Payment transaction status: '#{payment_transaction.status}'
150
+ </pre>
151
+ HTML
152
+ end,
153
+ PaymentProcessor::HANDLER_CATCH_EXCEPTION => ->(exception, payment_transaction, response = nil) do
154
+ puts $_CGI.header
155
+ puts <<HTML
156
+ <pre>
157
+ Exception catched.
158
+ Exception message: '#{exception.message}'
159
+ Exception backtrace:
160
+ #{exception.backtrace}
161
+ </pre>
162
+ HTML
163
+ end
164
+ })
163
165
  ```
@@ -1,31 +1,31 @@
1
1
  # Валидатор данных, Validator
2
2
 
3
- Статический класс **[PaynetEasy\PaynetEasyApi\Util\Validator](../../source/PaynetEasy/PaynetEasyApi/Util/Validator.php)** предоставляет следующие методы для валидации данных:
4
- * **[validateByRule()](#validateByRule)**: валидация с помощью предопределенного правила или регулярного выражения
3
+ Модуль **[PaynetEasy::PaynetEasyApi::Util::Validator](../../lib/paynet_easy/paynet_easy_api/util/validator.rb)** предоставляет следующие методы для валидации данных:
4
+ * **[validate_by_rule()](#validate_by_rule)**: валидация с помощью предопределенного правила или регулярного выражения
5
5
 
6
- ### <a name="validateByRule"></a>validateByRule(): валидация с помощью предопределнного правила
6
+ ### <a name="validate_by_rule"></a>validate_by_rule(): валидация с помощью предопределнного правила
7
7
 
8
- Для удобной валидации данных в **[Validator](../../source/PaynetEasy/PaynetEasyApi/Util/Validator.php)** реализован метод **[validateByRule()](../../source/PaynetEasy/PaynetEasyApi/Util/Validator.php#L126)** и набор констант с правилами валидации. Список доступных правил:
8
+ Для удобной валидации данных в **[Validator](../../lib/paynet_easy/paynet_easy_api/util/validator.rb)** реализован метод **[validate_by_rule()](../../lib/paynet_easy/paynet_easy_api/util/validator.rb#L87)** и набор констант с правилами валидации. Список доступных правил:
9
9
 
10
10
  Константа |Правило валидации |Описание
11
11
  --------------------------------|---------------------------|--------
12
- Validator::EMAIL |[FILTER_VALIDATE_EMAIL](http://www.php.net/manual/en/filter.filters.validate.php)|Validate value as email
13
- Validator::IP |[FILTER_VALIDATE_IP](http://www.php.net/manual/en/filter.filters.validate.php)|Validate value as IP address
14
- Validator::URL |[FILTER_VALIDATE_URL](http://www.php.net/manual/en/filter.filters.validate.php)|Validate value as URL
15
- Validator::MONTH |0 < month < 13 |Validate value as month
16
- Validator::YEAR |#^[0-9]{1,2}$#i |Validate value as year
17
- Validator::PHONE |#^[0-9\-\+\(\)\s]{6,15}$#i |Validate value as phone number
18
- Validator::AMOUNT |#^[0-9\.]{1,11}$#i |Validate value as payment amount
19
- Validator::CURRENCY |#^[A-Z]{1,3}$#i |Validate value as currency
20
- Validator::CVV2 |#^[\S\s]{3,4}$#i |Validate value as card verification value
21
- Validator::ZIP_CODE |#^[\S\s]{1,10}$#i |Validate value as zip code
22
- Validator::COUNTRY |#^[A-Z]{1,2}$#i |Validate value as two-letter country or state code
23
- Validator::DATE |#^[0-9]{6}$#i |Validate value as date in format MMDDYY
24
- Validator::SSN |#^[0-9]{1,4}$#i |Validate value as last four digits of social security number
25
- Validator::CREDIT_CARD_NUMBER |#^[0-9]{1,20}$#i |Validate value as credit card number
26
- Validator::ID |#^[\S\s]{1,20}$#i |Validate value as ID (client, paynet, card-ref, etc.)
27
- Validator::LONG_STRING |#^[\S\s]{1,128}$#i |Validate value as long string
28
- Validator::MEDIUM_STRING |#^[\S\s]{1,50}$#i |Validate value as medium string
12
+ Validator::EMAIL |/@+/ |Validate value as email
13
+ Validator::IP |URI::ABS_URI === ip |Validate value as IP address
14
+ Validator::URL |!!IPAddr.new(url) |Validate value as URL
15
+ Validator::MONTH |(1..12).include? month.to_i|Validate value as month
16
+ Validator::YEAR |/^[0-9]{1,2}$/i |Validate value as year
17
+ Validator::PHONE |/^[0-9\-\+\(\)\s]{6,15}$/i |Validate value as phone number
18
+ Validator::AMOUNT |/^[0-9\.]{1,11}$/i |Validate value as payment amount
19
+ Validator::CURRENCY |/^[A-Z]{1,3}$/i |Validate value as currency
20
+ Validator::CVV2 |/^[\S\s]{3,4}$/i |Validate value as card verification value
21
+ Validator::ZIP_CODE |/^[\S\s]{1,10}$/i |Validate value as zip code
22
+ Validator::COUNTRY |/^[A-Z]{1,2}$/i |Validate value as two-letter country or state code
23
+ Validator::DATE |/^[0-9]{6}$/i |Validate value as date in format MMDDYY
24
+ Validator::SSN |/^[0-9]{1,4}$/i |Validate value as last four digits of social security number
25
+ Validator::CREDIT_CARD_NUMBER |/^[0-9]{1,20}$/i |Validate value as credit card number
26
+ Validator::ID |/^[\S\s]{1,20}$/i |Validate value as ID (client, paynet, card-ref, etc.)
27
+ Validator::LONG_STRING |/^[\S\s]{1,128}$/i |Validate value as long string
28
+ Validator::MEDIUM_STRING |/^[\S\s]{1,50}$/i |Validate value as medium string
29
29
 
30
30
  Метод принимает три параметра:
31
31
  * Значение для валидации
@@ -35,21 +35,20 @@ Validator::MEDIUM_STRING |#^[\S\s]{1,50}$#i |Validate value as m
35
35
  * **false** - будет возвращен булевый результат проверки
36
36
  Пример использования метода:
37
37
 
38
- ```php
39
- use PaynetEasy\PaynetEasyApi\Util\Validator;
40
- use PaynetEasy\PaynetEasyApi\Exception\ValidationException;
41
-
42
- var_dump(Validator::validateByRule('test@mail.com', Validator::EMAIL, false)); // true
43
- var_dump(Validator::validateByRule('some string', '#\d#', false)); // false
44
-
45
- // prints 'invalid'
46
- try
47
- {
48
- Validator::validateByRule('test[at]mail.com', Validator::EMAIL);
49
- print 'valid';
50
- }
51
- catch (ValidationException $e)
52
- {
53
- print 'invalid';
54
- }
38
+ ```ruby
39
+ require 'paynet_easy_api'
40
+ require 'util/validator'
41
+
42
+ include PaynetEasy::PaynetEasyApi::Util
43
+
44
+ p Validator.validate_by_rule('test@mail.com', Validator::EMAIL, false) # true
45
+ p Validator.validate_by_rule('some string', '#\d#', false) # false
46
+
47
+ # prints 'invalid'
48
+ begin
49
+ Validator.validate_by_rule('test[at]mail.com', Validator::EMAIL)
50
+ puts 'valid'
51
+ rescue ValidationError
52
+ puts 'invalid'
53
+ end
55
54
  ```
@@ -1,12 +1,12 @@
1
- # Класс для работы с цепочками свойств, PropertyAccessor
1
+ # Модуль для работы с цепочками свойств, PropertyAccessor
2
2
 
3
- В процессе работы с данными платежа возникает необходимость читать и изменять свойства объектов, хранящихся в Payment. Например, для чтения email клиента необходимо вызвать `$payment->getCustomer()->getEmail()`, а для записи - `$payment->getCustomer()->setEmail()`. Для удобного выполнения этих операций в классе **[PaynetEasy\PaynetEasyApi\Util\PropertyAccessor](../../source/PaynetEasy/PaynetEasyApi/Util/PropertyAccessor.php)** реализованы следующие методы:
4
- * **[getValue()](#getValue)**: удобное чтение данных по цепочке свойств
5
- * **[setValue()](#setValue)**: удобная запись данных по цепочке свойств
3
+ В процессе работы с данными платежа возникает необходимость читать и изменять свойства объектов, хранящихся в PaymentTransaction. Например, для чтения email клиента необходимо вызвать `payment_transaction.payment.customer.email`, а для записи - `payment_transaction.payment.customer.email = ''`. Для удобного выполнения этих операций в модуле **[PaynetEasy::PaynetEasyApi::Util::PropertyAccessor](../../lib/paynet_easy/paynet_easy_api/util/property_accessor.rb)** реализованы следующие методы:
4
+ * **[get_value()](#get_value)**: удобное чтение данных по цепочке свойств
5
+ * **[set_value()](#set_value)**: удобная запись данных по цепочке свойств
6
6
 
7
- ### <a name="getValue"></a> getValue(): удобное чтение данных по цепочке свойств
7
+ ### <a name="get_value"></a> get_value(): удобное чтение данных по цепочке свойств
8
8
 
9
- Метод предназначен для чтения данных из цепочки свойств. Цепочка свойств описывает порядок получения свойств из переданного объекта. Так, для цепочки `billingAddress.firstLine` будет получено значение свойства `firstLine` из объекта, хранящегося в свойстве `billingAddress`. Для получения свойств используются методы-геттеры, названия которых образованы добавлением префикса `get` к имени свойства. Таким образом, получение данных для цепочки `billingAddress.firstLine` приведет к вызову кода `$payment->getBillingAddress()->getFirstLine()`.
9
+ Метод предназначен для чтения данных из цепочки свойств. Цепочка свойств описывает порядок получения свойств из переданного объекта. Так, для цепочки `payment.billing_address.first_line` будет получено значение свойства `first_line` из объекта, хранящегося в свойстве `billing_address`, хранящегося в свойстве `payment`. Для получения свойств используются методы-геттеры полей объекта.
10
10
  Метод принимает три параметра:
11
11
  * Объект, цепочку свойств которого можно прочитать
12
12
  * Цепочка свойств
@@ -15,62 +15,74 @@
15
15
  * **false** - будет возвращен `null`
16
16
 
17
17
  Пример использования метода:
18
- ```php
19
- use PaynetEasy\PaynetEasyApi\Util\PropertyAccessor;
20
- use PaynetEasy\PaynetEasyApi\PaymentData\Payment;
21
- use PaynetEasy\PaynetEasyApi\PaymentData\CreditCard;
22
- use RuntimeException;
18
+ ```ruby
19
+ require 'paynet_easy_api'
20
+ require 'util/property_accessor'
23
21
 
24
- $creditCard = (new CreditCard)->setExpireYear(2014);
25
- $payment = (new Payment)->setCreditCard($creditCard);
22
+ include PaynetEasy::PaynetEasyApi::PaymentData
23
+ include PaynetEasy::PaynetEasyApi::Util
26
24
 
27
- var_dump(PropertyAccessor::getValue($payment, 'creditCard.expireYear')); // 2014
28
- var_dump(PropertyAccessor::getValue($payment, 'creditCard.expireMonth', false)); // null
29
-
30
- // prints 'empty'
31
- try
32
- {
33
- PropertyAccessor::getValue($payment, 'creditCard.expireMonth');
34
- }
35
- catch (RuntimeException $e)
25
+ payment_transaction = PaymentTransaction.new(
36
26
  {
37
- print 'empty';
38
- }
27
+ 'payment' => Payment.new(
28
+ {
29
+ 'credit_card' => CreditCard.new(
30
+ {
31
+ 'expire_year' => '14'
32
+ })
33
+ })
34
+ })
35
+
36
+ p PropertyAccessor.get_value(payment_transaction, 'payment.credit_card.expire_year') # 2014
37
+ p PropertyAccessor.get_value(payment_transaction, 'payment.credit_card.expire_month', false) # nil
38
+
39
+ # prints 'empty'
40
+ begin
41
+ PropertyAccessor.get_value(payment_transactions, 'payment.creditCard.expireMonth')
42
+ rescue RuntimeError
43
+ puts 'empty'
44
+ end
39
45
  ```
40
46
 
41
- ### <a name="setValue"></a> setValue(): удобное изменение данных по цепочке свойств
47
+ ### <a name="set_value"></a> set_value(): удобное изменение данных по цепочке свойств
42
48
 
43
- Метод предназначен для изменения данных по цепочке свойств. Цепочка свойств описывает порядок получения свойств из переданного объекта. Так, для цепочки `billingAddress.firstLine` будет изменено значение свойства `firstLine` из объекта, хранящегося в свойстве `billingAddress`. Для получения свойств используются методы-геттеры, названия которых образованы добавлением префикса `get` к имени свойства, для изменения - методы-сеттеры, названия которых образованы добавлением префикса `set` к имени свойства. Таким образом, изменение данных для цепочки `billingAddress.firstLine` приведет к вызову кода `$payment->getBillingAddress()->setFirstLine($firstLine)`.
49
+ Метод предназначен для изменения данных по цепочке свойств. Цепочка свойств описывает порядок получения свойств из переданного объекта. Так, для цепочки `payment.billing_address.first_line` будет изменено значение свойства `first_line` из объекта, хранящегося в свойстве `billing_address`, хранящегося в свойстве `payment`. Для получения свойств используются методы-геттеры для полей объекта, для изменения - методы-сеттеры, названия которых образованы добавлением префикса `set` к имени свойства. Таким образом, изменение данных для цепочки `payment.billingAddress.
44
50
  Метод принимает четыре параметра:
45
51
  * Объект, цепочку свойств которого можно прочитать
46
52
  * Цепочка свойств
47
53
  * Новое значение
48
54
  * Флаг, определяющий поведение метода в том случае, если геттер или сеттер для свойства не был найден или если свойство, в котором ожидался объект, пустое:
49
55
  * **true** - будет брошено исключение
50
- * **false** - будет возвращен `null`
56
+ * **false** - будет возвращен `nil`
51
57
 
52
58
  Пример использования метода:
53
- ```php
54
- use PaynetEasy\PaynetEasyApi\Util\PropertyAccessor;
55
- use PaynetEasy\PaynetEasyApi\PaymentData\Payment;
56
- use PaynetEasy\PaynetEasyApi\PaymentData\CreditCard;
57
- use RuntimeException;
59
+ ```ruby
60
+ require 'paynet_easy_api'
61
+ require 'util/property_accessor'
58
62
 
59
- $creditCard = (new CreditCard)->setExpireYear(2014);
60
- $payment = (new Payment)->setCreditCard($creditCard);
63
+ include PaynetEasy::PaynetEasyApi::PaymentData
64
+ include PaynetEasy::PaynetEasyApi::Util
61
65
 
62
- PropertyAccessor::setValue($payment, 'creditCard.expireYear', 2015);
63
- var_dump(PropertyAccessor::getValue($payment, 'creditCard.expireYear')); // 2015
66
+ payment_transaction = PaymentTransaction.new(
67
+ {
68
+ 'payment' => Payment.new(
69
+ {
70
+ 'credit_card' => CreditCard.new(
71
+ {
72
+ 'expire_year' => '14'
73
+ })
74
+ })
75
+ })
64
76
 
65
- PropertyAccessor::setValue($payment, 'creditCard.nonExistentProperty', 'value', false); // nothing will happen
77
+ PropertyAccessor.set_value(payment_transaction, 'payment.credit_card.expire_year', 15)
78
+ p PropertyAccessor.get_value(payment_transaction, 'payment.credit_card.expire_year') # 15
66
79
 
67
- // prints 'nonexistent property'
68
- try
69
- {
70
- PropertyAccessor::setValue($payment, 'creditCard.nonExistentProperty', 'value');
71
- }
72
- catch (RuntimeException $e)
73
- {
74
- print 'nonexistent property';
75
- }
80
+ PropertyAccessor.set_value(payment_transaction, 'payment.credit_card.non_existent_property', 'value', false) # nothing will happen
81
+
82
+ # prints 'nonexistent property'
83
+ begin
84
+ PropertyAccessor.set_value(payment_transaction, 'payment.credit_card.non_existent_property', 'value')
85
+ rescue RuntimeError
86
+ puts 'nonexistent property'
87
+ end
76
88
  ```