README.md in sberbank-acquiring-0.1.0 vs README.md in sberbank-acquiring-0.2.0
- old
+ new
@@ -1,20 +1,25 @@
-# Sberbank::Acquiring
+# π³ Sberbank::Acquiring
[](https://travis-ci.org/panasyuk/sberbank-acquiring)
+π»Ruby Version 2.1 - 2.6 (+ JRuby)
+πΠΠΈΠΊΠ°ΠΊΠΈΡ
ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
+
## ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
GEM sberbank-acquiring ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π±Π°Π½ΠΊΠ° Π‘Π±Π΅ΡΠ±Π°Π½ΠΊ. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ RESTful API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π‘Π±Π΅ΡΠ±Π°Π½ΠΊΠ°.
-ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π³Π΅ΠΌΠ°, Π°Π²ΡΠΎΡ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ (Ρ
ΠΎΡΡ Π±Ρ Π±Π΅Π³Π»ΠΎ) ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ [Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΊ JSON API ΡΠΊΠ²Π°ΠΉΡΠΈΠ½Π³Π° Π‘Π±Π΅ΡΠ±Π°Π½ΠΊΠ°](https://securepayments.sberbank.ru/wiki/doku.php/integration:api:start), Π° ΡΠ°ΠΊ ΠΆΠ΅ [Wiki](https://github.com/panasyuk/sberbank-acquiring/wiki), ΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ
+ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Π³Π΅ΠΌΠ°, Π°Π²ΡΠΎΡ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅Ρ (Ρ
ΠΎΡΡ Π±Ρ Π±Π΅Π³Π»ΠΎ) ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ [Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΊ 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), ΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ
## Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
```ruby
# Gemfile
gem 'sberbank-acquiring', github: 'panasyuk/sberbank-acquiring'
+# ΠΈΠ»ΠΈ
+gem 'sberbank-acquiring', '~> 0.1.0'
```
## ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
### SBRF::Acquiring::Client
@@ -160,31 +165,46 @@
#### Π‘ΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ
```ruby
# params = {}
-symmetric_key = '20546026a3675994185a132875efe41a'
+key = '20546026a3675994185a132875efe41a'
callback_params = params.dup
checksum = callback_params.delete('checksum')
-validator = Sberbank::Acquiring::SymmetricKeyChecksumValidator.new(symmetric_key)
+validator = Sberbank::Acquiring::SymmetricKeyChecksumValidator.new(key)
if validator.validate(checksum, callback_params)
# Π·Π°ΠΏΡΠΎΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅Π» Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° Π²Π΅ΡΠ½Π°
else
# Π·Π°ΠΏΡΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° Π½Π΅Π²Π΅ΡΠ½Π°
end
```
+#### ΠΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ
+
+```ruby
+# params = {}
+pem = File.read('< ΠΏΡΡΡ Π΄ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° >')
+
+callback_params = params.dup
+checksum = callback_params.delete('checksum')
+
+validator = Sberbank::Acquiring::AsymmetricKeyChecksumValidator.new(pem)
+if validator.validate(checksum, callback_params)
+ # Π·Π°ΠΏΡΠΎΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅Π» Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° Π²Π΅ΡΠ½Π°
+else
+ # Π·Π°ΠΏΡΠΎΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΡΠΌΠΌΠ° Π½Π΅Π²Π΅ΡΠ½Π°
+end
+```
+
## Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
ΠΠΎΡΠ»Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ `bin/setup` ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠ°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ `rake test`, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΡΡ. Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² `bin/console`.
## TODO
-1. ΠΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Callback-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π΄Π»Ρ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°
-2. v0.1.0
-3. ΠΠΎΠ±Π°Π²ΠΈΡΡ API Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΡ Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΏΠΎ Π€Π€Π 1.05. ΠΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ API:
+1. ΠΠΎΠ±Π°Π²ΠΈΡΡ API Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΎΡΠΏΡΠ°Π²ΠΊΡ Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΏΠΎ Π€Π€Π 1.05. ΠΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ API:
```ruby
sberbank_order = SBRF::Acquiring::Order.new(
number: 'order#1',
amount: 1,
amount_cents: 100,