1
0
зеркало из https://github.com/glebtv/yookassa.git synced 2026-09-03 17:55:51 +03:00

First outgoing request and replacement of get_payment_info

Этот коммит содержится в:
Ivan Shamatov
2021-10-30 22:49:28 +03:00
родитель cb1398b8fb
Коммит 495bd54fdf
7 изменённых файлов: 14 добавлений и 25 удалений

Просмотреть файл

@@ -15,5 +15,6 @@ group :development, :test do
gem "rubocop", "~> 1.22"
gem "rubocop-rake", "~> 0.6.0"
gem "rubocop-rspec", "~> 2.5"
gem "simplecov", "~> 0.16"
gem "webmock", "~> 3.14"
end

Просмотреть файл

@@ -1,7 +1,7 @@
# frozen_string_literal: true
require "http"
require "dry/initializer"
require "dry-initializer"
require "yookassa/version"
require "yookassa/payment"
require "yookassa/refund"

Просмотреть файл

@@ -6,18 +6,20 @@ module Yookassa
def get(endpoint, query: {})
response = client.get("#{API_URL}#{endpoint}", params: query)
body = JSON.parse(response.body.to_s, symbolize_names: true)
return Error.new(response.parse) if response.status.client_error?
return Error.new(body) if response.status.client_error?
yield(response.parse) if block_given?
yield(body) if block_given?
end
def post(endpoint, idempotency_key:, payload: {})
response = client.headers("Idempotence-Key" => idempotency_key).post("#{API_URL}#{endpoint}", json: payload)
body = JSON.parse(response.body.to_s, symbolize_names: true)
return Error.new(response.parse) if response.status.client_error?
return Error.new(body) if response.status.client_error?
yield(response.parse) if block_given?
yield(body) if block_given?
end
def client

Просмотреть файл

@@ -15,25 +15,25 @@ module Yookassa
def get_payment_info(payment_id:)
get("payments/#{payment_id}") do |response|
Entity::Payment.new(response)
Entity::Payment.new(**response)
end
end
def create(payment:, idempotency_key: SecureRandom.hex(10))
post("payments", payload: payment, idempotency_key: idempotency_key) do |response|
Entity::Payment.new(response)
Entity::Payment.new(**response)
end
end
def capture(payment_id:, idempotency_key: SecureRandom.hex(10))
post("payments/#{payment_id}/capture", idempotency_key: idempotency_key) do |response|
Entity::Payment.new(response)
Entity::Payment.new(**response)
end
end
def cancel(payment_id:, idempotency_key: SecureRandom.hex(10))
post("payments/#{payment_id}/cancel", idempotency_key: idempotency_key) do |response|
Entity::Payment.new(response)
Entity::Payment.new(**response)
end
end

Просмотреть файл

@@ -15,13 +15,13 @@ module Yookassa
def get_refund_info(payment_id:)
get("refunds/#{payment_id}") do |response|
Entity::Refund.new(response)
Entity::Refund.new(**response)
end
end
def create(payload:, idempotency_key: SecureRandom.hex(10))
post("refunds", payload: payload, idempotency_key: idempotency_key) do |response|
Entity::Refund.new(response)
Entity::Refund.new(**response)
end
end
end

Просмотреть файл

@@ -5,16 +5,5 @@ module Yookassa
extend Dry::Initializer
option :id, proc(&:to_s)
option :status, proc(&:to_s), default: proc {}
class << self
def build(*res)
body = res.last
new JSON.parse(body.first)
end
def new(opts)
super opts.transform_keys(&:to_sym)
end
end
end
end

Просмотреть файл

@@ -24,7 +24,4 @@ Gem::Specification.new do |spec|
spec.add_runtime_dependency "dry-initializer"
spec.add_runtime_dependency "http", "~> 5.0.1"
spec.add_development_dependency "rspec", "~> 3.5"
spec.add_development_dependency "simplecov", "~> 0.16"
end