diff --git a/Gemfile.lock b/Gemfile.lock index 8bac114..86389c6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,28 +1,28 @@ PATH remote: . specs: - hyperwallet-ruby (0.1.0) - activesupport (~> 6.0.3.2) - faraday (~> 0.17.3) + hyperwallet-ruby (0.1.1) + faraday (~> 1.0) GEM remote: https://rubygems.org/ specs: - activesupport (6.0.3.2) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - zeitwerk (~> 2.2, >= 2.2.2) coderay (1.1.3) - concurrent-ruby (1.1.6) diff-lcs (1.3) - faraday (0.17.3) + faraday (1.4.3) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.1) multipart-post (>= 1.2, < 3) - i18n (1.8.3) - concurrent-ruby (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.1.0) method_source (1.0.0) - minitest (5.14.1) multipart-post (2.1.1) pry (0.13.1) coderay (~> 1.1) @@ -41,10 +41,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.9.0) rspec-support (3.9.3) - thread_safe (0.3.6) - tzinfo (1.2.7) - thread_safe (~> 0.1) - zeitwerk (2.3.0) + ruby2_keywords (0.0.4) PLATFORMS ruby diff --git a/README.md b/README.md index 7881f27..ad2364d 100644 --- a/README.md +++ b/README.md @@ -41,3 +41,136 @@ The gem is available as open source under the terms of the [MIT License](https:/ ## Code of Conduct Everyone interacting in the Hyperwallet::Ruby project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/hyperwallet-ruby/blob/master/CODE_OF_CONDUCT.md). + +### Payee +```ruby + # index + payee_connector = Hyperwallet::Resources::Payee + payees = payee_connector.index +``` + +#### create +```ruby + payload2 = {:client_user_id => 'test5userid5', + :profile_type => 'INDIVIDUAL' , + :first_name => 'Han', + :last_name => 'Solo' , + :date_of_birth => '1980-11-12', + :email => 'jgtr7@hey.com', + :address_line1 => '675 Dolores St', + :city => 'Berkeley' , + :state_province => 'CA' , + :country => 'US', + :postal_code => '94704', + :program_token => 'prg-1bd466b5-2a58-4e3a-8942-6a93591a9a86' } + + new_payee2 = Hyperwallet::Resources::Payee.create(payload2) + +``` +#### show +```ruby + user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601" + payee = Hyperwallet::Resources::Payee.new + payee.show(token: user_token) +``` +#### Getting a new auth token +```ruby + user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601" + existing_payee = Hyperwallet::Resources::Payee.new(token: user_token) + token = existing_payee.get_authentication_token +``` +#### Getting the list of bank accounts for a user +```ruby + user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601" + existing_payee = Hyperwallet::Resources::Payee.new(token: user_token) + bank_accounts = existing_payee.index_bank_accounts +``` +### Transfer Methods +#### Getting transfer methods +##### On TransferMethod +```ruby + user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601" + transfer_methods = Hyperwallet::Resources::TransferMethod.index(user_token: user_token) +``` +##### On BankAccount +```ruby + user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601" + bank_accounts = Hyperwallet::Resources::BankAccount.index(user_token: user_token) +``` +#### Show BankAccount method +```ruby + user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601" + transfer_token = "trm-e998ba11-ca03-4a27-8bd9-dc95120d8e57" + bank_account = Hyperwallet::Resources::BankAccount.new + bank_account.show(user_token: user_token, transfer_token: transfer_token) +``` +#### Show TransferMethod method +```ruby + user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601" + transfer_token = "trm-e998ba11-ca03-4a27-8bd9-dc95120d8e57" + transfer_method = Hyperwallet::Resources::TransferMethod.new + transfer_method.show(user_token: user_token, transfer_token: transfer_token) +``` +#### Creating a bank account +```ruby + user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601" + + payload3 = { + token: user_token, + profile_type: "INDIVIDUAL", + transfer_method_country: "US", + transfer_method_currency: "USD", + type: "BANK_ACCOUNT", + branch_id: 101089292, + bank_account_id: 7861012347, + bank_account_purpose: "CHECKING", + bank_account_relationship: "SELF" + } + + existing_payee = Hyperwallet::Resources::Payee.new(payload) + new_account = existing_payee.create_bank_account +``` + + + +### Payment +#### Create +```ruby + bank_account_token = "trm-b7b7e1f9-9a02-4cdf-a281-6beeb958c41a" + bank_account_token = 'trm-e998ba11-ca03-4a27-8bd9-dc95120d8e57' + + payload = { + amount: "20.00", + currency: "USD", + client_payment_id: "123456789", + destination_token: bank_account_token, + program_token: "prg-1bd466b5-2a58-4e3a-8942-6a93591a9a86", + purpose: "PP0001" + } + + new_payment = Hyperwallet::Resources::Payment.create(payload) +``` + +#### Get payment +```ruby + token = "pmt-cb7ba194-1e2c-4227-ae43-006fafba062d" + payment = Hyperwallet::Resources::Payment.new + retrieved_payment = payment.show(token: token) +``` +#### List payments +```ruby + payments = Hyperwallet::Resources::Payment.index +``` + +### Webhook Notification +```ruby + webhook_token = "wbh-e4b41307-536b-45d1-bf0d-55fe2d011aa8" + webhook = Hyperwallet::Resources::WebhookNotification.new + webhook.show(token: webhook_token) +``` +### Receipts +```ruby + user_token = "usr-6ac6618e-44fe-4252-af8c-76cd4e68f601" + receipt = Hyperwallet::Resources::Receipt.new + receipt.show(token: user_token) +``` \ No newline at end of file diff --git a/hyperwallet-ruby.gemspec b/hyperwallet-ruby.gemspec index 16fb53b..fee65c9 100644 --- a/hyperwallet-ruby.gemspec +++ b/hyperwallet-ruby.gemspec @@ -27,8 +27,7 @@ Gem::Specification.new do |s| s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) } s.require_paths = ["lib"] - s.add_dependency 'activesupport', "~> 6.0.3.2" - s.add_dependency "faraday", "~> 0.17.3" + s.add_dependency "faraday", "~> 1.0" s.add_development_dependency "bundler", "~> 2.0" s.add_development_dependency "rake", "~> 13.0" s.add_development_dependency "rspec", "~> 3.0" diff --git a/lib/hyperwallet/api/client.rb b/lib/hyperwallet/api/client.rb index 77159e5..fa58c5b 100644 --- a/lib/hyperwallet/api/client.rb +++ b/lib/hyperwallet/api/client.rb @@ -30,16 +30,16 @@ def post(resource:, payload: nil) def handle_response if self.response.success? - @body = JSON.parse(self.response.body) + @body = JSON.parse(self.response.body) unless self.response.body.empty? else @errors = JSON.parse(self.response.body) end end def get_connector - Faraday.new(url: base_url) do |conn| + Faraday.new(url: base_url, proxy: self.class.superclass.proxy) do |conn| conn.adapter :net_http - conn.basic_auth(self.class.api_user, self.class.api_password) + conn.basic_auth(self.class.superclass.api_user, self.class.superclass.api_password) end end @@ -52,10 +52,10 @@ def base_url end def active_url - if self.class.uat? + if self.class.superclass.uat? UAT_URL - elsif self.class.production? - BASE_URL + elsif self.class.superclass.production? + PRODUCTION_URL end end diff --git a/lib/hyperwallet/api/config.rb b/lib/hyperwallet/api/config.rb index 4a1b8dd..1ce9719 100644 --- a/lib/hyperwallet/api/config.rb +++ b/lib/hyperwallet/api/config.rb @@ -2,15 +2,14 @@ module Hyperwallet module Api class Config - PRODUCTION_URL = "https://api.sandbox.hyperwallet.com/rest" + PRODUCTION_URL = "https://api.paylution.com/rest" UAT_URL = "https://uat-api.paylution.com/rest" API_VERSION = "/v3" MODES = [:uat, :production] class << self - cattr_accessor :api_user, :api_password, :api_mode - + attr_accessor :api_user, :api_password, :api_mode, :proxy def uat? api_mode == :uat end @@ -21,4 +20,4 @@ def production? end end end -end \ No newline at end of file +end diff --git a/lib/hyperwallet/hyperwallet.rb b/lib/hyperwallet/hyperwallet.rb index 5ec2627..23b6bb3 100644 --- a/lib/hyperwallet/hyperwallet.rb +++ b/lib/hyperwallet/hyperwallet.rb @@ -1,4 +1,3 @@ -require 'active_support/core_ext/class/attribute_accessors' require "hyperwallet/version" require "hyperwallet/api" require "hyperwallet/resources" diff --git a/lib/hyperwallet/resources.rb b/lib/hyperwallet/resources.rb index 355e8c2..776bc50 100644 --- a/lib/hyperwallet/resources.rb +++ b/lib/hyperwallet/resources.rb @@ -4,4 +4,5 @@ require 'hyperwallet/resources/transfer_method' require 'hyperwallet/resources/bank_account' require 'hyperwallet/resources/venmo_account' -require 'hyperwallet/resources/webhook_notification' \ No newline at end of file +require 'hyperwallet/resources/webhook_notification' +require 'hyperwallet/resources/receipt' \ No newline at end of file diff --git a/lib/hyperwallet/resources/base.rb b/lib/hyperwallet/resources/base.rb index 16f6ea2..85528c9 100644 --- a/lib/hyperwallet/resources/base.rb +++ b/lib/hyperwallet/resources/base.rb @@ -91,7 +91,7 @@ def data_for_hydration end class << self - cattr_accessor :connector + attr_accessor :connector def index connector.get(resource: method_endpoint) @@ -99,7 +99,7 @@ def index def create(data) response = connector.post(resource: method_endpoint, - payload: prepare_payload(payload_attributes: data).to_json) + payload: JSON.generate(prepare_payload(payload_attributes: data))) data = if success? response @@ -135,7 +135,7 @@ def instantiate_from_data(data = {}) data.each_pair do |key, value| attributes.merge!({snakecase(key).to_sym => value}) end - self.send(:new, attributes) + self.send(:new, **attributes) end def camelCase(key) diff --git a/lib/hyperwallet/resources/payee.rb b/lib/hyperwallet/resources/payee.rb index 92f56b6..93b1b36 100644 --- a/lib/hyperwallet/resources/payee.rb +++ b/lib/hyperwallet/resources/payee.rb @@ -1,4 +1,4 @@ -require 'active_support/json' +require 'json' module Hyperwallet module Resources @@ -30,7 +30,7 @@ def show(token: nil) end def update(token:, attributes_to_update: ) - connector.put(resource: ENDPOINT + "/" + token, payload: prepare_payload(payload_attributes: attributes_to_update).to_json) + connector.put(resource: ENDPOINT + "/" + token, payload: JSON.generate(prepare_payload(payload_attributes: attributes_to_update))) handle_response end diff --git a/lib/hyperwallet/resources/receipt.rb b/lib/hyperwallet/resources/receipt.rb new file mode 100644 index 0000000..37f86b0 --- /dev/null +++ b/lib/hyperwallet/resources/receipt.rb @@ -0,0 +1,35 @@ +require 'json' + +module Hyperwallet + module Resources + class Receipt < Hyperwallet::Resources::Base + + ENDPOINT = 'users' + + attr_accessor :token, + :journal_id, + :type, + :created_on, + :entry, + :source_token, + :destination_token, + :amount, + :fee, + :currency, + :details + + + def show(token: nil) + token ||= @token + connector.get(resource: ENDPOINT + "/" + token + "/" + method_endpoint) + handle_response + end + + private + + def method_endpoint + 'receipts' + end + end + end +end \ No newline at end of file diff --git a/lib/hyperwallet/resources/transfer_method.rb b/lib/hyperwallet/resources/transfer_method.rb index c35489d..68c7bf9 100644 --- a/lib/hyperwallet/resources/transfer_method.rb +++ b/lib/hyperwallet/resources/transfer_method.rb @@ -45,7 +45,7 @@ def index(user_token:) def create(user_token, data) response = connector.post(resource: resource_endpoint(token: user_token), - payload: prepare_payload(payload_attributes: data).to_json) + payload: JSON.generate(prepare_payload(payload_attributes: data))) instantiate_from_data(response) end diff --git a/lib/hyperwallet/version.rb b/lib/hyperwallet/version.rb index accc71c..a4776e8 100644 --- a/lib/hyperwallet/version.rb +++ b/lib/hyperwallet/version.rb @@ -1,3 +1,3 @@ module Hyperwallet - VERSION = "0.1.0" + VERSION = "0.1.1" end