1
0
зеркало из https://github.com/glebtv/yookassa.git synced 2026-09-07 11:25:51 +03:00
Этот коммит содержится в:
Gleb Tv
2026-07-03 00:37:28 +03:00
родитель 2123838018 185a470641
Коммит 7339e4a53d
52 изменённых файлов: 1274 добавлений и 103 удалений

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

@@ -7,6 +7,7 @@ require "yookassa/config"
require "yookassa/payments"
require "yookassa/refunds"
require "yookassa/receipts"
require "yookassa/webhooks"
module Yookassa
class << self
@@ -31,5 +32,11 @@ module Yookassa
def receipts
@receipts ||= Receipts.new
end
def webhooks
@webhooks ||= Webhooks.new
end
end
end
require "yookassa/railtie" if defined?(Rails::Railtie)

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

@@ -2,7 +2,7 @@
require "httpclient"
require "json"
require_relative "./entity/error"
require_relative "entity/error"
module Yookassa
class Client
@@ -38,8 +38,9 @@ module Yookassa
api_call { http.post("#{API_URL}#{endpoint}", body: JSON.generate(payload), header: headers) }
end
def delete(endpoint, idempotency_key:)
api_call { http.delete("#{API_URL}#{endpoint}", header: { "Idempotence-Key" => idempotency_key }) }
def delete(endpoint, idempotency_key: nil)
headers = idempotency_key ? { "Idempotence-Key" => idempotency_key } : {}
api_call { http.delete("#{API_URL}#{endpoint}", header: headers) }
end
def api_call

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

@@ -2,6 +2,21 @@
module Yookassa
class Config
attr_accessor :shop_id, :api_key
# Source: https://yookassa.ru/developers/using-api/webhooks#ip
DEFAULT_WEBHOOK_ALLOWED_IPS = [
"185.71.76.0/27",
"185.71.77.0/27",
"77.75.153.0/25",
"77.75.156.11",
"77.75.156.35",
"77.75.154.128/25",
"2a02:5180::/32"
].freeze
attr_accessor :shop_id, :api_key, :webhook_token, :webhook_allowed_ips
def initialize
@webhook_allowed_ips = DEFAULT_WEBHOOK_ALLOWED_IPS.dup
end
end
end

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

@@ -1,8 +1,8 @@
# frozen_string_literal: true
require_relative "./client"
require_relative "./entity/deal"
require_relative "./entity/collection"
require_relative "client"
require_relative "entity/deal"
require_relative "entity/collection"
module Yookassa
class Deals < Client
@@ -13,7 +13,7 @@ module Yookassa
def create(payload:, idempotency_key: SecureRandom.hex(10))
data = post("deals", payload: payload, idempotency_key: idempotency_key)
Entity::Deal.new(**data.merge(idempotency_key: idempotency_key))
Entity::Deal.new(**data, idempotency_key: idempotency_key)
end
def list

7
lib/yookassa/engine.rb Обычный файл
Просмотреть файл

@@ -0,0 +1,7 @@
# frozen_string_literal: true
module Yookassa
class Engine < ::Rails::Engine
isolate_namespace Yookassa
end
end

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

@@ -1,6 +1,6 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "types"
module Yookassa
module Entity

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

@@ -1,6 +1,6 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "types"
module Yookassa
module Entity

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

@@ -1,6 +1,6 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "types"
module Yookassa
module Entity

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

@@ -1,6 +1,6 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "types"
module Yookassa
module Entity

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

@@ -1,11 +1,11 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./payment"
require_relative "./receipt"
require_relative "./refund"
require_relative "./webhook"
require_relative "./deal"
require_relative "types"
require_relative "payment"
require_relative "receipt"
require_relative "refund"
require_relative "webhook"
require_relative "deal"
module Yookassa
module Entity

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

@@ -1,6 +1,6 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "types"
module Yookassa
module Entity

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

@@ -1,6 +1,6 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "types"
module Yookassa
module Entity

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

@@ -1,7 +1,7 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./amount"
require_relative "types"
require_relative "amount"
module Yookassa
module Entity

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

@@ -1,6 +1,6 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "types"
module Yookassa
module Entity

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

@@ -1,13 +1,13 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./amount"
require_relative "./payment_methods"
require_relative "./confirmation"
require_relative "./recipient"
require_relative "./cancellation_details"
require_relative "./authorization_details"
require_relative "./transfer"
require_relative "types"
require_relative "amount"
require_relative "payment_methods"
require_relative "confirmation"
require_relative "recipient"
require_relative "cancellation_details"
require_relative "authorization_details"
require_relative "transfer"
module Yookassa
module Entity

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

@@ -1,7 +1,7 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./card"
require_relative "types"
require_relative "card"
module Yookassa
module Entity

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

@@ -1,8 +1,8 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./customer"
require_relative "./product"
require_relative "types"
require_relative "customer"
require_relative "product"
module Yookassa
module Entity

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

@@ -1,8 +1,8 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./amount"
require_relative "./payout_destinations"
require_relative "types"
require_relative "amount"
require_relative "payout_destinations"
module Yookassa
module Entity

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

@@ -1,7 +1,7 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./card"
require_relative "types"
require_relative "card"
module Yookassa
module Entity

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

@@ -1,8 +1,8 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./amount"
require_relative "./supplier"
require_relative "types"
require_relative "amount"
require_relative "supplier"
module Yookassa
module Entity

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

@@ -1,9 +1,9 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./customer"
require_relative "./product"
require_relative "./settlement"
require_relative "types"
require_relative "customer"
require_relative "product"
require_relative "settlement"
module Yookassa
module Entity

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

@@ -1,6 +1,6 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "types"
module Yookassa
module Entity

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

@@ -1,8 +1,8 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./amount"
require_relative "./source"
require_relative "types"
require_relative "amount"
require_relative "source"
module Yookassa
module Entity

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

@@ -1,7 +1,7 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./amount"
require_relative "types"
require_relative "amount"
module Yookassa
module Entity

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

@@ -1,7 +1,7 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./amount"
require_relative "types"
require_relative "amount"
module Yookassa
module Entity

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

@@ -1,6 +1,6 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "types"
module Yookassa
module Entity

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

@@ -1,6 +1,6 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "types"
module Yookassa
module Entity

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

@@ -1,7 +1,7 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "./amount"
require_relative "types"
require_relative "amount"
module Yookassa
module Entity

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

@@ -1,6 +1,6 @@
# frozen_string_literal: true
require_relative "./types"
require_relative "types"
module Yookassa
module Entity

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

@@ -1,8 +1,8 @@
# frozen_string_literal: true
require_relative "./client"
require_relative "./entity/payment"
require_relative "./entity/collection"
require_relative "client"
require_relative "entity/payment"
require_relative "entity/collection"
module Yookassa
class Payments < Client
@@ -13,17 +13,17 @@ module Yookassa
def create(payment:, idempotency_key: SecureRandom.hex(10))
data = post("payments", payload: payment, idempotency_key: idempotency_key)
Entity::Payment.new(**data.merge(idempotency_key: idempotency_key))
Entity::Payment.new(**data, idempotency_key: idempotency_key)
end
def capture(payment_id:, idempotency_key: SecureRandom.hex(10))
data = post("payments/#{payment_id}/capture", idempotency_key: idempotency_key)
Entity::Payment.new(**data.merge(idempotency_key: idempotency_key))
Entity::Payment.new(**data, idempotency_key: idempotency_key)
end
def cancel(payment_id:, idempotency_key: SecureRandom.hex(10))
data = post("payments/#{payment_id}/cancel", idempotency_key: idempotency_key)
Entity::Payment.new(**data.merge(idempotency_key: idempotency_key))
Entity::Payment.new(**data, idempotency_key: idempotency_key)
end
def list(filters: {})

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

@@ -1,8 +1,8 @@
# frozen_string_literal: true
require_relative "./client"
require_relative "./entity/payout"
require_relative "./entity/collection"
require_relative "client"
require_relative "entity/payout"
require_relative "entity/collection"
module Yookassa
class Payouts < Client
@@ -13,7 +13,7 @@ module Yookassa
def create(payload:, idempotency_key: SecureRandom.hex(10))
data = post("payouts", payload: payload, idempotency_key: idempotency_key)
Entity::Payout.new(**data.merge(idempotency_key: idempotency_key))
Entity::Payout.new(**data, idempotency_key: idempotency_key)
end
end
end

8
lib/yookassa/railtie.rb Обычный файл
Просмотреть файл

@@ -0,0 +1,8 @@
# frozen_string_literal: true
require "yookassa/engine"
module Yookassa
class Railtie < ::Rails::Railtie
end
end

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

@@ -1,8 +1,8 @@
# frozen_string_literal: true
require_relative "./client"
require_relative "./entity/receipt"
require_relative "./entity/collection"
require_relative "client"
require_relative "entity/receipt"
require_relative "entity/collection"
module Yookassa
class Receipts < Client
@@ -13,7 +13,7 @@ module Yookassa
def create(payload:, idempotency_key: SecureRandom.hex(10))
data = post("receipts", payload: payload, idempotency_key: idempotency_key)
Entity::Receipt.new(**data.merge(idempotency_key: idempotency_key))
Entity::Receipt.new(**data, idempotency_key: idempotency_key)
end
def list(filters: {})

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

@@ -1,8 +1,8 @@
# frozen_string_literal: true
require_relative "./client"
require_relative "./entity/refund"
require_relative "./entity/collection"
require_relative "client"
require_relative "entity/refund"
require_relative "entity/collection"
module Yookassa
class Refunds < Client
@@ -13,7 +13,7 @@ module Yookassa
def create(payload:, idempotency_key: SecureRandom.hex(10))
data = post("refunds", payload: payload, idempotency_key: idempotency_key)
Entity::Refund.new(**data.merge(idempotency_key: idempotency_key))
Entity::Refund.new(**data, idempotency_key: idempotency_key)
end
def list(filters: {})

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

@@ -1,7 +1,7 @@
# frozen_string_literal: true
require_relative "./client"
require_relative "./entity/store_info"
require_relative "client"
require_relative "entity/store_info"
module Yookassa
class Stores < Client

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

@@ -1,5 +1,5 @@
# frozen_string_literal: true
module Yookassa
VERSION = "0.2.0"
VERSION = "0.2.1"
end

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

@@ -1,14 +1,14 @@
# frozen_string_literal: true
require_relative "./client"
require_relative "./entity/webhook"
require_relative "./entity/collection"
require_relative "client"
require_relative "entity/webhook"
require_relative "entity/collection"
module Yookassa
class Webhooks < Client
def create(payload:, idempotency_key: SecureRandom.hex(10))
data = post("webhooks", payload: payload, idempotency_key: idempotency_key)
Entity::Webhook.new(**data.merge(idempotency_key: idempotency_key))
Entity::Webhook.new(**data, idempotency_key: idempotency_key)
end
def list
@@ -17,7 +17,7 @@ module Yookassa
end
def delete(webhook_id:)
delete("webhooks/#{webhook_id}")
super("webhooks/#{webhook_id}")
true
end
end