Skip to content

pechorin/yandex-kassa-api

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Code Climate

YandexKassa

Simple API wrapper for [YandexKassa] (https://kassa.yandex.ru). Official API documentaton here

Installation

Add this line to your application's Gemfile:

gem 'yandex_kassa'

And then execute:

$ bundle

Or install it yourself as:

$ gem install yandex_kassa

Usage

First of all configure gem.

require "yandex_kassa"

YandexKassa.configure do |config|
  # API end url given by Yandex
  config.url = "https://bo-demo02.yamoney.ru:9094/webservice/deposition/api"
  #path to you *.cer generated by Yandex on your request
  config.cert = "123123.cer"
  #path to your private key
  config.key = "private.key"
  #path to deposit *.cer generated by Yandex
  config.deposit = "deposit.cer"
  #passphare for *.key file, omit if you don't need
  config.passphrase = "passphrase"
end

Doc for Deposition requests

testDeposition:

#enable std loggin for Rest client
RestClient.log = 'stdout'

#create api instance
api = YandexKassa.create

#send test deposition request
test_deposition_params = {
  dst_account: "410011234567", amount: "10.00", currency: 10643,
  agent_id: "123123", contract: "Fun stuff", client_order_id: 1, request_dt: Time.now.iso8601
}

data = api.test_deposition(test_deposition_params)
# => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<testDepositionResponse clientOrderId=\"1\" status=\"3\" error=\"41\" processedDT=\"2016-03-23T12:52:53.087+03:00\" identification=\"anonymous\" />\r\n"

#or equally
data = api.test_deposition do |request|
    request.dst_account = 410011234567
    request.amount = 10.00
    request.currency = 10643
    request.contract = "Fun stuff"
    request.dst_account = 410011234567
    request.client_order_id = 1
    request.request_dt = Time.now.iso8601
  end
# => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<testDepositionResponse clientOrderId=\"1\" status=\"3\" error=\"41\" processedDT=\"2016-03-23T12:52:53.087+03:00\" identification=\"anonymous\" />\r\n"

makeDeposition:

#send make deposition request
payment_params = { "skr_destinationCardSynonim" => "b0af887ae9ad01fe01ca65df7cff19a7b5fcbf9b_scn",
                   "pdr_firstName" => "Владимир",
                   "pdr_middleName" => "Владимирович",
                   "pdr_docNumber" => "4002109067",
                   "pdr_postcode" => "194044",
                   "pdr_country" => "643",
                   "pdr_city" => "Москва",
                   "pdr_adress" => "ул. Какая-то",
                   "pdr_birthDate" => "24.05.1987",
                   "pdr_birthplace" => "Новосибирск",
                   "pdr_docIssueYear" => "1999",
                   "pdr_docIssueMonth" => "7",
                   "pdr_docIssueDay" => "30",
                   "pdr_docIssuedBy" => "ТП",
                   "pof_offerAccepted" => 1,
                   "smsPhoneNumber" => "79653457676"
                  }

make_deposition_params = {
  dst_account: "410011234567", amount: "10.00", currency: 10643,
  agent_id: "123123", contract: "Fun stuff", client_order_id: 1, request_dt: Time.now.iso8601,
  payment_params: payment_params
}

data = api.make_deposition(make_deposition_params)
# => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<makeDepositionResponse clientOrderId=\"1\" status=\"3\" error=\"41\" processedDT=\"2016-03-23T12:52:53.087+03:00\" identification=\"anonymous\" />\r\n"

#or equally
data = api.make_deposition do |request|
    request.dst_account = 410011234567
    request.amount = 10.00
    request.currency = 10643
    request.contract = "Fun stuff"
    request.dst_account = 410011234567
    request.client_order_id = 1
    request.request_dt = Time.now.iso8601
    set_payment_params payment_params
  end
# => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<makeDepositionResponse clientOrderId=\"1\" status=\"3\" error=\"41\" processedDT=\"2016-03-23T12:52:53.087+03:00\" identification=\"anonymous\" />\r\n"

Balance:

balance_params = { dst_account: "410011234567", agent_id: "123123",client_order_id: 1 }
api.balance(balance_params)
# => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<balanceResponse clientOrderId=\"1\" status=\"0\" processedDT=\"2016-03-24T14:15:43.484+03:00\" balance=\"-8320.00\" />\r\n"

Getting card_synonym:

url = "https://demo-scrat.yamoney.ru/gates/card/storeCard"
error_url = "https://example.com/error_url"
success_url = "https://example.com/success_url"
demo_card_number = "4444444444444448"

store_card = YandexKassa::StoreCard.new(
  url: url,
  error_url: error_url,
  success_url: success_url,
  response_format: "json",
  destination_card_number: demo_card_number
)

response = store_card.request
# => "{\"storeCard\":{\"reason\":\"success\",\"skr_destinationCardCountryCode\":\"616\",\"skr_destinationCardSynonim\":\"mob64asbX5okWsURXB8QoYwYSwwZ.SC.201603\",\"skr_destinationCardType\":\"Visa\",\"skr_destinationCardPanmask\":\"444444******4448\"}}"

##Integration Following gists may be useful:

Yandex Kassa Card payment test

Yandex Kassa different accounts test

License

The gem is available as open source under the terms of the MIT License.

About

ruby API wrapper for Yandex Kassa

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 99.2%
  • Shell 0.8%