Module: TinkoffClient::Payment::EncryptCardData

Included in:
TinkoffClient::Payment
Defined in:
lib/tinkoff_client/payment/encrypt_card_data.rb

Instance Method Summary collapse

Instance Method Details

#encrypt_data(keys) ⇒ Object

Метод реализует шифрование данных карты

Используется в методе FinishAuthorize www.tinkoff.ru/kassa/develop/api/payments/finishAuthorize-request/

Объект CardData собирается в виде списка «ключ=значение» (разделитель «;»), зашифровывается открытым ключом (X509 RSA 2048), получившееся бинарное значение кодируется в Base64. Открытый ключ генерируется Банком и выдается при регистрации терминала.

Все поля обязательны.

Parameters:

  • PAN (Number)
  • ExpDate (Number)
  • CardHolder (String)
  • CVV (String)

See Also:



22
23
24
25
26
27
# File 'lib/tinkoff_client/payment/encrypt_card_data.rb', line 22

def encrypt_data(keys)
  card = keys[:Card]
  concatenated = card.map { |k, v| [k, v].join("=") }.join(";")
  public_key = OpenSSL::PKey::RSA.new File.read(TinkoffClient.configuration.payment_public_key)
  card_data = Base64.encode64(public_key.public_encrypt(concatenated))
end