зеркало из
https://github.com/glebtv/yookassa.git
synced 2026-09-03 17:55:51 +03:00
First outgoing request and replacement of get_payment_info
Этот коммит содержится в:
1
Gemfile
1
Gemfile
@@ -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
|
||||
|
||||
Ссылка в новой задаче
Block a user