README.md in sberbank-acquiring-0.2.0 vs README.md in sberbank-acquiring-0.2.1
- old
+ new
@@ -1,12 +1,21 @@
# π³ Sberbank::Acquiring
+[](https://badge.fury.io/rb/sberbank-acquiring)
[](https://travis-ci.org/panasyuk/sberbank-acquiring)
π»Ruby Version 2.1 - 2.6 (+ JRuby)
πΠΠΈΠΊΠ°ΠΊΠΈΡ
ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
+## ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ
+- ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ
Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π‘Π±Π΅ΡΠ±Π°Π½ΠΊΠ° ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ (ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°ΠΊΠ°Π·ΠΎΠ², ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΈΡ
ΡΡΠ°ΡΡΡΠ° ΠΈ Ρ.Π΄)
+- ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π»ΡΠ±ΡΡ
Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π‘Π±Π΅ΡΠ±Π°Π½ΠΊΠ°
+- ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ callback-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Ρ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠΉ ΠΈ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠΉ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠ΅ΠΉ
+
+**Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅:**
+- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π€Π€Π 1.05
+
## ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
GEM sberbank-acquiring ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π±Π°Π½ΠΊΠ° Π‘Π±Π΅ΡΠ±Π°Π½ΠΊ. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ RESTful API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π‘Π±Π΅ΡΠ±Π°Π½ΠΊΠ°.
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π³Π΅ΠΌΠ°, Π°Π²ΡΠΎΡ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ (Ρ
ΠΎΡΡ Π±Ρ Π±Π΅Π³Π»ΠΎ) ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ [Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΊ JSON API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π‘Π±Π΅ΡΠ±Π°Π½ΠΊΠ°](https://securepayments.sberbank.ru/wiki/doku.php/integration:api:start#%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_rest), Π° ΡΠ°ΠΊ ΠΆΠ΅ [Wiki](https://github.com/panasyuk/sberbank-acquiring/wiki), ΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ
@@ -15,11 +24,11 @@
```ruby
# Gemfile
gem 'sberbank-acquiring', github: 'panasyuk/sberbank-acquiring'
# ΠΈΠ»ΠΈ
-gem 'sberbank-acquiring', '~> 0.1.0'
+gem 'sberbank-acquiring', '~> 0.2.1'
```
## ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
### SBRF::Acquiring::Client
@@ -159,48 +168,44 @@
```
### ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ callback-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ
API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π‘Π±Π΅ΡΠ±Π°Π½ΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π° Π²ΠΈΠ΄Π° callback-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ: Π±Π΅Π· ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΡ ΠΈ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΠΎΠΉ.
-Π ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΠΎΠΉ, Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ° 'getOrderStatusExtended' ΠΊ API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΡΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ°. Π ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° `checksum` Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°.
+Π ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΠΌΠΌΠΎΠΉ, Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠ° 'getOrderStatusExtended' ΠΊ API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΡΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ°. Π ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
ΡΠ»ΡΡΠ°ΡΡ
ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° `checksum` Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ [ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠΉ ΠΈΠ»ΠΈ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠΉ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ](https://securepayments.sberbank.ru/wiki/doku.php/integration:api:callback:start).
-#### Π‘ΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ
+#### Π‘ΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½Π°Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡ
```ruby
-# params = {}
+# params = { 'checksum' => '...', ... }
key = '20546026a3675994185a132875efe41a'
-callback_params = params.dup
-checksum = callback_params.delete('checksum')
-
validator = Sberbank::Acquiring::SymmetricKeyChecksumValidator.new(key)
-if validator.validate(checksum, callback_params)
+if validator.valid?(params)
# Π·Π°ΠΏΡΠΎΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅Π» Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° Π²Π΅ΡΠ½Π°
else
# Π·Π°ΠΏΡΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° Π½Π΅Π²Π΅ΡΠ½Π°
end
```
-#### ΠΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ
+#### ΠΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½Π°Ρ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡ
```ruby
-# params = {}
+# params = { 'checksum' => '...', ... }
pem = File.read('< ΠΏΡΡΡ Π΄ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° >')
-callback_params = params.dup
-checksum = callback_params.delete('checksum')
-
validator = Sberbank::Acquiring::AsymmetricKeyChecksumValidator.new(pem)
-if validator.validate(checksum, callback_params)
+if validator.valid?(params)
# Π·Π°ΠΏΡΠΎΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅Π» Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° Π²Π΅ΡΠ½Π°
else
# Π·Π°ΠΏΡΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° Π½Π΅Π²Π΅ΡΠ½Π°
end
```
## Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
-ΠΠΎΡΠ»Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ `bin/setup` ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠ°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ `rake test`, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΡ. Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² `bin/console`.
+- ΠΠΎΡΠ»Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ `bin/setup` ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
+- ΠΠ°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ `rake test`, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΡ.
+- Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² `bin/console`.
## TODO
1. ΠΠΎΠ±Π°Π²ΠΈΡΡ API Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΡ Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΏΠΎ Π€Π€Π 1.05. ΠΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ API:
```ruby