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 [![Build Status](https://travis-ci.org/panasyuk/sberbank-acquiring.svg?branch=master)](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,