зеркало из
https://github.com/glebtv/yookassa.git
synced 2026-09-08 20:05:50 +03:00
Init yookassa
Этот коммит содержится в:
28
.circleci/config.yml
Обычный файл
28
.circleci/config.yml
Обычный файл
@@ -0,0 +1,28 @@
|
|||||||
|
version: 2.1
|
||||||
|
orbs:
|
||||||
|
ruby: circleci/ruby@0.1.2
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
docker:
|
||||||
|
- image: circleci/ruby:2.6.3-stretch-node
|
||||||
|
executor: ruby/default
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
- restore_cache:
|
||||||
|
keys:
|
||||||
|
- yookassa-bundle-{{ checksum "Gemfile.lock" }}
|
||||||
|
- yookassa-bundle-
|
||||||
|
- run:
|
||||||
|
name: Install dependencies
|
||||||
|
command: |
|
||||||
|
bundle check || bundle install --jobs=4 --retry=3 --path vendor/bundle
|
||||||
|
- save_cache:
|
||||||
|
paths:
|
||||||
|
- ./vendor/bundle
|
||||||
|
key: yookassa-bundle-{{ checksum "Gemfile.lock" }}
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Run tests
|
||||||
|
command: |
|
||||||
|
bundle exec rspec --profile 10 --format progress
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
sudo: false
|
|
||||||
language: ruby
|
|
||||||
cache: bundler
|
|
||||||
rvm:
|
|
||||||
- 2.5.3
|
|
||||||
before_install: gem install bundler -v 1.17.3
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
# Contributor Covenant Code of Conduct
|
|
||||||
|
|
||||||
## Our Pledge
|
|
||||||
|
|
||||||
In the interest of fostering an open and welcoming environment, we as
|
|
||||||
contributors and maintainers pledge to making participation in our project and
|
|
||||||
our community a harassment-free experience for everyone, regardless of age, body
|
|
||||||
size, disability, ethnicity, gender identity and expression, level of experience,
|
|
||||||
nationality, personal appearance, race, religion, or sexual identity and
|
|
||||||
orientation.
|
|
||||||
|
|
||||||
## Our Standards
|
|
||||||
|
|
||||||
Examples of behavior that contributes to creating a positive environment
|
|
||||||
include:
|
|
||||||
|
|
||||||
* Using welcoming and inclusive language
|
|
||||||
* Being respectful of differing viewpoints and experiences
|
|
||||||
* Gracefully accepting constructive criticism
|
|
||||||
* Focusing on what is best for the community
|
|
||||||
* Showing empathy towards other community members
|
|
||||||
|
|
||||||
Examples of unacceptable behavior by participants include:
|
|
||||||
|
|
||||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
|
||||||
advances
|
|
||||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
|
||||||
* Public or private harassment
|
|
||||||
* Publishing others' private information, such as a physical or electronic
|
|
||||||
address, without explicit permission
|
|
||||||
* Other conduct which could reasonably be considered inappropriate in a
|
|
||||||
professional setting
|
|
||||||
|
|
||||||
## Our Responsibilities
|
|
||||||
|
|
||||||
Project maintainers are responsible for clarifying the standards of acceptable
|
|
||||||
behavior and are expected to take appropriate and fair corrective action in
|
|
||||||
response to any instances of unacceptable behavior.
|
|
||||||
|
|
||||||
Project maintainers have the right and responsibility to remove, edit, or
|
|
||||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
|
||||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
|
||||||
permanently any contributor for other behaviors that they deem inappropriate,
|
|
||||||
threatening, offensive, or harmful.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
This Code of Conduct applies both within project spaces and in public spaces
|
|
||||||
when an individual is representing the project or its community. Examples of
|
|
||||||
representing a project or community include using an official project e-mail
|
|
||||||
address, posting via an official social media account, or acting as an appointed
|
|
||||||
representative at an online or offline event. Representation of a project may be
|
|
||||||
further defined and clarified by project maintainers.
|
|
||||||
|
|
||||||
## Enforcement
|
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
||||||
reported by contacting the project team at andy.paderin@gmail.com. All
|
|
||||||
complaints will be reviewed and investigated and will result in a response that
|
|
||||||
is deemed necessary and appropriate to the circumstances. The project team is
|
|
||||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
|
||||||
Further details of specific enforcement policies may be posted separately.
|
|
||||||
|
|
||||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
|
||||||
faith may face temporary or permanent repercussions as determined by other
|
|
||||||
members of the project's leadership.
|
|
||||||
|
|
||||||
## Attribution
|
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
|
||||||
available at [http://contributor-covenant.org/version/1/4][version]
|
|
||||||
|
|
||||||
[homepage]: http://contributor-covenant.org
|
|
||||||
[version]: http://contributor-covenant.org/version/1/4/
|
|
||||||
8
Gemfile
8
Gemfile
@@ -1,8 +1,10 @@
|
|||||||
source "https://rubygems.org"
|
# frozen_string_literal: true
|
||||||
|
|
||||||
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
# Specify your gem's dependencies in yandex-checkout.gemspec
|
git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
|
||||||
|
|
||||||
|
# Specify your gem's dependencies in yookassa.gemspec
|
||||||
gemspec
|
gemspec
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
|
|||||||
22
Gemfile.lock
22
Gemfile.lock
@@ -1,7 +1,7 @@
|
|||||||
PATH
|
PATH
|
||||||
remote: .
|
remote: .
|
||||||
specs:
|
specs:
|
||||||
yandex-checkout (0.1.1)
|
yookassa (0.1.0)
|
||||||
evil-client (~> 3.0)
|
evil-client (~> 3.0)
|
||||||
|
|
||||||
GEM
|
GEM
|
||||||
@@ -12,26 +12,26 @@ GEM
|
|||||||
ast (2.4.0)
|
ast (2.4.0)
|
||||||
byebug (11.0.1)
|
byebug (11.0.1)
|
||||||
coderay (1.1.2)
|
coderay (1.1.2)
|
||||||
concurrent-ruby (1.1.5)
|
concurrent-ruby (1.1.7)
|
||||||
crack (0.4.3)
|
crack (0.4.3)
|
||||||
safe_yaml (~> 1.0.0)
|
safe_yaml (~> 1.0.0)
|
||||||
diff-lcs (1.3)
|
diff-lcs (1.3)
|
||||||
docile (1.3.1)
|
docile (1.3.1)
|
||||||
dry-initializer (3.0.1)
|
dry-initializer (3.0.4)
|
||||||
evil-client (3.0.3)
|
evil-client (3.0.4)
|
||||||
dry-initializer (>= 2.1, < 4)
|
dry-initializer (>= 2.1, < 4)
|
||||||
mime-types (~> 3.1)
|
mime-types (~> 3.1)
|
||||||
rack (~> 2)
|
rack (~> 2)
|
||||||
tram-policy (>= 0.3.1, < 2)
|
tram-policy (>= 0.3.1, < 3)
|
||||||
hashdiff (0.4.0)
|
hashdiff (0.4.0)
|
||||||
i18n (1.6.0)
|
i18n (1.8.5)
|
||||||
concurrent-ruby (~> 1.0)
|
concurrent-ruby (~> 1.0)
|
||||||
jaro_winkler (1.5.2)
|
jaro_winkler (1.5.2)
|
||||||
json (2.2.0)
|
json (2.2.0)
|
||||||
method_source (0.9.2)
|
method_source (0.9.2)
|
||||||
mime-types (3.2.2)
|
mime-types (3.3.1)
|
||||||
mime-types-data (~> 3.2015)
|
mime-types-data (~> 3.2015)
|
||||||
mime-types-data (3.2019.0331)
|
mime-types-data (3.2020.1104)
|
||||||
parallel (1.17.0)
|
parallel (1.17.0)
|
||||||
parser (2.6.3.0)
|
parser (2.6.3.0)
|
||||||
ast (~> 2.4.0)
|
ast (~> 2.4.0)
|
||||||
@@ -42,7 +42,7 @@ GEM
|
|||||||
byebug (~> 11.0)
|
byebug (~> 11.0)
|
||||||
pry (~> 0.10)
|
pry (~> 0.10)
|
||||||
public_suffix (3.1.0)
|
public_suffix (3.1.0)
|
||||||
rack (2.0.7)
|
rack (2.2.3)
|
||||||
rainbow (3.0.0)
|
rainbow (3.0.0)
|
||||||
rake (12.3.2)
|
rake (12.3.2)
|
||||||
rspec (3.8.0)
|
rspec (3.8.0)
|
||||||
@@ -72,7 +72,7 @@ GEM
|
|||||||
json (>= 1.8, < 3)
|
json (>= 1.8, < 3)
|
||||||
simplecov-html (~> 0.10.0)
|
simplecov-html (~> 0.10.0)
|
||||||
simplecov-html (0.10.2)
|
simplecov-html (0.10.2)
|
||||||
tram-policy (1.0.1)
|
tram-policy (2.0.1)
|
||||||
dry-initializer (> 2, < 4)
|
dry-initializer (> 2, < 4)
|
||||||
i18n (~> 1.0)
|
i18n (~> 1.0)
|
||||||
unicode-display_width (1.6.0)
|
unicode-display_width (1.6.0)
|
||||||
@@ -92,7 +92,7 @@ DEPENDENCIES
|
|||||||
rubocop (~> 0.71)
|
rubocop (~> 0.71)
|
||||||
simplecov (~> 0.16)
|
simplecov (~> 0.16)
|
||||||
webmock (~> 3.5)
|
webmock (~> 3.5)
|
||||||
yandex-checkout!
|
yookassa!
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
1.17.3
|
1.17.3
|
||||||
|
|||||||
29
README.md
29
README.md
@@ -1,15 +1,17 @@
|
|||||||
# Yandex::Checkout
|
# YooKassa API Ruby Client
|
||||||
|
|
||||||
Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/yandex/checkout`. To experiment with that code, run `bin/console` for an interactive prompt.
|
[![Gem Version][gem-badger]][gem]
|
||||||
|
[](https://circleci.com/gh/paderinandrey/yookassa)
|
||||||
|
|
||||||
TODO: Delete this and the text above, and describe your gem
|
[gem-badger]: https://img.shields.io/gem/v/yookassa.svg?style=flat&color=blue
|
||||||
|
[gem]: https://rubygems.org/gems/yookassa
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
Add this line to your application's Gemfile:
|
Add this line to your application's Gemfile:
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
gem 'yandex-checkout'
|
gem 'yookassa'
|
||||||
```
|
```
|
||||||
|
|
||||||
And then execute:
|
And then execute:
|
||||||
@@ -18,26 +20,21 @@ And then execute:
|
|||||||
|
|
||||||
Or install it yourself as:
|
Or install it yourself as:
|
||||||
|
|
||||||
$ gem install yandex-checkout
|
$ gem install yookassa
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
TODO: Write usage instructions here
|
TODO: Write usage instructions here
|
||||||
|
|
||||||
## Development
|
|
||||||
|
|
||||||
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
||||||
|
|
||||||
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/yandex-checkout. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
Everyone is encouraged to help improve this project. Here are a few ways you can help:
|
||||||
|
|
||||||
|
- [Report bugs](https://github.com/paderinandrey/yookassa/issues)
|
||||||
|
- Fix bugs and [submit pull requests](https://github.com/paderinandrey/yookassa/pulls)
|
||||||
|
- Write, clarify, or fix documentation
|
||||||
|
- Suggest or add new features
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
||||||
|
|
||||||
## Code of Conduct
|
|
||||||
|
|
||||||
Everyone interacting in the Yandex::Checkout project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/yandex-checkout/blob/master/CODE_OF_CONDUCT.md).
|
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
require 'evil/client'
|
|
||||||
|
|
||||||
require 'yandex-checkout/version'
|
|
||||||
require 'yandex-checkout/payment'
|
|
||||||
require 'yandex-checkout/refund'
|
|
||||||
require 'yandex-checkout/response'
|
|
||||||
require 'yandex-checkout/callable'
|
|
||||||
require 'yandex-checkout/optional'
|
|
||||||
require 'yandex-checkout/entity/payment'
|
|
||||||
require 'yandex-checkout/entity/refund'
|
|
||||||
require 'yandex-checkout/error'
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
module YandexCheckout
|
|
||||||
VERSION = '0.1.1'
|
|
||||||
end
|
|
||||||
13
lib/yookassa.rb
Обычный файл
13
lib/yookassa.rb
Обычный файл
@@ -0,0 +1,13 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'evil/client'
|
||||||
|
|
||||||
|
require 'yookassa/version'
|
||||||
|
require 'yookassa/payment'
|
||||||
|
require 'yookassa/refund'
|
||||||
|
require 'yookassa/response'
|
||||||
|
require 'yookassa/callable'
|
||||||
|
require 'yookassa/optional'
|
||||||
|
require 'yookassa/entity/payment'
|
||||||
|
require 'yookassa/entity/refund'
|
||||||
|
require 'yookassa/error'
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
module Callable
|
module Callable
|
||||||
def call(*args)
|
def call(*args)
|
||||||
new(*args)
|
new(*args)
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
module Entity
|
module Entity
|
||||||
class Amount
|
class Amount
|
||||||
extend Dry::Initializer
|
extend Dry::Initializer
|
||||||
extend YandexCheckout::Callable
|
extend Yookassa::Callable
|
||||||
include YandexCheckout::Optional
|
include Yookassa::Optional
|
||||||
|
|
||||||
option :value, proc(&:to_f), optional: true
|
option :value, proc(&:to_f), optional: true
|
||||||
option :currency, proc(&:to_s), optional: true
|
option :currency, proc(&:to_s), optional: true
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
module Entity
|
module Entity
|
||||||
class Card
|
class Card
|
||||||
extend Dry::Initializer
|
extend Dry::Initializer
|
||||||
extend YandexCheckout::Callable
|
extend Yookassa::Callable
|
||||||
include YandexCheckout::Optional
|
include Yookassa::Optional
|
||||||
|
|
||||||
option :first6
|
option :first6
|
||||||
option :last4
|
option :last4
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
module Entity
|
module Entity
|
||||||
class Confirmation
|
class Confirmation
|
||||||
extend Dry::Initializer
|
extend Dry::Initializer
|
||||||
extend YandexCheckout::Callable
|
extend Yookassa::Callable
|
||||||
include YandexCheckout::Optional
|
include Yookassa::Optional
|
||||||
|
|
||||||
option :type, proc(&:to_s), optional: true
|
option :type, proc(&:to_s), optional: true
|
||||||
option :confirmation_url, proc(&:to_s), optional: true
|
option :confirmation_url, proc(&:to_s), optional: true
|
||||||
@@ -4,9 +4,9 @@ require_relative './amount'
|
|||||||
require_relative './payment_method'
|
require_relative './payment_method'
|
||||||
require_relative './confirmation'
|
require_relative './confirmation'
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
module Entity
|
module Entity
|
||||||
class Payment < YandexCheckout::Response
|
class Payment < Yookassa::Response
|
||||||
option :paid
|
option :paid
|
||||||
option :amount, Entity::Amount
|
option :amount, Entity::Amount
|
||||||
option :created_at
|
option :created_at
|
||||||
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
require_relative './card'
|
require_relative './card'
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
module Entity
|
module Entity
|
||||||
class PaymentMethod
|
class PaymentMethod
|
||||||
extend Dry::Initializer
|
extend Dry::Initializer
|
||||||
extend YandexCheckout::Callable
|
extend Yookassa::Callable
|
||||||
include YandexCheckout::Optional
|
include Yookassa::Optional
|
||||||
|
|
||||||
option :type, proc(&:to_s)
|
option :type, proc(&:to_s)
|
||||||
option :id, proc(&:to_s)
|
option :id, proc(&:to_s)
|
||||||
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
require_relative './amount'
|
require_relative './amount'
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
module Entity
|
module Entity
|
||||||
class Refund < YandexCheckout::Response
|
class Refund < Yookassa::Response
|
||||||
option :payment_id
|
option :payment_id
|
||||||
option :created_at, proc(&:to_s)
|
option :created_at, proc(&:to_s)
|
||||||
option :amount, Entity::Amount
|
option :amount, Entity::Amount
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
class Error
|
class Error
|
||||||
extend Dry::Initializer
|
extend Dry::Initializer
|
||||||
extend YandexCheckout::Callable
|
extend Yookassa::Callable
|
||||||
include YandexCheckout::Optional
|
include Yookassa::Optional
|
||||||
|
|
||||||
option :type, proc(&:to_s)
|
option :type, proc(&:to_s)
|
||||||
option :id, proc(&:to_s), optional: true
|
option :id, proc(&:to_s), optional: true
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
module Optional
|
module Optional
|
||||||
private
|
private
|
||||||
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
class Payment < Evil::Client
|
class Payment < Evil::Client
|
||||||
option :shop_id, proc(&:to_s)
|
option :shop_id, proc(&:to_s)
|
||||||
option :api_key, proc(&:to_s)
|
option :api_key, proc(&:to_s)
|
||||||
|
|
||||||
path { 'https://payment.yandex.net/api/v3/payments' }
|
path { 'https://api.yookassa.ru/v3/payments' }
|
||||||
security { basic_auth shop_id, api_key }
|
security { basic_auth shop_id, api_key }
|
||||||
|
|
||||||
operation :get_payment_info do
|
operation :get_payment_info do
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
class Refund < Evil::Client
|
class Refund < Evil::Client
|
||||||
option :shop_id, proc(&:to_s)
|
option :shop_id, proc(&:to_s)
|
||||||
option :api_key, proc(&:to_s)
|
option :api_key, proc(&:to_s)
|
||||||
|
|
||||||
path { 'https://payment.yandex.net/api/v3/refunds' }
|
path { 'https://api.yookassa.ru/v3/refunds' }
|
||||||
security { basic_auth shop_id, api_key }
|
security { basic_auth shop_id, api_key }
|
||||||
|
|
||||||
operation :get_refund_info do
|
operation :get_refund_info do
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module YandexCheckout
|
module Yookassa
|
||||||
class Response
|
class Response
|
||||||
extend Dry::Initializer
|
extend Dry::Initializer
|
||||||
option :id, proc(&:to_s)
|
option :id, proc(&:to_s)
|
||||||
5
lib/yookassa/version.rb
Обычный файл
5
lib/yookassa/version.rb
Обычный файл
@@ -0,0 +1,5 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module Yookassa
|
||||||
|
VERSION = '0.1.0'
|
||||||
|
end
|
||||||
5
spec/fixtures/payment_response.json
поставляемый
5
spec/fixtures/payment_response.json
поставляемый
@@ -9,11 +9,10 @@
|
|||||||
"confirmation": {
|
"confirmation": {
|
||||||
"type": "redirect",
|
"type": "redirect",
|
||||||
"return_url": "https://url.test",
|
"return_url": "https://url.test",
|
||||||
"confirmation_url": "https://money.yandex.ru/payments/external/confirmation?orderId=2490ded1-000f-5000-8000-1f64111bc63e"
|
"confirmation_url": "https://money.yookassa.ru/payments/external/confirmation?orderId=2490ded1-000f-5000-8000-1f64111bc63e"
|
||||||
},
|
},
|
||||||
"created_at": "2019-06-10T21:26:41.395Z",
|
"created_at": "2019-06-10T21:26:41.395Z",
|
||||||
"metadata": {
|
"metadata": {},
|
||||||
},
|
|
||||||
"payment_method": {
|
"payment_method": {
|
||||||
"type": "bank_card",
|
"type": "bank_card",
|
||||||
"id": "2490ded1-000f-5000-8000-1f64111bc63e",
|
"id": "2490ded1-000f-5000-8000-1f64111bc63e",
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require 'pry'
|
require 'pry'
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
require 'yandex-checkout'
|
require 'yookassa'
|
||||||
require 'webmock/rspec'
|
require 'webmock/rspec'
|
||||||
|
|
||||||
RSpec.configure do |config|
|
RSpec.configure do |config|
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
RSpec.describe YandexCheckout do
|
|
||||||
it 'has a version number' do
|
|
||||||
expect(YandexCheckout::VERSION).not_to be nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
RSpec.describe YandexCheckout::Payment do
|
RSpec.describe Yookassa::Payment do
|
||||||
let(:settings) { { shop_id: 'SHOP_ID', api_key: 'API_KEY' } }
|
let(:settings) { { shop_id: 'SHOP_ID', api_key: 'API_KEY' } }
|
||||||
let(:idempotency_key) { 12_345 }
|
let(:idempotency_key) { 12_345 }
|
||||||
let(:payment) { described_class.new(settings) }
|
let(:payment) { described_class.new(settings) }
|
||||||
|
|
||||||
shared_examples 'returns_payment_object' do
|
shared_examples 'returns_payment_object' do
|
||||||
it 'returns success' do
|
it 'returns success' do
|
||||||
expect(subject).to be_kind_of YandexCheckout::Response
|
expect(subject).to be_kind_of Yookassa::Response
|
||||||
expect(subject.id).to eq '2490ded1-000f-5000-8000-1f64111bc63e'
|
expect(subject.id).to eq '2490ded1-000f-5000-8000-1f64111bc63e'
|
||||||
expect(subject.test).to eq true
|
expect(subject.test).to eq true
|
||||||
expect(subject.paid).to eq false
|
expect(subject.paid).to eq false
|
||||||
@@ -18,17 +18,17 @@ RSpec.describe YandexCheckout::Payment do
|
|||||||
expect(subject.expires_at).to eq nil
|
expect(subject.expires_at).to eq nil
|
||||||
expect(subject.metadata).to eq Hash[]
|
expect(subject.metadata).to eq Hash[]
|
||||||
|
|
||||||
expect(subject.amount).to be_kind_of YandexCheckout::Entity::Amount
|
expect(subject.amount).to be_kind_of Yookassa::Entity::Amount
|
||||||
expect(subject.amount.currency).to eq 'RUB'
|
expect(subject.amount.currency).to eq 'RUB'
|
||||||
expect(subject.amount.value).to eq 10.0
|
expect(subject.amount.value).to eq 10.0
|
||||||
|
|
||||||
expect(subject.confirmation).to be_kind_of YandexCheckout::Entity::Confirmation
|
expect(subject.confirmation).to be_kind_of Yookassa::Entity::Confirmation
|
||||||
expect(subject.confirmation.confirmation_url).to eq 'https://money.yandex.ru/payments/external/confirmation?orderId=2490ded1-000f-5000-8000-1f64111bc63e'
|
expect(subject.confirmation.confirmation_url).to eq 'https://money.yookassa.ru/payments/external/confirmation?orderId=2490ded1-000f-5000-8000-1f64111bc63e'
|
||||||
expect(subject.confirmation.type).to eq 'redirect'
|
expect(subject.confirmation.type).to eq 'redirect'
|
||||||
expect(subject.confirmation.return_url).to eq 'https://url.test'
|
expect(subject.confirmation.return_url).to eq 'https://url.test'
|
||||||
expect(subject.confirmation.enforce).to eq nil
|
expect(subject.confirmation.enforce).to eq nil
|
||||||
|
|
||||||
expect(subject.payment_method).to be_kind_of YandexCheckout::Entity::PaymentMethod
|
expect(subject.payment_method).to be_kind_of Yookassa::Entity::PaymentMethod
|
||||||
expect(subject.payment_method.card).to eq nil
|
expect(subject.payment_method.card).to eq nil
|
||||||
expect(subject.payment_method.id).to eq '2490ded1-000f-5000-8000-1f64111bc63e'
|
expect(subject.payment_method.id).to eq '2490ded1-000f-5000-8000-1f64111bc63e'
|
||||||
expect(subject.payment_method.saved).to eq false
|
expect(subject.payment_method.saved).to eq false
|
||||||
@@ -39,7 +39,7 @@ RSpec.describe YandexCheckout::Payment do
|
|||||||
|
|
||||||
describe '#create' do
|
describe '#create' do
|
||||||
let(:params) { { payment: File.read('spec/fixtures/payment.json') } }
|
let(:params) { { payment: File.read('spec/fixtures/payment.json') } }
|
||||||
let(:url) { 'https://payment.yandex.net/api/v3/payments' }
|
let(:url) { 'https://api.yookassa.ru/v3/payments' }
|
||||||
let(:body) { File.read('spec/fixtures/payment_response.json') }
|
let(:body) { File.read('spec/fixtures/payment_response.json') }
|
||||||
|
|
||||||
before { stub_request(:any, //).to_return(body: body) }
|
before { stub_request(:any, //).to_return(body: body) }
|
||||||
@@ -55,7 +55,7 @@ RSpec.describe YandexCheckout::Payment do
|
|||||||
|
|
||||||
describe '#get_payment_info' do
|
describe '#get_payment_info' do
|
||||||
let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
|
let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
|
||||||
let(:url) { "https://payment.yandex.net/api/v3/payments/#{payment_id}" }
|
let(:url) { "https://api.yookassa.ru/v3/payments/#{payment_id}" }
|
||||||
let(:body) { File.read('spec/fixtures/payment_response.json') }
|
let(:body) { File.read('spec/fixtures/payment_response.json') }
|
||||||
|
|
||||||
before { stub_request(:any, //).to_return(body: body) }
|
before { stub_request(:any, //).to_return(body: body) }
|
||||||
@@ -72,7 +72,7 @@ RSpec.describe YandexCheckout::Payment do
|
|||||||
describe '#capture' do
|
describe '#capture' do
|
||||||
let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
|
let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
|
||||||
let(:params) { { payment: File.read('spec/fixtures/payment.json') } }
|
let(:params) { { payment: File.read('spec/fixtures/payment.json') } }
|
||||||
let(:url) { "https://payment.yandex.net/api/v3/payments/#{payment_id}/capture" }
|
let(:url) { "https://api.yookassa.ru/v3/payments/#{payment_id}/capture" }
|
||||||
let(:body) { File.read('spec/fixtures/payment_response.json') }
|
let(:body) { File.read('spec/fixtures/payment_response.json') }
|
||||||
|
|
||||||
before { stub_request(:any, //).to_return(body: body) }
|
before { stub_request(:any, //).to_return(body: body) }
|
||||||
@@ -88,7 +88,7 @@ RSpec.describe YandexCheckout::Payment do
|
|||||||
|
|
||||||
describe '#cancel' do
|
describe '#cancel' do
|
||||||
let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
|
let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
|
||||||
let(:url) { "https://payment.yandex.net/api/v3/payments/#{payment_id}/cancel" }
|
let(:url) { "https://api.yookassa.ru/v3/payments/#{payment_id}/cancel" }
|
||||||
let(:body) { File.read('spec/fixtures/payment_response.json') }
|
let(:body) { File.read('spec/fixtures/payment_response.json') }
|
||||||
|
|
||||||
before { stub_request(:any, //).to_return(body: body) }
|
before { stub_request(:any, //).to_return(body: body) }
|
||||||
@@ -1,20 +1,20 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
RSpec.describe YandexCheckout::Refund do
|
RSpec.describe Yookassa::Refund do
|
||||||
let(:settings) { { shop_id: 'SHOP_ID', api_key: 'API_KEY' } }
|
let(:settings) { { shop_id: 'SHOP_ID', api_key: 'API_KEY' } }
|
||||||
let(:idempotency_key) { 12_345 }
|
let(:idempotency_key) { 12_345 }
|
||||||
let(:payment) { described_class.new(settings) }
|
let(:payment) { described_class.new(settings) }
|
||||||
|
|
||||||
shared_examples 'returns_refund_object' do
|
shared_examples 'returns_refund_object' do
|
||||||
it 'returns success' do
|
it 'returns success' do
|
||||||
expect(subject).to be_kind_of YandexCheckout::Response
|
expect(subject).to be_kind_of Yookassa::Response
|
||||||
expect(subject.id).to eq '2491ab0c-0015-5000-9000-1640c7f1a6f0'
|
expect(subject.id).to eq '2491ab0c-0015-5000-9000-1640c7f1a6f0'
|
||||||
expect(subject.payment_id).to eq '2491a6e2-000f-5000-9000-1480e820ae17'
|
expect(subject.payment_id).to eq '2491a6e2-000f-5000-9000-1480e820ae17'
|
||||||
expect(subject.status).to eq 'succeeded'
|
expect(subject.status).to eq 'succeeded'
|
||||||
expect(subject.created_at).to eq '2019-06-11T11:58:04.502Z'
|
expect(subject.created_at).to eq '2019-06-11T11:58:04.502Z'
|
||||||
expect(subject.description).to eq 'test refund, idem-key 78c95366-ec4b-4284-a0fd-41e694bcdf11'
|
expect(subject.description).to eq 'test refund, idem-key 78c95366-ec4b-4284-a0fd-41e694bcdf11'
|
||||||
|
|
||||||
expect(subject.amount).to be_kind_of YandexCheckout::Entity::Amount
|
expect(subject.amount).to be_kind_of Yookassa::Entity::Amount
|
||||||
expect(subject.amount.currency).to eq 'RUB'
|
expect(subject.amount.currency).to eq 'RUB'
|
||||||
expect(subject.amount.value).to eq 8.0
|
expect(subject.amount.value).to eq 8.0
|
||||||
end
|
end
|
||||||
@@ -22,7 +22,7 @@ RSpec.describe YandexCheckout::Refund do
|
|||||||
|
|
||||||
describe '#create' do
|
describe '#create' do
|
||||||
let(:payload) { File.read('spec/fixtures/refund.json') }
|
let(:payload) { File.read('spec/fixtures/refund.json') }
|
||||||
let(:url) { 'https://payment.yandex.net/api/v3/refunds' }
|
let(:url) { 'https://api.yookassa.ru/v3/refunds' }
|
||||||
let(:body) { File.read('spec/fixtures/refund_response.json') }
|
let(:body) { File.read('spec/fixtures/refund_response.json') }
|
||||||
|
|
||||||
before { stub_request(:any, //).to_return(body: body) }
|
before { stub_request(:any, //).to_return(body: body) }
|
||||||
@@ -38,7 +38,7 @@ RSpec.describe YandexCheckout::Refund do
|
|||||||
|
|
||||||
describe '#get_refund_info' do
|
describe '#get_refund_info' do
|
||||||
let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
|
let(:payment_id) { '2490ded1-000f-5000-8000-1f64111bc63e' }
|
||||||
let(:url) { "https://payment.yandex.net/api/v3/refunds/#{payment_id}" }
|
let(:url) { "https://api.yookassa.ru/v3/refunds/#{payment_id}" }
|
||||||
let(:body) { File.read('spec/fixtures/refund_response.json') }
|
let(:body) { File.read('spec/fixtures/refund_response.json') }
|
||||||
|
|
||||||
before { stub_request(:any, //).to_return(body: body) }
|
before { stub_request(:any, //).to_return(body: body) }
|
||||||
7
spec/yookassa_spec.rb
Обычный файл
7
spec/yookassa_spec.rb
Обычный файл
@@ -0,0 +1,7 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
RSpec.describe Yookassa do
|
||||||
|
it 'has a version number' do
|
||||||
|
expect(Yookassa::VERSION).not_to be nil
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
lib = File.expand_path('lib', __dir__)
|
lib = File.expand_path('lib', __dir__)
|
||||||
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
||||||
require 'yandex-checkout/version'
|
require 'yookassa/version'
|
||||||
|
|
||||||
Gem::Specification.new do |spec|
|
Gem::Specification.new do |spec|
|
||||||
spec.name = 'yandex-checkout'
|
spec.name = 'yookassa'
|
||||||
spec.version = YandexCheckout::VERSION
|
spec.version = Yookassa::VERSION
|
||||||
spec.authors = 'Andrey Paderin'
|
spec.authors = 'Andrey Paderin'
|
||||||
spec.email = 'andy.paderin@gmail.com'
|
spec.email = 'andy.paderin@gmail.com'
|
||||||
|
|
||||||
spec.summary = 'This product is used for managing payments under The Yandex.Checkout API For usage by those who implemented Yandex.Checkout using the API method.'
|
spec.summary = 'This product is used for managing payments under The Yookassa API For usage by those who implemented Yookassa using the API method.'
|
||||||
spec.homepage = 'https://github.com/paderinandrey/yandex-checkout'
|
spec.homepage = 'https://github.com/paderinandrey/yookassa'
|
||||||
spec.license = 'MIT'
|
spec.license = 'MIT'
|
||||||
|
|
||||||
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
||||||
Ссылка в новой задаче
Block a user