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 +[![Gem Version](https://badge.fury.io/rb/sberbank-acquiring.svg)](https://badge.fury.io/rb/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) πŸŽˆΠΠΈΠΊΠ°ΠΊΠΈΡ… сторонних зависимостСй +## Основная Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ +- Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ всСх запросов ΠΊ 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