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.
- data/README.md +6 -6
- data/doc/00-basic-tutorial.md +150 -154
- data/doc/01-library-internals.md +4 -4
- data/doc/library-internals/00-payment-data.md +62 -60
- data/doc/library-internals/01-payment-processor.md +87 -85
- data/doc/library-internals/02-validator.md +37 -38
- data/doc/library-internals/03-property-accessor.md +58 -46
- data/doc/payment-scenarios/00-sale-transactions.md +33 -33
- data/doc/payment-scenarios/01-preauth-capture-transactions.md +36 -36
- data/doc/payment-scenarios/02-transfer-transactions.md +22 -23
- data/doc/payment-scenarios/03-return-transactions.md +9 -9
- data/doc/payment-scenarios/04-recurrent-transactions.md +36 -37
- data/doc/payment-scenarios/05-payment-form-integration.md +19 -19
- data/doc/payment-scenarios/06-merchant-callbacks.md +8 -8
- data/example/capture.rb +38 -1
- data/example/common/functions.rb +40 -6
- data/lib/paynet_easy/paynet_easy_api/util/validator.rb +1 -1
- data/payneteasy-payneteasyapi.gemspec +6 -4
- metadata +4 -20
data/README.md
CHANGED
|
@@ -33,17 +33,17 @@
|
|
|
33
33
|
|
|
34
34
|
## Запуск тестов
|
|
35
35
|
|
|
36
|
-
1.
|
|
37
|
-
2. Запустите тесты: `
|
|
36
|
+
1. Установите пакет `rubygems-test`, если его еще нет: `gem install rubygems-test`
|
|
37
|
+
2. Запустите тесты: `gem test payneteasy-payneteasyapi`
|
|
38
38
|
|
|
39
39
|
## Использование
|
|
40
40
|
|
|
41
41
|
* [Простой пример использования библиотеки](doc/00-basic-tutorial.md)
|
|
42
42
|
* [Внутренняя структура библиотеки](doc/01-library-internals.md)
|
|
43
|
-
* [Семейство классов для хранения и обмена данными, PaynetEasy
|
|
44
|
-
* [Фронтенд библиотеки, PaynetEasy
|
|
45
|
-
* [Валидатор данных, PaynetEasy
|
|
46
|
-
* [Класс для работы с цепочками свойств, PaynetEasy
|
|
43
|
+
* [Семейство классов для хранения и обмена данными, PaynetEasy::PaynetEasyApi::PaymentData](doc/library-internals/00-payment-data.md)
|
|
44
|
+
* [Фронтенд библиотеки, PaynetEasy::PaynetEasyApi::PaymentProcessor](doc/library-internals/01-payment-processor.md)
|
|
45
|
+
* [Валидатор данных, PaynetEasy::PaynetEasyApi::Util::Validator](doc/library-internals/02-validator.md)
|
|
46
|
+
* [Класс для работы с цепочками свойств, PaynetEasy::PaynetEasyApi::Util::PropertyAccessor](doc/library-internals/03-property-accessor.md)
|
|
47
47
|
* [Интеграция различных платежных сценариев](doc/02-payment-scenarios.md)
|
|
48
48
|
* [Sale transactions](doc/payment-scenarios/00-sale-transactions.md)
|
|
49
49
|
* [Preauth/Capture Transactions](doc/payment-scenarios/01-preauth-capture-transactions.md)
|
data/doc/00-basic-tutorial.md
CHANGED
|
@@ -30,111 +30,100 @@
|
|
|
30
30
|
3. Сохранение платежной транзакции
|
|
31
31
|
4. Вывод статуса платежа **status** и статуса платежной транзакции **status** на экран
|
|
32
32
|
|
|
33
|
-
Рассмотрим примеры исходного кода для выполнения обоих этапов. Код для выполнения второго этапа должен выполняться при переходе по ссылке, заданной в настройках по ключу **redirect_url**. Например, разместите исходный код первого этапа в файле `first_stage.
|
|
33
|
+
Рассмотрим примеры исходного кода для выполнения обоих этапов. Код для выполнения второго этапа должен выполняться при переходе по ссылке, заданной в настройках по ключу **redirect_url**. Например, разместите исходный код первого этапа в файле `first_stage.rb`, а второго - `second_stage.rb`.
|
|
34
34
|
|
|
35
35
|
### <a name="stage_1"></a>Начало обработки платежной транзакции
|
|
36
36
|
|
|
37
|
-
1. <a name="stage_1_step_1"></a>Подключение
|
|
37
|
+
1. <a name="stage_1_step_1"></a>Подключение пакета библиотеки:
|
|
38
38
|
|
|
39
|
-
```
|
|
40
|
-
|
|
39
|
+
```ruby
|
|
40
|
+
require 'paynet_easy_api'
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
use PaynetEasy\PaynetEasyApi\PaymentData\QueryConfig;
|
|
45
|
-
use PaynetEasy\PaynetEasyApi\PaymentData\BillingAddress;
|
|
46
|
-
use PaynetEasy\PaynetEasyApi\PaymentData\Customer;
|
|
47
|
-
use PaynetEasy\PaynetEasyApi\Transport\Response;
|
|
48
|
-
use PaynetEasy\PaynetEasyApi\PaymentProcessor;
|
|
49
|
-
use Exception;
|
|
42
|
+
include PaynetEasy::PaynetEasyApi
|
|
43
|
+
include PaynetEasy::PaynetEasyApi::PaymentData
|
|
50
44
|
```
|
|
51
45
|
2. <a name="stage_1_step_2"></a>Создание новой платежной транзакции:
|
|
52
46
|
##### С использованием массивов, переданных в конструктор:
|
|
53
47
|
|
|
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
|
-
)
|
|
48
|
+
```ruby
|
|
49
|
+
customer = Customer.new(
|
|
50
|
+
{
|
|
51
|
+
'email' => 'vass.pupkin@example.com',
|
|
52
|
+
'ip_address' => '127.0.0.1'
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
billing_address = BillingAddress.new(
|
|
56
|
+
{
|
|
57
|
+
'country' => 'US',
|
|
58
|
+
'city' => 'Houston',
|
|
59
|
+
'state' => 'TX',
|
|
60
|
+
'first_line' => '2704 Colonial Drive',
|
|
61
|
+
'zip_code' => '1235',
|
|
62
|
+
'phone' => '660-485-6353'
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
query_config = QueryConfig.new(
|
|
66
|
+
{
|
|
67
|
+
'end_point' => 253,
|
|
68
|
+
'login' => 'rp-merchant1',
|
|
69
|
+
'signing_key' => '3FD4E71A-D84E-411D-A613-40A0FB9DED3A',
|
|
70
|
+
'redirect_url' => "http://#{ENV['HTTP_HOST']}/second_stage.rb",
|
|
71
|
+
'gateway_mode' => QueryConfig::GATEWAY_MODE_SANDBOX,
|
|
72
|
+
'gateway_url_sandbox' => 'https://sandbox.domain.com/paynet/api/v2/',
|
|
73
|
+
'gateway_url_production' => 'https://payment.domain.com/paynet/api/v2/'
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
payment = Payment.new(
|
|
77
|
+
{
|
|
78
|
+
'client_id' => 'CLIENT-112244',
|
|
79
|
+
'description' => 'This is test payment',
|
|
80
|
+
'amount' => 9.99,
|
|
81
|
+
'currency' => 'USD',
|
|
82
|
+
'customer' => customer,
|
|
83
|
+
'billing_address' => billing_address
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
payment_transaction = PaymentTransaction.new(
|
|
87
|
+
{
|
|
88
|
+
'payment' => payment,
|
|
89
|
+
'query_config' => query_config
|
|
90
|
+
})
|
|
97
91
|
```
|
|
98
92
|
##### С использованием сеттеров:
|
|
99
93
|
|
|
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
|
-
$paymentTransaction = (new PaymentTransaction)
|
|
135
|
-
->setPayment($payment)
|
|
136
|
-
->setQueryConfig($queryConfig)
|
|
137
|
-
;
|
|
94
|
+
```ruby
|
|
95
|
+
customer = Customer.new
|
|
96
|
+
customer.email = 'vass.pupkin@example.com'
|
|
97
|
+
customer.ip_address = '127.0.0.1'
|
|
98
|
+
|
|
99
|
+
billing_address = BillingAddress.new
|
|
100
|
+
billing_address.country = 'US'
|
|
101
|
+
billing_address.state = 'TX'
|
|
102
|
+
billing_address.city = 'Houston'
|
|
103
|
+
billing_address.first_line = '2704 Colonial Drive'
|
|
104
|
+
billing_address.zip_code = '1235'
|
|
105
|
+
billing_address.phone = '660-485-6353'
|
|
106
|
+
|
|
107
|
+
query_config = QueryConfig.new
|
|
108
|
+
query_config.end_point = 253
|
|
109
|
+
query_config.login = 'rp-merchant1'
|
|
110
|
+
query_config.signing_key = '3FD4E71A-D84E-411D-A613-40A0FB9DED3A'
|
|
111
|
+
query_config.redirect_url = "http://#{ENV['HTTP_HOST']}/second_stage.rb"
|
|
112
|
+
query_config.gateway_mode = QueryConfig::GATEWAY_MODE_SANDBOX
|
|
113
|
+
query_config.gateway_url_sandbox = 'https://sandbox.domain.com/paynet/api/v2/'
|
|
114
|
+
query_config.gateway_url_production = 'https://payment.domain.com/paynet/api/v2/'
|
|
115
|
+
|
|
116
|
+
payment = Payment.new
|
|
117
|
+
query_config.client_id = 'CLIENT-112244'
|
|
118
|
+
query_config.description = 'This is test payment'
|
|
119
|
+
query_config.amount = 9.99
|
|
120
|
+
query_config.currency = 'USD'
|
|
121
|
+
query_config.customer = customer
|
|
122
|
+
query_config.billing_address = billing_address
|
|
123
|
+
|
|
124
|
+
payment_transaction = PaymentTransaction.new
|
|
125
|
+
payment_transaction.payment = payment
|
|
126
|
+
payment_transaction.query_config = query_config
|
|
138
127
|
```
|
|
139
128
|
|
|
140
129
|
Поля конфигурации запроса **QueryConfig**:
|
|
@@ -147,28 +136,29 @@
|
|
|
147
136
|
* **gateway_url_production** - ссылка на шлюз PaynetEasy для режима работы production
|
|
148
137
|
|
|
149
138
|
3. <a name="stage_1_step_4"></a>Создание сервиса для обработки платежей:
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
print "Exception
|
|
158
|
-
print "Exception
|
|
159
|
-
print "
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
139
|
+
```ruby
|
|
140
|
+
payment_processor = PaymentProcessor.new(
|
|
141
|
+
{
|
|
142
|
+
PaymentProcessor::HANDLER_CATCH_EXCEPTION => ->(exception, payment_transaction, response = nil) do
|
|
143
|
+
puts $_CGI.header
|
|
144
|
+
puts <<HTML
|
|
145
|
+
<pre>
|
|
146
|
+
print "Exception catched.
|
|
147
|
+
print "Exception message: '#{exception.message}'
|
|
148
|
+
print "Exception backtrace:
|
|
149
|
+
#{exception.backtrace}
|
|
150
|
+
</pre>
|
|
151
|
+
HTML
|
|
152
|
+
end,
|
|
153
|
+
PaymentProcessor::HANDLER_SAVE_CHANGES => ->(payment_transaction, response) do
|
|
154
|
+
session = CGI::Session.new CGI.new('html5')
|
|
155
|
+
session['payment_transaction'] = Marshal.dump payment_transaction
|
|
156
|
+
end,
|
|
157
|
+
PaymentProcessor::HANDLER_REDIRECT => ->(response, payment_transaction) do
|
|
158
|
+
puts $_CGI.header('status' => 'REDIRECT', 'location' => response.redirect_url)
|
|
159
|
+
exit
|
|
160
|
+
end
|
|
161
|
+
})
|
|
172
162
|
```
|
|
173
163
|
|
|
174
164
|
Обработчики событий для сервиса:
|
|
@@ -178,8 +168,8 @@
|
|
|
178
168
|
|
|
179
169
|
4. <a name="stage_1_step_6"></a>Запуск обработки платежа:
|
|
180
170
|
|
|
181
|
-
```
|
|
182
|
-
|
|
171
|
+
```ruby
|
|
172
|
+
payment_processor.execute_query 'sale-form', payment_transaction
|
|
183
173
|
```
|
|
184
174
|
Будут выполнены следующие шаги:
|
|
185
175
|
1. Проверка данных платежной транзакции и формирование на ее основе запроса к PaynetEasy
|
|
@@ -192,49 +182,52 @@
|
|
|
192
182
|
|
|
193
183
|
### <a name="stage_2"></a>Окончание обработки платежной транзакции
|
|
194
184
|
|
|
195
|
-
1. <a name="stage_2_step_1"></a>Подключение
|
|
185
|
+
1. <a name="stage_2_step_1"></a>Подключение пакета библиотеки:
|
|
196
186
|
|
|
197
|
-
```
|
|
198
|
-
|
|
187
|
+
```ruby
|
|
188
|
+
require 'paynet_easy_api'
|
|
199
189
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
use PaynetEasy\PaynetEasyApi\PaymentProcessor;
|
|
203
|
-
use Exception;
|
|
190
|
+
include PaynetEasy::PaynetEasyApi
|
|
191
|
+
include PaynetEasy::PaynetEasyApi::PaymentData
|
|
204
192
|
```
|
|
205
193
|
2. <a name="stage_2_step_2"></a>Загрузка сохраненной платежной транзакции:
|
|
206
194
|
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
|
|
195
|
+
```ruby
|
|
196
|
+
session = CGI::Session.new CGI.new('html5')
|
|
197
|
+
payment_transaction = Marshal.load session['payment_transaction']
|
|
210
198
|
```
|
|
211
199
|
|
|
212
200
|
3. <a name="stage_2_step_4"></a>Создание сервиса для обработки платежей:
|
|
213
201
|
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
print "Exception
|
|
222
|
-
print "Exception
|
|
223
|
-
print "
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
202
|
+
```ruby
|
|
203
|
+
payment_processor = PaymentProcessor.new(
|
|
204
|
+
{
|
|
205
|
+
PaymentProcessor::HANDLER_CATCH_EXCEPTION => ->(exception, payment_transaction, response = nil) do
|
|
206
|
+
puts $_CGI.header
|
|
207
|
+
puts <<HTML
|
|
208
|
+
<pre>
|
|
209
|
+
print "Exception catched.
|
|
210
|
+
print "Exception message: '#{exception.message}'
|
|
211
|
+
print "Exception backtrace:
|
|
212
|
+
#{exception.backtrace}
|
|
213
|
+
</pre>
|
|
214
|
+
HTML
|
|
215
|
+
end,
|
|
216
|
+
PaymentProcessor::HANDLER_SAVE_CHANGES => ->(payment_transaction, response) do
|
|
217
|
+
session = CGI::Session.new CGI.new('html5')
|
|
218
|
+
session['payment_transaction'] = Marshal.dump payment_transaction
|
|
219
|
+
end,
|
|
220
|
+
PaymentProcessor::HANDLER_FINISH_PROCESSING => ->(payment_transaction, response = nil) do
|
|
221
|
+
puts $_CGI.header
|
|
222
|
+
puts <<HTML
|
|
223
|
+
<pre>
|
|
224
|
+
Payment processing finished.
|
|
225
|
+
Payment status: '#{payment_transaction.payment.status}'
|
|
226
|
+
Payment transaction status: '#{payment_transaction.status}'
|
|
227
|
+
</pre>
|
|
228
|
+
HTML
|
|
229
|
+
end
|
|
230
|
+
})
|
|
238
231
|
```
|
|
239
232
|
|
|
240
233
|
Обработчики событий для сервиса:
|
|
@@ -244,11 +237,14 @@
|
|
|
244
237
|
|
|
245
238
|
4. <a name="stage_2_step_6"></a>Запуск обработки данных, полученных при возвращении пользователя с платежной формы:
|
|
246
239
|
|
|
247
|
-
```
|
|
248
|
-
|
|
240
|
+
```ruby
|
|
241
|
+
# Change hash format from {'key' => ['value']} to {'key' => 'value'} in map block
|
|
242
|
+
post_fields = Hash[CGI.new('html5').params.map {|key, value| [key, value.first]}]
|
|
243
|
+
|
|
244
|
+
payment_processor.process_customer_return CallbackResponse.new(post_fields), payment_transaction
|
|
249
245
|
```
|
|
250
246
|
Будут выполнены следующие шаги:
|
|
251
|
-
1. Проверка данных, полученные по возвращении клиента с платежной формы PaynetEasy
|
|
247
|
+
1. Проверка данных, полученные по возвращении клиента с платежной формы PaynetEasy
|
|
252
248
|
2. Изменение статуса платежной транзакции **status** на основе проверенных данных
|
|
253
249
|
3. Сохранение платежной транзакции обработчиком для `PaymentProcessor::HANDLER_SAVE_PAYMENT`
|
|
254
250
|
4. Вывод статуса платежа **status** и статуса платежной транзакции **status** на экран обработчиком для `PaymentProcessor::HANDLER_FINISH_PROCESSING`
|
data/doc/01-library-internals.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Внутренняя структура библиотеки
|
|
2
2
|
|
|
3
|
-
* [Семейство классов для хранения и обмена данными, PaynetEasy
|
|
4
|
-
* [Фронтенд библиотеки, PaynetEasy
|
|
5
|
-
* [Валидатор данных, PaynetEasy
|
|
6
|
-
* [Класс для работы с цепочками свойств, PaynetEasy
|
|
3
|
+
* [Семейство классов для хранения и обмена данными, PaynetEasy::PaynetEasyApi::PaymentData](library-internals/00-payment-data.md)
|
|
4
|
+
* [Фронтенд библиотеки, PaynetEasy::PaynetEasyApi::PaymentProcessor](library-internals/01-payment-processor.md)
|
|
5
|
+
* [Валидатор данных, PaynetEasy::PaynetEasyApi::Util::Validator](library-internals/02-validator.md)
|
|
6
|
+
* [Класс для работы с цепочками свойств, PaynetEasy::PaynetEasyApi::Util::PropertyAccessor](library-internals/03-property-accessor.md)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Классы для хранения и передачи данных
|
|
2
2
|
|
|
3
|
-
Семейство классов для хранения данных и обмена данными между библиотекой и CMS мерчанта. Расположены в пространстве имен **[PaynetEasy
|
|
3
|
+
Семейство классов для хранения данных и обмена данными между библиотекой и CMS мерчанта. Расположены в пространстве имен **[PaynetEasy::PaynetEasyApi::PaymentData](../../lib/paynet_easy/paynet_easy_api/payment_data)**. Представлены
|
|
4
|
+
следующими классами объектов:
|
|
4
5
|
* [PaymentTransaction](#PaymentTransaction)
|
|
5
6
|
* [Payment](#Payment)
|
|
6
7
|
* [QueryConfig](#QueryConfig)
|
|
@@ -9,51 +10,52 @@
|
|
|
9
10
|
* [CreditCard](#CreditCard)
|
|
10
11
|
* [RecurrentCard](#RecurrentCard)
|
|
11
12
|
|
|
12
|
-
Каждый из классов позволяет наполнять объект данными как с помощью
|
|
13
|
+
Каждый из классов позволяет наполнять объект данными как с помощью хэша, переданного в конструктор, так и с помощью сеттеров. При использовании хэша в качестве ключа для данных необходимо использовать название свойства класса.
|
|
13
14
|
|
|
14
15
|
##### Использование массива и underscored названий свойств класса
|
|
15
16
|
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
)
|
|
17
|
+
```ruby
|
|
18
|
+
payment = Payment.new(
|
|
19
|
+
{
|
|
20
|
+
'client_id' => 'CLIENT-112233',
|
|
21
|
+
'paynet_id' => 'PAYNET-112233',
|
|
22
|
+
'description' => 'test payment'
|
|
23
|
+
})
|
|
23
24
|
```
|
|
24
25
|
##### Использование сеттеров
|
|
25
26
|
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
```ruby
|
|
28
|
+
payment = Payment.new
|
|
29
|
+
|
|
30
|
+
payment.client_id = 'CLIENT-112233'
|
|
31
|
+
payment.paynet_id = 'PAYNET-112233'
|
|
32
|
+
payment.description = 'test payment'
|
|
32
33
|
```
|
|
33
34
|
|
|
34
35
|
### <a name="PaymentTransaction"></a> PaymentTransaction
|
|
35
36
|
|
|
36
|
-
Центральным объектом для хранения и передачи данных является объект класса **[PaynetEasy
|
|
37
|
+
Центральным объектом для хранения и передачи данных является объект класса **[PaynetEasy::PaynetEasyApi::PaymentData::PaymentTransaction](../../lib/paynet_easy/paynet_easy_api/payment_data/payment_transaction.rb)**. Именно он передается из CMS в библиотеку
|
|
38
|
+
при выполнении любого запроса. Хранит следующие данные:
|
|
37
39
|
|
|
38
40
|
Свойство класса |Тип |Поле запроса |Назначение
|
|
39
41
|
--------------------|---------------------------|---------------|-------------------------------------------------------
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
processor_type |string | |Transaction processor type (query, callback)
|
|
43
|
+
processor_name |string | |Transaction processor name (query or callback name)
|
|
42
44
|
status |string | |Transaction status (new, processing, approved, filtered, declined, error)
|
|
43
45
|
payment |[Payment](#Payment) | |Платеж, для которого создана транзакция
|
|
44
|
-
|
|
46
|
+
query_config |[QueryConfig](#QueryConfig)| |Payment query config
|
|
45
47
|
errors |array | |Transaction processing errors
|
|
46
48
|
|
|
47
|
-
Поля **
|
|
49
|
+
Поля **processor_type** и **processor_name** заполняются обработчиком транзакции после формирования платежного запроса. Поле **status** изменяется на основе данных ответа от сервера PaynetEasy.
|
|
48
50
|
|
|
49
51
|
### <a name="Payment"></a> Payment
|
|
50
52
|
|
|
51
|
-
Объект класса **[PaynetEasy
|
|
53
|
+
Объект класса **[PaynetEasy::PaynetEasyApi::PaymentData::Payment](../../lib/paynet_easy/paynet_easy_api/payment_data/payment.rb)**. Используется при выполнении всех запросов. Хранит следующие данные:
|
|
52
54
|
|
|
53
55
|
Свойство класса |Тип |Поле запроса |Назначение
|
|
54
56
|
--------------------|-----------------------------------|---------------|-------------------------------------------------------
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
client_id |string |client_orderid |Merchant payment identifier
|
|
58
|
+
paynet_id |string |orderid |Unique identifier of transaction assigned by PaynetEasy
|
|
57
59
|
description |string |order_desc |Brief payment description
|
|
58
60
|
destination |string |destination |Destination to where the payment goes
|
|
59
61
|
amount |float |amount |Amount to be charged
|
|
@@ -61,34 +63,34 @@ currency |string |currency |Three-l
|
|
|
61
63
|
comment |string |comment |A short comment for payment
|
|
62
64
|
status |string | |Payment status (new, preauth, capture, return)
|
|
63
65
|
customer |[Customer](#Customer) | |Payment customer
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
billing_address |[BillingAddress](#BillingAddress) | |Payment billing address
|
|
67
|
+
credit_card |[CreditCard](#CreditCard) | |Payment credit card
|
|
68
|
+
recurrent_card_from |[RecurrentCard](#RecurrentCard) | |Payment source recurrent card
|
|
69
|
+
recurrent_card_to |[RecurrentCard](#RecurrentCard) | |Payment destination recurrent card
|
|
68
70
|
|
|
69
71
|
Поле **status** заполняется обработчиком транзакции после формирования платежного запроса в зависимости от того, какую платежную операцию реализует обработчик.
|
|
70
72
|
|
|
71
73
|
### <a name="QueryConfig"></a> QueryConfig
|
|
72
74
|
|
|
73
|
-
Объект класса **[PaynetEasy
|
|
75
|
+
Объект класса **[PaynetEasy::PaynetEasyApi::PaymentData::QueryConfig](../../lib/paynet_easy/paynet_easy_api/payment_data/query_config.rb)**. Используется при выполнении всех запросов. Хранит следующие данные:
|
|
74
76
|
|
|
75
|
-
Свойство класса
|
|
76
|
-
|
|
77
|
-
login
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
Значение свойства
|
|
77
|
+
Свойство класса |Тип |Поле запроса |Назначение
|
|
78
|
+
----------------------|-------|-------------------|-------------------------------------------------------
|
|
79
|
+
login |string |login |Merchant login
|
|
80
|
+
site_url |string |site_url |URL the original payment is made from
|
|
81
|
+
redirect_url |string |redirect_url |URL the customer will be redirected to upon completion of the transaction
|
|
82
|
+
callback_url |string |server_callback_url|URL the transaction result will be sent to
|
|
83
|
+
end_point |integer| |Merchant end point
|
|
84
|
+
signing_key |string | |Merchant key for payment signing
|
|
85
|
+
gateway_mode |string | |Gateway mode (sandbox, production)
|
|
86
|
+
gateway_url_sandbox |string | |Sandbox gateway url
|
|
87
|
+
gateway_url_production|string | |Production gateway url
|
|
88
|
+
|
|
89
|
+
Значение свойства **end_point** участвует в формировании URL для вызова платежного метода шлюза PaynetEasy, а свойства **signing_key** - в формировании подписи для данных платежа. Значения свойств **gateway_url_sandbox** и **gateway_url_production** содержат ссылки на sandbox и production гейты. Выбор между этими url осуществляется на основе значения поля **gateway_mode**, если значение поля `QueryConfig::GATEWAY_MODE_SANDBOX`, то будет выбран url **gateway_url_sandbox**, если `QueryConfig::GATEWAY_MODE_PRODUCTION` - то url **gateway_url_production**.
|
|
88
90
|
|
|
89
91
|
### <a name="Customer"></a> Customer
|
|
90
92
|
|
|
91
|
-
Объект класса **[PaynetEasy
|
|
93
|
+
Объект класса **[PaynetEasy::PaynetEasyApi::PaymentData::Customer](../../lib/paynet_easy/paynet_easy_api/payment_data/customer.rb)**. Используется при выполнении следующих запросов:
|
|
92
94
|
* [sale](../payment-scenarios/00-sale-transactions.md#sale)
|
|
93
95
|
* [preauth](../payment-scenarios/01-preauth-capture-transactions.md#preauth)
|
|
94
96
|
* [sale-form, preauth-form, transfer-form](../payment-scenarios/05-payment-form-integration.md#form)
|
|
@@ -99,16 +101,16 @@ gatewayUrlProduction|string | |Production gateway url
|
|
|
99
101
|
|
|
100
102
|
Свойство класса |Тип |Поле запроса |Назначение
|
|
101
103
|
--------------------|-------|---------------|-------------------------------------------------------
|
|
102
|
-
|
|
103
|
-
|
|
104
|
+
first_name |string |first_name |Customer’s first name
|
|
105
|
+
last_name |string |last_name |Customer’s last name
|
|
104
106
|
email |string |email |Customer’s email address
|
|
105
|
-
|
|
107
|
+
ip_address |string |ipaddress |Customer’s IP address
|
|
106
108
|
birthday |string |birthday |Customer’s date of birth, in the format MMDDYY
|
|
107
109
|
ssn |string |ssn |Last four digits of the customer’s social security number
|
|
108
110
|
|
|
109
111
|
### <a name="BillingAddress"></a> BillingAddress
|
|
110
112
|
|
|
111
|
-
Объект класса **[PaynetEasy
|
|
113
|
+
Объект класса **[PaynetEasy::PaynetEasyApi::PaymentData::BillingAddress](../../lib/paynet_easy/paynet_easy_api/payment_data/billing_address.rb)**. Используется при выполнении следующих запросов:
|
|
112
114
|
* [sale](../payment-scenarios/00-sale-transactions.md#sale)
|
|
113
115
|
* [preauth](../payment-scenarios/01-preauth-capture-transactions.md#preauth)
|
|
114
116
|
* [sale-form, preauth-form, transfer-form](../payment-scenarios/05-payment-form-integration.md#form)
|
|
@@ -120,14 +122,14 @@ ssn |string |ssn |Last four digits of the customer’
|
|
|
120
122
|
country |string |country |Customer’s two-letter country code
|
|
121
123
|
state |string |state |Customer’s two-letter state code
|
|
122
124
|
city |string |city |Customer’s city
|
|
123
|
-
|
|
124
|
-
|
|
125
|
+
first_line |string |address1 |Customer’s address line 1
|
|
126
|
+
zip_code |string |zip_code |Customer’s ZIP code
|
|
125
127
|
phone |string |phone |Customer’s full international phone number, including country code
|
|
126
|
-
|
|
128
|
+
cell_phone |string |cell_phone |Customer’s full international cell phone number, including country code
|
|
127
129
|
|
|
128
130
|
### <a name="CreditCard"></a> CreditCard
|
|
129
131
|
|
|
130
|
-
Объект класса **[PaynetEasy
|
|
132
|
+
Объект класса **[PaynetEasy::PaynetEasyApi::PaymentData::CreditCard](../../lib/paynet_easy/paynet_easy_api/payment_data/credit_card.rb)**. Используется при выполнении следующих запросов:
|
|
131
133
|
* [sale](../payment-scenarios/00-sale-transactions.md#sale)
|
|
132
134
|
* [preauth](../payment-scenarios/01-preauth-capture-transactions.md#preauth)
|
|
133
135
|
|
|
@@ -136,14 +138,14 @@ cellPhone |string |cell_phone |Customer’s full international cel
|
|
|
136
138
|
Свойство класса |Тип |Поле запроса |Назначение
|
|
137
139
|
--------------------|-------|-------------------|-------------------------------------------------------
|
|
138
140
|
cvv2 |integer|cvv2 |RecurrentCard CVV2
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
141
|
+
card_printed_name |string |card_printed_name |Card holder name
|
|
142
|
+
credit_card_number |string |credit_card_number |Credit card number
|
|
143
|
+
expire_year |integer|expire_year |Card expiration year
|
|
144
|
+
expire_month |integer|expire_month |Card expiration month
|
|
143
145
|
|
|
144
146
|
### <a name="RecurrentCard"></a> RecurrentCard
|
|
145
147
|
|
|
146
|
-
Объект класса **[PaynetEasy
|
|
148
|
+
Объект класса **[PaynetEasy::PaynetEasyApi::PaymentData::RecurrentCard](../../lib/paynet_easy/paynet_easy_api/payment_data/recurrent_card.rb)**. Используется при выполнении следующих запросов:
|
|
147
149
|
* [create-card-ref](../payment-scenarios/04-recurrent-transactions.md#create-card-ref)
|
|
148
150
|
* [get-card-info](../payment-scenarios/04-recurrent-transactions.md#get-card-info)
|
|
149
151
|
* [make-rebill](../payment-scenarios/04-recurrent-transactions.md#make-rebill)
|
|
@@ -153,10 +155,10 @@ expireMonth |integer|expire_month |Card expiration month
|
|
|
153
155
|
|
|
154
156
|
Свойство класса |Тип |Поле запроса |Назначение
|
|
155
157
|
--------------------|-------|-------------------|-------------------------------------------------------
|
|
156
|
-
|
|
158
|
+
paynet_id |integer|cardrefid |RecurrentCard PaynetEasy ID
|
|
157
159
|
cvv2 |integer|cvv2 |RecurrentCard CVV2
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
160
|
+
card_printed_name |string | |Card holder name
|
|
161
|
+
expire_year |integer| |Card expiration year
|
|
162
|
+
expire_month |integer| |Card expiration month
|
|
161
163
|
bin |integer| |Bank Identification Number
|
|
162
|
-
|
|
164
|
+
last_four_digits |integer| |The last four digits of PAN (card number)
|